Programación Web y Scripting > PHP
Select que recorra varias filas.
Gaug:
Hola.
Tengo un ciclo 'for' en mi página que toma valores de mi BD e imprime categorías y subcategorías, lo más seguro es que no me explique, así que pondé un ejemplo de mi BD y un ejemplo de como quiero que aparezca en la página.
Así está más o menos mi BD:
[php:2bvfd1db] Tabla: tabla1 Continentes Países Ciudades (campos) América México D.F. (valores)América Estados Unidos WashingtonEuropa España MadridEuropa Inglaterra LiverpoolÁfrica Egipto El CairoAsia Japón Hong Kong.Asia China BeijingOceanía Australia Sydney.Europa Francia Paris [/php:2bvfd1db]
Y en la página como les repito, es un ciclo for, me gustaría hacer un 'SELECT' de alguna manera para que en la página ya apareciera algo así:
América -> México -> D.F.
Europa -> Inglaterra -> Liverpool
etc.
Así como en la base de datos, pero por orden, yo intenté pero sólo me toma un valor no todos, sino me explico díganme y seré más detallado.
Digamos que primero se hace una consulta para ver el total de lineas que se van a tomar en cuenta con ésto:
[php:2bvfd1db] $query = "select llave FROM tabla1 WHERE llave = '".$llave."'";$result = mysql_query($query);$activ_rows = mysql_num_rows($result); [/php:2bvfd1db]
Y luego el ciclo 'for':
[php:2bvfd1db] for($filas=0;$filas+1<=$activ_rows;$filas++){Aquí iria lo de "América -> México -> D.F.", etc.} [/php:2bvfd1db]
Me faltó agregar al ejemplo de mi BD que lleva una llave, para separar, aunque en el ejemplo que les mostré arriba todos llevan la misma llave, así que no importa.
Espero puedan ayudarme, se los agradezco de antemano.
Saludos.
RadicalEd:
Para eso debes hacer una consulta multiple y que tus tablas estén relacionadas, algo así:
--- Código: SQL ---SELECT con.nombre, pais.nombre, ciu.nombreFROM continentes AS con, paises AS pais, ciudades AS ciuWHERE ciu.id_pais = pais.idAND pais.id_conti = con.id Y te dejo las tablas que creé para la prueba
--- Código: SQL ---CREATE TABLE IF NOT EXISTS `continentes` ( `id` INT(2) NOT NULL AUTO_INCREMENT, `nombre` VARCHAR(10) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; INSERT INTO `continentes` (`id`, `nombre`) VALUES(1, 'Africa'),(2, 'America'),(3, 'Asia'),(4, 'Europa'),(5, 'Oceania'); CREATE TABLE IF NOT EXISTS `paises` ( `id` INT(2) NOT NULL AUTO_INCREMENT, `id_conti` INT(2) NOT NULL, `nombre` VARCHAR(10) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ; INSERT INTO `paises` (`id`, `id_conti`, `nombre`) VALUES(1, 1, 'Angola'),(2, 1, 'Botswana'),(3, 2, 'Colombia'),(4, 2, 'Argentina'),(5, 3, 'Japon'),(6, 3, 'China'),(7, 4, 'Francia'),(8, 4, 'Alemania'),(9, 5, 'Australia'),(10, 5, 'Vanuatu'); CREATE TABLE IF NOT EXISTS `ciudades` ( `id` INT(2) NOT NULL AUTO_INCREMENT, `id_conti` INT(2) NOT NULL, `id_pais` INT(2) NOT NULL, `nombre` VARCHAR(10) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ; INSERT INTO `ciudades` (`id`, `id_conti`, `id_pais`, `nombre`) VALUES(1, 1, 1, 'Benguela'),(2, 1, 1, 'Cabinda'),(3, 1, 2, 'Gaborone'),(4, 1, 2, 'Jwaneng'),(5, 2, 3, 'Cali'),(6, 2, 3, 'Bogota'),(7, 2, 4, 'Mar del Pl'),(8, 2, 4, 'Buenos Air'),(9, 3, 5, 'Sapporo'),(10, 3, 5, 'Osaka'),(11, 3, 6, 'Baotou'),(12, 3, 6, 'Beijing'),(13, 4, 7, 'Paris'),(14, 4, 7, 'Bobigni'),(15, 4, 8, 'Frankfurt'),(16, 4, 8, 'Aachen'),(17, 5, 9, 'Sidney'),(18, 5, 9, 'Tasmania'),(19, 5, 10, 'Port Villa'),(20, 5, 10, 'Ambae Isla');
Gaug:
Muchas gracias Edo, en PHPMYADMIN funciona perfecto, pero quiero ejecutar eso en mi página php, el problema más bien radicaría en incluir eso en el ciclo, o en su defecto quitar el ciclo y hacer las consultas con 'do while', pero también estoy confundido en sobre como hacer las consultas, estaba pensando en algo así, míralo y dime que piensas:
--- Código: PHP --- $query_Recordsetcont= "CONSULTA CONTINENTE"; $Recordsetcont = mysql_query($query_Recordsetcont, $conex) or die(mysql_error());$row_Recordsetcont = mysql_fetch_assoc($Recordsetcont);do{$id_continente=$row_Recordsetcont['id_continente'];$continente=$row_Recordsetcont['continente']; $query_Recordsetpais= "CONSULTA PAIS "; $Recordsetpais = mysql_query($query_Recordsetpais, $conex) or die(mysql_error());$row_Recordsetpais = mysql_fetch_assoc($Recordsetpais);do{$id_pais=$row_Recordsetpais['id_pais'];$pais=$row_Recordsetpais['pais']; $query_Recordset= "CONSULTA CIUDAD"; $Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());$row_Recordset = mysql_fetch_assoc($Recordset);do{$ciudad=$row_Recordset['ciudad']; ////Aquí se imprimen/// }while($row_Recordset= mysql_fetch_assoc($Recordset));}while($row_Recordsetpais= mysql_fetch_assoc($Recordsetpais));}while($row_Recordsetcont= mysql_fetch_assoc($Recordsetcont));
Además, quisiera que la consulta fuera con todos, osea los continentes, paises y ciudades dentro de la misma tabla, no importa si usas un 'id' para identificarlos o ya sea el nombre, es lo de menos en realidad, lo que me importa es la consulta y que se impriman, en realidad lo que yo tengo planeado con esto, es que se impriman de acuerdo al número de ciudades, si en total son 10 ciudades, pues que todo se imprima 10 veces, ¿me explico?
Saludos.
RadicalEd:
La consulta que te hicé te mola en el PHP, solamente debes recoger el array que te suelta el query e imprimirlo después, solo tienes que usar para recorrer ese array.
Gaug:
Es que ya tengo esos datos dentro de 1 tabla, y en realidad no estoy usando nombres para continentes y paises, estoy usando 'ids' y pues para la ciudad estoy usando el nombre, podrías ayudarme con la/las consulta/s, y con un ejemplo, es que no me queda muy claro lo que me quieres decir del array.
De nuevo, gracias por tu ayuda.
Navegación
[#] Página Siguiente
Ir a la versión completa