Buenas a todos,
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:
<!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>");
Este es un archivo llamado busquedas.php
Código:
<?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>
Me he dado cuenta de que ese "7" que aparece en el error es el valor de la variable $rows_per_page
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 :)