Hola,
estoy diseñando una página en la que hay una serie de botones (ya sabéis: "<input type:submit...") y cada uno de estos botones recupera una tabla en mysql, mediante un script en php.
Para recuperar cada tabla he utilizado en el script este código:
Código:
$table = $_POST['categoria']
En principio funciona, pues cuando pulso el botón me aparece la tabla que quiero, pero ahora bien, en el script php también hay un sistema de paginación, para que no me aparezcan todos los datos de la tabla en la misma página, sino que en cada página me aparezcan un número determinado, y pueda ir avanzando dándole a siguiente. Hasta ahora, este sistema de paginación me ha funcionado, porque he estado haciendo las pruebas siempre con la misma tabla (es decir, antes la variable $table siempre era: "$table ="Documentación"), pero claro cuando he cambiado eso por el código para que recupere la tabla según el botón que yo pulse, el sistema de paginación ha dejado de funcionar, supongo que porque cuando pulso por ejemplo "Siguiente", la variable $table pasa a estar no definida.
Por tanto, lo que busco es que la variable $table se quede definida, hasta que pulse otro botón (porque decida cambiar de tabla).
Aquí tenéis el código del script php completo:
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>
<link rel="stylesheet" type="text/css" href="estilos/tabla.css" />
</head>
<?php
function display_db_query($page, $query_limit, $connection, $sort, $table, $pageno, $order_by, $row_number, $rows_per_page, $lastpage, $numrows) {
$result_id= mysql_query($query_limit, $connection) or die("display_db_query:" . mysql_error());
$column_count = mysql_num_fields($result_id) or die("display_db_query:" . mysql_error());
if ($order_by == 'h_index') {
$order_by_clean = 'Índice h';
} elseif ($order_by == 'g_index') {
$order_by_clean = 'Índice g';
} else {
$order_by_clean = $order_by;
}
if ($sort == 'desc') {
$sort_clean = 'descendentemente';
} else {
$sort_clean = 'ascendentemente';
}
print("<span style='font-size:15px;'>Categoría seleccionada: <strong>$table</strong>.</span>\n");
print("<div id=tabladatos><TABLE \n");
// Print Headers
print("<TR>");
for($column_num = 0; $column_num < $column_count; $column_num++) {
$field_name = mysql_field_name($result_id, $column_num);
// Para cambiar los nombres de los campos h_index y g_index por 'Índice h' e 'Índice g'
if ($field_name == 'h_index') {
$field_name_clean = 'Índice h';
} elseif ($field_name == 'g_index') {
$field_name_clean = 'Índice g';
} else {
$field_name_clean = $field_name;
}
if ($field_name == 'ISSN') {
print("<TH "."style='color:white'>Posición</TH>");
}
echo ("<TH><a href=\"$page?order_by=$field_name&sorting=$sort&pageno=$pageno\" class=\"$field_name\" title='Ordenar por $field_name_clean.'>$field_name_clean <img style='margin-bottom:-1px;' src='estilos/sort.png'/></a></TH>");
}
print("</TR>\n");
// Print the body
$row_number = $pageno * $rows_per_page - ($rows_per_page - 1);
$lastpage_rest = $rows_per_page - (($lastpage * $rows_per_page) - $numrows);
if ($sort == 'asc') {
$row_number = ($lastpage - $pageno) * $rows_per_page + $lastpage_rest;
}
while($row = mysql_fetch_row($result_id)) {
print("<TR>");
for($column_num = 0; $column_num < $column_count; $column_num++) {
// Para saber si la fila es par o impar, y así poder darle diferente estilo a cada una.
$resto = $row_number%2;
if ($resto == 0){
$zebra = 'par';
} else {
$zebra = 'impar';
}
if($order_by == 'ISSN') {
if ($column_num == 0) {
print("<TD id='$zebra'>$row_number</TD>\n");
print("<TD class='field_$column_num' id='$order_by'>$row[$column_num]</TD>\n");
} else {
print("<TD class='field_$column_num' id='$zebra'>$row[$column_num]</TD>\n");
}
} elseif($order_by == 'Revista') {
if ($column_num == 1) {
print("<TD class='field_$column_num' id='$order_by'>$row[$column_num]</TD>\n");
} else {
if ($column_num == 0) {
print("<TD id='$zebra'>$row_number</TD>\n");
print("<TD class='field_$column_num' id='$zebra'>$row[$column_num]</TD>\n");
} else {
print("<TD class='field_$column_num' id='$zebra'>$row[$column_num]</TD>\n");
}
}
} elseif($order_by == 'h_index') {
if ($column_num == 2) {
print("<TD class='field_$column_num' id='$order_by'>$row[$column_num]</TD>\n");
} else {
if ($column_num == 0) {
print("<TD id='$zebra'>$row_number</TD>\n");
print("<TD class='field_$column_num' id='$zebra'>$row[$column_num]</TD>\n");
} else {
print("<TD class='field_$column_num' id='$zebra'>$row[$column_num]</TD>\n");
}
}
} elseif($order_by == 'g_index') {
if ($column_num == 3) {
print("<TD class='field_$column_num' id='$order_by'>$row[$column_num]</TD>\n");
} else {
if ($column_num == 0) {
print("<TD id='$zebra'>$row_number</TD>\n");
print("<TD class='field_$column_num' id='$zebra'>$row[$column_num]</TD>\n");
} else {
print("<TD class='field_$column_num' id='$zebra'>$row[$column_num]</TD>\n");
}
}
} else {
print("<TD class='field_$column_num' id='$zebra'>$row[$column_num]</TD>\n");
}
}
print("</TR>\n");
if ($sort == 'asc') {
$row_number--;
} else {
$row_number++;
}
}
print("</TABLE></div>\n");
}
function display_db_table($page, $tablename, $connection) {
$order_by = (isset($_GET['order_by'])) ? $_GET['order_by'] : 'h_index';
$sorting = (isset($_GET['sorting'])) ? $_GET['sorting'] : 'asc';
switch($sorting){
case "asc":
$sort = 'desc';
break;
case "desc":
$sort = 'asc';
break;
}
// PAGINACION
$table= $_POST['categoria'] or die ("<p>Seleccione una categoría</p><br>");
if (isset($_GET['pageno'])) {
$pageno = $_GET['pageno'];
} else {
$pageno = 1;
} // if
$query_count = "SELECT count(*) FROM $table";
$result = mysql_query($query_count, $connection) or trigger_error("SQL", E_USER_ERROR);
$query_data = mysql_fetch_row($result);
$numrows = $query_data[0];
$rows_per_page = 15;
$lastpage = ceil($numrows/$rows_per_page);
$pageno = (int)$pageno;
if ($pageno > $lastpage) {
$pageno = $lastpage;
} // if
if ($pageno < 1) {
$pageno = 1;
} // if
$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page;
$revista_de = ($pageno - 1) * $rows_per_page + 1;
$revista_a = ($pageno - 1) * $rows_per_page + $rows_per_page;
$total_revistas = $numrows;
if ($revista_a > $total_revistas) {
$revista_a = $total_revistas;
}
$mostrando = "Revistas " .$revista_de ." a " .$revista_a ." de " .$total_revistas;
$query_string = "SELECT * FROM $tablename ORDER BY $order_by"." $sort $limit";
display_db_query($page, $query_string, $connection, $sort, $table, $pageno, $order_by, $mostrando, $rows_per_page, $lastpage, $numrows);
print("<div id='paginacion'>\n");
if ($pageno == 1) {
echo " << Primera | < Anterior |";
} else {
if ($sort == 'asc') {
$invertsort = 'desc';
} else {
$invertsort = 'asc';
}
$fpage="{$_SERVER['PHP_SELF']}?pageno=1"."&order_by=$order_by"."&sorting=$invertsort";
echo " <a href=$fpage><< Primera</a> |";
$prevpage = $pageno-1;
$ppage="{$_SERVER['PHP_SELF']}?pageno=$prevpage"."&order_by=$order_by"."&sorting=$invertsort";
echo " <a href=$ppage>< Anterior</a> |";
} // if
if ($pageno == $lastpage) {
echo " Siguiente > | Última >> |";
} else {
$nextpage = $pageno+1;
if ($sort == 'asc') {
$invertsort = 'desc';
} else {
$invertsort = 'asc';
}
$npage="{$_SERVER['PHP_SELF']}?pageno=$nextpage"."&order_by=$order_by"."&sorting=$invertsort";
echo " <a href=$npage>Siguiente ></a> | ";
$lpage="{$_SERVER['PHP_SELF']}?pageno=$lastpage"."&order_by=$order_by"."&sorting=$invertsort";
echo " <a href=$lpage>Última >></a> |";
} // if
echo " $mostrando";
print("</div>\n");
}
?>
<body>
<?php
//Connection
$global_dbh = mysql_connect('localhost','inrecs_user','inrecs') or die("Unable to connect: " . mysql_error() . "<br>");
$database = mysql_select_db("inrecs_s") or die( "Unable to select database<br>");
/*$table = "documentación" or die( "Selecciona una categoría<br>");*/
$table = $_POST['categoria'] or die ("<p>Seleccione una categoría</p><br>");
$page = 'inrecs_s.php';
display_db_table($page, $table, $global_dbh, FALSE, "border='1'");
?>
</div>
</body>
</html>
Muchas gracias por vuestra ayuda por adelantado :)