Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/09/2011, 10:15
surferpoint9819
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 12 años, 8 meses
Puntos: 0
código para ordenar las tablas por la columna seleccionada

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">&laquo; 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 &raquo;</a></li><?
    }else{?>
      <li class="next-off">Next &raquo;</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;?>"  >&laquo; 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 &raquo;</a></li><?
      }else{
    ?> <li class="next-off">Next &raquo;</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 :)