Tengo un php que presenta datos de una bd en mysql, y he estado intentando añadirle un código para hacer que se puedan ordenar las columnas ascendente y descendentemente, pero al ejecutarlo me dice que la consulta es inválida:
"Invalid query: Undeclared variable: 7ORDER"
Aquí está el todo el código:
Este es un archivo llamado tabla.php
Código:
Este es un archivo llamado busquedas.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 .org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3 .org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title></title> </head> <body> <p><?php //Connection $GLOBALS['DB_IP'] = 'localhost'; $GLOBALS['DB_USER'] = 'root'; $GLOBALS['DB_PASS'] = '3456'; $GLOBALS['DB_NAME'] = 'prueba'; $GLOBALS['DB_TBL'] = 'hoja1'; $conn = mysql_connect($GLOBALS['DB_IP'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASS']) or die("Unable to connect: " . mysql_error() . "<br>"); $database = mysql_select_db($GLOBALS['DB_NAME']) or die( "Unable to select database<br>");
Código:
Me he dado cuenta de que ese "7" que aparece en el error es el valor de la variable $rows_per_page<?php //INCLUYO LA HOJA DE ESTILOS ?> <link href="css/paginacion.css" type="text/css" rel="stylesheet"> <? include('tabla.php'); //AL PRINCIPIO COMPRUEBO SI HICIERON CLICK EN ALGUNA PÁGINA if(isset($_GET['page'])){ $page= $_GET['page']; }else{ //SI NO DIGO Q ES LA PRIMERA PÁGINA $page=1; } //ACA SE SELECCIONAN TODOS LOS DATOS DE LA TABLA $consulta="SELECT * FROM ".$GLOBALS['DB_TBL']; $datos=mysql_query($consulta,$conn); //MIRO CUANTOS DATOS FUERON DEVUELTOS $num_rows=mysql_num_rows($datos); //ACA SE DECIDE CUANTOS RESULTADOS MOSTRAR POR PÁGINA , EN EL EJEMPLO PONGO 15 $rows_per_page= 7; //CALCULO LA ULTIMA PÁGINA $lastpage= ceil($num_rows / $rows_per_page); //COMPRUEBO QUE EL VALOR DE LA PÁGINA SEA CORRECTO Y SI ES LA ULTIMA PÁGINA $page=(int)$page; if($page > $lastpage){ $page= $lastpage; } if($page < 1){ $page=1; } //PARA ORDENAR LAS COLUMNAS $order_by = (isset($_GET['order_by'])) ? $_GET['order_by'] : 'Title'; $sorting = (isset($_GET['sorting'])) ? $_GET['sorting'] : 'desc'; switch($sorting){ case "asc": $sort = 'desc'; break; case "desc": $sort = 'asc'; break; } //CREO LA SENTENCIA LIMIT PARA AÑADIR A LA CONSULTA QUE DEFINITIVA $limit= 'SELECT * FROM '.$GLOBALS['DB_TBL'].' LIMIT '. ($page -1) * $rows_per_page . ',' .$rows_per_page .'ORDER BY '.$order_by.' $sort'; //REALIZO LA CONSULTA QUE VA A MOSTRAR LOS DATOS (ES LA ANTERIO + EL $limit) $consulta = $limit; $resultados=mysql_query($consulta); if(!$resultados){ //SI FALLA LA CONSULTA MUESTRO ERROR die('Invalid query: ' . mysql_error()); }else{ //SI ES CORRECTA MUESTRO LOS DATOS ?> <p align=left><? echo $num_rows; ?> resultados.</p> <table border=1> <? $pagename="tabla"; print("<TR>"); for($column_num = 0; $column_num < $column_count; $column_num++) { $field_name = mysql_field_name($resultados, $column_num); echo ("<TH><a href=\"$pagename.php?order_by=$field_name&sorting=$sort\">$field_name</a></TH>"); } ?> <tbody> <? while($row = mysql_fetch_array($resultados)){ ?> <tr><td><? echo $row['0']; ?> </td><td> <? echo "<img src="."flags/".$row[1].".png title=$row[1] alt=$row[1]>"; ?> </td><td> <? echo $row['2']; ?> </td><td> <? echo $row['3']; ?> </td><td> <? echo $row['4']; ?> </td><td> <? echo $row['5']; ?> </td><td> <? echo $row['6']; ?> </td></tr> <? } ?> </tbody> </table> <? ?> <? //UNA VEZ Q MUESTRO LOS DATOS TENGO Q MOSTRAR EL BLOQUE DE PAGINACIÓN SIEMPRE Y CUANDO HAYA MÁS DE UNA PÁGINA if($num_rows != 0){ $nextpage= $page +1; $prevpage= $page -1; ?><ul id="pagination-flickr"><? //SI ES LA PRIMERA PÁGINA DESHABILITO EL BOTON DE PREVIOUS, MUESTRO EL 1 COMO ACTIVO Y MUESTRO EL RESTO DE PÁGINAS if ($page == 1) { ?> <li class="previous-off">« Previous</li> <li class="active">1</li> <? for($i= $page+1; $i<= $lastpage ; $i++){?> <li><a href="busquedas.php?page=<? echo $i;?>"><? echo $i;?></a></li> <? } //Y SI LA ULTIMA PÁGINA ES MAYOR QUE LA ACTUAL MUESTRO EL BOTON NEXT O LO DESHABILITO if($lastpage >$page ){?> <li class="next"><a href="busquedas.php?page=<? echo $nextpage;?>" >Next »</a></li><? }else{?> <li class="next-off">Next »</li> <? } } else { //EN CAMBIO SI NO ESTAMOS EN LA PÁGINA UNO HABILITO EL BOTON DE PREVIUS Y MUESTRO LAS DEMÁS ?> <li class="previous"><a href="busquedas.php?page=<? echo $prevpage;?>" >« Previous</a></li><? for($i= 1; $i<= $lastpage ; $i++){ //COMPRUEBO SI ES LA PÁGINA ACTIVA O NO if($page == $i){ ?> <li class="active"><? echo $i;?></li><? }else{ ?> <li><a href="busquedas.php?page=<? echo $i;?>" ><? echo $i;?></a></li><? } } //SI NO ES LA ÚLTIMA PÁGINA ACTIVO EL BOTON NEXT if($lastpage >$page ){ ?> <li class="next"><a href="busquedas.php?page=<? echo $nextpage;?>">Next »</a></li><? }else{ ?> <li class="next-off">Next »</li><? } } } } ?></ul></div>
Tal vez alguno de vosotros podrá decirme en qué me estoy equivocando. Hace poco que utilizo php y todavía estoy bastante verde.
Muchas gracias :)