Foros del Web » Programando para Internet » PHP »

Problema para mostrar registros con distintas tablas

Estas en el tema de Problema para mostrar registros con distintas tablas en el foro de PHP en Foros del Web. Que tal....bueno mi problema es que al querer mostrar los resultados de distintas tablas no lo hace....tengo una pagina un select de la "a hasta ...
  #1 (permalink)  
Antiguo 30/04/2005, 16:08
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
Problema para mostrar registros con distintas tablas

Que tal....bueno mi problema es que al querer mostrar los resultados de distintas tablas no lo hace....tengo una pagina un select de la "a hasta la z" los cual al seleccionar alguna option debe mostrar los registro paginados pero no lo hace...el error que me tira es el siguiente :

"You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY artista LIMIT 0,5' at line 1"

Espero que me puedan ayudar....gracias.

Código PHP:
<?
$base
="listado";
$array_tablas["tabla1"] = "a"
$array_tablas["tabla2"] = "b"

$con=mysql_connect('localhost','root','');
mysql_select_db($base,$con);

if (!isset(
$_GET['pg'])) 
$pg 0// $pg es la pagina actual 
else $pg$_GET['pg']; // si existe lo tomamos 

$cantidad=5// cantidad de resultados por página 
$inicial $pg $cantidad;
$pegar "Select * from ".$array_tablas[$_POST['tabla']]." ORDER BY artista LIMIT $inicial,$cantidad";

$cad mysql_db_query($base,$pegar) or die (mysql_error());

$contar "SELECT * FROM ".$array_tablas[$_POST['tabla']]." ORDER BY artista"
$contarokmysql_db_query($base,$contar);
$total_records mysql_num_rows($contarok);
$pages intval($total_records $cantidad);


// Imprimiendo los resultados
echo "<table aling='left'>";
echo 
"<tr>
<td bgcolor='#ffcc33'><font face='Arial' color='#0000cc' size=2><b>Nombre Banda</font></td>
<td bgcolor='#ffcc33'><font face='Arial' color='#0000cc' size=2><b>Nombre Disco</font></td>
<td bgcolor='#ffcc33'><font face='Arial' color='#0000cc' size=2><b>Nacionalidad</font></td>
<td bgcolor='#ffcc33'><font face='Arial' color='#0000cc' size=2><b>Año Lanzamiento</font></td>

</tr>"
;
while(
$array mysql_fetch_array($cad)) {

if (
$colorfila==0){
$color"#DEDEBE";
$colorfila=1;
}else{
$color="#F0F0F0";
$colorfila=0;
}


echo 
"<tr>
<td bgcolor='"
.$color."'>".$array['artista']."</td>
<td bgcolor='"
.$color."'>".$array['nombre_disco']."</td>
<td bgcolor='"
.$color."'>".$array['nacionalidad']."</td>
<td bgcolor='"
.$color."'>".$array['año']."</td>
</tr>"
;


echo 
"</table>";

// Cerramos la conexión a la base
$con=mysql_close($con);

// Creando los enlaces de paginación
echo "<p class=fonty>"
if (
$pg != 0) { 
$url $pg 1
echo 
"<a href='".$_SERVER['PHP_SELF']."?pg=".$url."'>&laquo; Anterior</a>&nbsp;";
} else { 
echo 
" "

for (
$i 0$i <= $pages$i++) { 
if (
$i == $pg) { 
if (
$i == "0") { 
echo 
"<b> 1 </b>"
} else { 
$i $i+1
echo 
"<b> ".$i." </b>"

} else { 
if (
$i == "0") { 
echo 
"<a href='".$_SERVER['PHP_SELF']."?pg=".$i."'>1</a> "
} else { 
echo 
"<a href='".$_SERVER['PHP_SELF']."?pg=".$i."'>"
$i $i+1
echo 
$i."</a>&nbsp;"



if (
$pg $pages) { 
$url $pg 1
echo 
"<a href='".$_SERVER['PHP_SELF']."?pg=".$url."'>Siguiente &raquo;</a>";
} else { 
echo 
" "

echo 
"</p>"
?>
  #2 (permalink)  
Antiguo 30/04/2005, 21:40
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Hola:
No utilices mysql_db_query() porque ya está quedando en desuso. Aunque eso no debería ser el motivo del error.
Es raro que no te muestre más detalles del error cuando tienes la función mysql_error(). Prueba esto así:
Código PHP:
$cad mysql_query($pegar) or die ("Error en consulta <b>$pegar</b> ::".mysql_error()); 
La idea es que te muestre el SQL que está usando para que veas si se ha generado correctamente.

Saludos
  #3 (permalink)  
Antiguo 30/04/2005, 21:48
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Lo que no se ve es en qué momento utilizas la letra seleccionada (o así se llaman las tablas? : a, b, c...)

Saludos
  #4 (permalink)  
Antiguo 01/05/2005, 12:29
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
claro asi se llaman las tablas de la "a hasta la z"...es que en otra pagina tengo una lista de la a a la z entonces el user puede elegir que letra ver los discos entonces se me fue mas factible dividir las tablas por letras....que creen uds??? es mas factible asi o deberia ser buscando todas las palabras que empiezen con la letra selccionada usando el "like" en mi sql
  #5 (permalink)  
Antiguo 01/05/2005, 12:47
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
yo usaría una sola tabla para meter todas las letras, al fin y al cabo todas esas tablas tienen los mismos campos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #6 (permalink)  
Antiguo 01/05/2005, 15:13
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Claro jahman, finalmente para eso es el SQL ¿no?
Deberías tener todo en una sola tabla y hacer búsquedas por un campo específico utilizando la cláusula "LIKE". (WHERE campo LIKE '$letra%').
Y que los resultados para cada letra salgan paginados. (Para eso deberás propagar la variable que contiene esa letra.. si no, la paginación no funcionará).

Saludos
  #7 (permalink)  
Antiguo 01/05/2005, 18:38
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
una pregunta man y la variable letra la rescato del la lista que tengo

<select name="tabla">
<option selected><-- Seleccione -->
<option name="a">A </option>
<option name="a">B </option>

y como lo hago para generar la consulta en el sql?
tendria que ser algo mas omenos asi...

Select * from ".$_POST['letra']." ORDER BY artista LIMIT $inicial,$cantidad
  #8 (permalink)  
Antiguo 01/05/2005, 19:33
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Eso si sigues teniendo una tabla para cada letra (cosa no recomendable).
Pero funcionará sólo con la primera página. Pues al ir a la página 2 esa variable $_POST['letra'] no existirá porque ya no vienes de un formulario sino de un enlace.

A eso es a lo que me refiero con propagación de variables. Tienes que ver la manera de que esa variable (con la letra seleccionada) llegue también a las otras páginas.
Vuelvo a recomendarte que le des una mirada al código de Paginator que ya hace todo eso además de ser muy sencillo (es casi igual a lo que haces tú pero acomomodado de tal manera que sea más sencillo de utilizar).

Pero, insisto, mejor es que tengas una sola tabla con un campo que defina esa letra y no ¿27?... ¿29? tablas (Wow).

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:10.