Foros del Web » Programando para Internet » PHP »

Buscar Tablas en BD

Estas en el tema de Buscar Tablas en BD en el foro de PHP en Foros del Web. Hola, tengo una duda, tengo unas listas separadas por años, de una prueba deportiva, los datos son: Posicion, Nombre, Pueblo, Tiempo... y en casi todas ...
  #1 (permalink)  
Antiguo 17/10/2003, 20:28
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta Buscar Tablas en BD

Hola, tengo una duda, tengo unas listas separadas por años, de una prueba deportiva, los datos son: Posicion, Nombre, Pueblo, Tiempo... y en casi todas las listas se repiten los participantes, yo e creado una BD en la que e creado una tabla para cada año: 1970,1971... etc. y en cada tabla e introducido los campos Posicion, Nombre... etc. Y ahora me encuentro que no se como hacer una busqueda en toda la BD. Y no solo en una tabla, que es lo que se hacer, y tambien para poder crear un <Select Name de todos los años automaticamente, yo e echo esto:--->
<?
print ("<form action=busqueda.php method=get>\n");
print ("<P>Cognom de participant:\n");
print ("<input type=text name=criterio size=22 maxlength=150>\n");

//Menu desplegable anys
print ("<P>Selecciona un any:\n");
print ("<SELECT NAME=any>\n");
print ("<OPTION SELECTED VALUE=$any>$any</OPTION>\n");
$year=1980;
$endyear=2003;
while ($year <= $endyear)
{
print ("<OPTION VALUE=$year>$year</OPTION>\n");

$year++;

}
print("<input type=submit value=Buscar>\n");
print ("</form>\n");
?>

-->pero de esta manera, cada vez que entre un año nuebo a la BD tendre que modificar el $endyear.

- Lo que estoy dudando es si crear una tabla para cada año es correcto o hay alguna manera mejor de hacerlo. ¿seria mejor meterlos todos en la misma tabla? ¿no tendría problemas con los participantes que aparecen en más de 1 año?
Espero consejos, saludos.
  #2 (permalink)  
Antiguo 17/10/2003, 20:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No, una tabla para cada año no sería lo correcto .. (y ya ves la de problemas que te está dando para hacer un simple buscador o "filtro" por años ..)

Usa un campo en tu tabla ´que sea ese dato .. la fecha (año si quieres sólo) ..

ejemplo:
Posicion
Nombre
Pueblo
Tiempo... <-- Esto es el año? ..
any (año)

y ahí cuando quieras ver un año en concreto .. haces un SELECT condicional ..

SELECT * FROM tabla WHERE any='$any'


Y para representar ese select HTML (con sus option) de sólo los años que tengas en tu BD .. la consulta SQL debería ser algo así:

SELECT DISTINCT any FORM tabla

Y el consiguiente:

Código PHP:
// conectas a tu BD .. seleccionas la BD .. etc
$sql="SELECT DISTINCT any FORM tabla";
mysql_query($sql) or die (mysql_error());

echo 
"<SELECT name=\"".any."\">";
while (
$registro=mysql_fetch_array($consulta)){
echo 
"<OPTION VALUE=\"".$registro['any']."\">".$registro['any']."</OPTION>\n";
}
echo 
"</SELECT>"
Eso sería la base..

DISTINCT en la sentencia SQL significa "distintos" .. así que si tienes X regitros del año 1991 .. sólo se tomará uno .. y así con todos los que pudieras tener (incluido .. ejemplo si borrases un año completo la consulta sólo arrojará los que existan y sean distintos entre si). Mas info: www.mysql.com

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 17/10/2003 a las 20:49
  #3 (permalink)  
Antiguo 17/10/2003, 21:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 20 años, 6 meses
Puntos: 0
Judeeerr que rapido has contestado! Mil gracias tiu.
són las 4:21 O_O me echo "<un rato a la cama, y mañana pruebo todo lo que me has dicho">
Saludus.
  #4 (permalink)  
Antiguo 18/10/2003, 05:06
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 20 años, 6 meses
Puntos: 0
Bueno ya tengo todos los datos entrados en una tabla.
Cluster, lo de <Select Name va perfecto, reconoce todos los años y crea la lista automaticamente, muchas gracias tiu.

Código PHP:
mysql_connect("localhost","root");
$sql="SELECT DISTINCT any FROM tabla.prueba";
$consulta=mysql_query($sql) or die (mysql_error());
echo 
"<SELECT name=\"".any."\">";
while (
$registro=mysql_fetch_array($consulta))
{
echo 
"<OPTION VALUE=\"".$registro['any']."\">".$registro['any']."</OPTION>\n";
}
echo 
"</SELECT>"
Lo que no tengo tan claro es como usar el: SELECT * FROM tabla WHERE any='$any' mezclado con este tutorial para paginar que estoy siguiendo:http://www.desarrolloweb.com/articulos/1248.php
Saludos.

Última edición por Yukas; 18/10/2003 a las 11:10
  #5 (permalink)  
Antiguo 18/10/2003, 11:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. no he visto ese tutorial .. pero, acuerdate de que tienes una variable $any que debes propagar en los links que se deben generar para hacer tu paginado .. (propagar = añadir en cada link que se ha de generar como una vairble más: pagina=$pag&any=$any ...)

Sino, perderás tu "año" por el camino al pasar de página .. por eso debes "propagarlo" ...

Y . en las consultas SQL que use ..

SELECT * FROM tabla LIMIT ?,? .. añade tu WHERE (tu condicional) ..

SELECT * FROM tabla WHERE any='$any' LIMIT ?,?
(y también en la que se use para obtener el total de registros que entrega la consulta como para calcular el nº de páginas o los "topes" un "siguiente/anterior pag")

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 01:32.