Foros del Web » Programando para Internet » PHP »

While dentro de while consulta sql problema avanzando de fila

Estas en el tema de While dentro de while consulta sql problema avanzando de fila en el foro de PHP en Foros del Web. Tengo un problema con una consulta. Necesito sacar todas las filas que comportan el miso valor en 1 de los campos (eso lo hago con ...
  #1 (permalink)  
Antiguo 13/04/2011, 09:02
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 2 meses
Puntos: 0
While dentro de while consulta sql problema avanzando de fila

Tengo un problema con una consulta.

Necesito sacar todas las filas que comportan el miso valor en 1 de los campos (eso lo hago con like) y luego dentro de todos esos, ir sacandolos por orden (son provincias, asi que primero, todos los de malaga, luego todos los de granada, etc). El problema es que nose con antelacion los valores que habra, es decir, que debe poder introducirse previamente ai el nombre de provincia que se quiera, sin que sean 5 entre las que elegir, o algo asi. Y tengo que ir escribiendo primero la provincincia que es, y luego todas las filas que hay de esa provincia. Nose si me explico muy bien. algo asi:

Granada:
Fila 1
Fila 2
Fila 3

Sevillla:

Fila1
Fila2

etc...

La cosa es que los titulares "granada, sevilla" tendrian que escribirse automaticamente y nose muy bien como hacerlo, no tengo mucho conocimiento de php y sql, a ver si me podeis hechar una manita.

El codigo que tengo por ahora es algo asi:

<?php


$consulta1 = "SELECT * FROM casas WHERE destacada LIKE 'NO%' ORDER BY provincia DESC";

$resultado1=mysql_query($consulta1) or die ("error:".mysql_error());

while ($fila1=mysql_fetch_array ($resultado1)){

$like = $fila1['provincia'];

echo "<h1>".$fila1['provincia']."</h1>"; //Escribe el nombre de provincia bajo el que iran las filas

$consulta2 = "SELECT * FROM casas WHERE provincia LIKE '".$like."' AND destacada LIKE '%NO%'";

//echo $consulta2;

$resultado2=mysql_query($consulta2) or die ("error:".mysql_error());

while ($fila2=mysql_fetch_array ($resultado2)){

?>


<?php echo $fila2['zona']; ?></p>


<img class="imgpekena" src="<?php echo $fila1['imgp']; ?><br />

<?php echo $fila2['titulo']; ?><br />
Localizaci&oacute;n: <?php echo $fila2['localizacion']; ?><br />
R&eacute;gimen: <?php echo $fila2['regimen']; ?><br />
Precio: <?php echo $fila2['precio']; ?><br />


<br />


<?php

}
}
?>

El problema es que si tengo mas de 1 fila de la misma provincia, se repite el enunciado y luego otra vez todas las filas correspondientes, debido a que el while que esta dentro del while avanza de fila, pero el otro no lo hace.
He pensado que quizas la solución sera contar cuantas vueltas da el 2º while e indicarle al primero de alguna manera que base ese numero de filas para que no suceda la repeticion, pero nose si es posible hacer eso, o si directamente habra una manera mas sencilla de hacerlo y me estare complicando mucho.

Espero que podais ayudarme, muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 13/04/2011, 09:07
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: While dentro de while consulta sql problema avanzando de fila

Si se repite el enunciado , prueba sacandolo y colocandolo antes del primer while, no lei todo el code , utiliza los tag por favor, saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #3 (permalink)  
Antiguo 13/04/2011, 09:59
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 15 años, 6 meses
Puntos: 10
Respuesta: While dentro de while consulta sql problema avanzando de fila

Hola Miexeker!!

Mas que un problema de programación, es de logica de como hacer tus consulta y como imprimirlas.

Por lo que veo de tu codigo y de lo que comentas, de la primera consulta que realizas sacas la provincia y en la segunda quieres sacar las zonas de esa provincia si no me equivoco.

Ahora la que tendrias que hacer es poner un distinc en tu primera consulta para asi solo sacar una sola provincia si es que hay mas de una misma repetida, es decir si tienes tres provincias Granada solo te sacaria una.

Código PHP:
<?php


$consulta1 
"SELECT distinc(provincia) FROM casas WHERE destacada LIKE 'NO%' ORDER BY provincia DESC";

$resultado1=mysql_query($consulta1) or die ("error:".mysql_error());

while (
$fila1=mysql_fetch_array ($resultado1)){

$like $fila1['provincia'];

echo 
"<h1>".$fila1['provincia']."</h1>"//Escribe el nombre de provincia bajo el que iran las filas

$consulta2 "SELECT * FROM casas WHERE provincia LIKE '".$like."' AND destacada LIKE '%NO%'";

//echo $consulta2;

$resultado2=mysql_query($consulta2) or die ("error:".mysql_error());

while (
$fila2=mysql_fetch_array ($resultado2)){

?>


<?php echo $fila2['zona']; ?></p>


<img class="imgpekena" src="<?php echo $fila1['imgp']; ?><br />
<?php echo $fila2['titulo']; ?><br />
Localizaci&oacute;n: <?php echo $fila2['localizacion']; ?><br />
R&eacute;gimen: <?php echo $fila2['regimen']; ?><br />
Precio: <?php echo $fila2['precio'];?><br />


<br />
<?php 

}
}
?>
Espero que a eso te refieras, pruebalo y comentas el resultado.

Saludos!!!!
__________________
Solo se... que no se nada!!! 0_o
  #4 (permalink)  
Antiguo 13/04/2011, 11:21
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: While dentro de while consulta sql problema avanzando de fila

Creo que no es exactamente como has entendido. La primera consulta busca la provincia que cumple el like y escribe su nombre, y uso ese nombre en la 2º consulta para sacar todas las filas que sean de esa provincia. Tengo que hacerlo asi pq no puedo especificar que nombre de provincia buscar, ya que podria ser cualquiera (dependiendo las que haya introducido el usuario) y no puedo predecir eso.

He probado lo de distinc pero no me funciona, o bien me da fallo de lenguaje sql, o bien directamente no hace nada, nose si es que lo estare haciendo mal, o que realmente no sirve para lo que yo quiero.

Es que nose como explicar bien lo que necesito (mejor que lo que hice arriba) es algo complicado. Lo que necesito es escribir el nombre que sea de la provincia, y luego todas las casas (pq son casas) que hay en esa provincia. Si solo tengo 1 casa por provincia no hay problema, pero si hay mas de 1 casa, el primer while se encuentra con la segunda casa y vuelve a escribir el nombre que sea (por ejemplo granada) y entonces el 2º while vuelve a buscar todas las casas de granada y a escribirlas.

Si lo que necesito es usar el distinc y no lo estoy haciendo bien a ver si me puedes hechar una mano en como utilizarlo Y_Y. Me da fallo ("distinc no es una funcion" o simplemente no funciona y sigue pasando lo mismo)

Gracias por la respuesta y la ayuda!

Saludos!

Vuelvo a poner el codigo con el "tag"

Código PHP:
<?php


$consulta1 
"SELECT * FROM casas WHERE destacada LIKE 'NO%' ORDER BY provincia DESC";

$resultado1=mysql_query($consulta1) or die ("error:".mysql_error());

while (
$fila1=mysql_fetch_array ($resultado1)){

$like $fila1['provincia'];

echo 
"<h1>".$fila1['provincia']."</h1>"//Escribe el nombre de provincia bajo el que iran las filas

$consulta2 "SELECT * FROM casas WHERE provincia LIKE '".$like."' AND destacada LIKE '%NO%'";

//echo $consulta2;

$resultado2=mysql_query($consulta2) or die ("error:".mysql_error());

while (
$fila2=mysql_fetch_array ($resultado2)){

?>


<?php echo $fila2['zona']; ?></p>


<img class="imgpekena" src="<?php echo $fila1['imgp']; ?><br />

<?php echo $fila2['titulo']; ?><br />
Localizaci&oacute;n: <?php echo $fila2['localizacion']; ?><br />
R&eacute;gimen: <?php echo $fila2['regimen']; ?><br />
Precio: <?php echo $fila2['precio']; ?><br />


<br />


<?php 

}
}
?>
  #5 (permalink)  
Antiguo 13/04/2011, 11:34
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 15 años, 6 meses
Puntos: 10
Respuesta: While dentro de while consulta sql problema avanzando de fila

Hola Miexeker!!

Error !!!

Si me equiboque perdon le falto un t al distinct.

Código PHP:
mysql_query("select distinct(provincia) from casas ..........",$conexion); 
Saludos!!!!!!!!
__________________
Solo se... que no se nada!!! 0_o
  #6 (permalink)  
Antiguo 13/04/2011, 12:19
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: While dentro de while consulta sql problema avanzando de fila

MM vale, y entre parentesis tendria que poner la provincia que es? Porque si es eso no me vale, porque nose la provincia que sera, ya que es el usuario el que las introduce y pueden ser varias las que se repitan. :(.

A ver si tienes alguna otra idea, sino, aun asi, gracias por tu ayuda!

Saludos
  #7 (permalink)  
Antiguo 13/04/2011, 13:42
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 15 años, 6 meses
Puntos: 10
Respuesta: While dentro de while consulta sql problema avanzando de fila

Hola Miexeker!!


Pues provincia se supone que es el nombre de tu campo no ??? asi lo tienes puesto en tu comentario.

La consulta se leeria algo asi:

Selecciona de la tabla casas las provincias que no se repitan donde destacada tenga un NO en todo su contenido.

Lo que quiere decir es que no importa si se captura 100 veces la provincia de Sevilla, la consulta solo te va a arrojar un Sevilla.


Saludos.
__________________
Solo se... que no se nada!!! 0_o
  #8 (permalink)  
Antiguo 13/04/2011, 13:57
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: While dentro de while consulta sql problema avanzando de fila

Ahhh vale! Es que creia que tendria que sustituir "provincia" por el nombre en concreto de la provincia que no quisiese que se repitiesee, pero es el nombre del campo, o de la columnaa. Lo acabo de probar! y va genial! es justo lo que necesitaba, ya habia leido algo con el distinct, pero no sabia muy bien como encajarlo, y es esa la manera! Perdona mi torpeza!

¡¡ Muchas gracias por tu ayuda!!

Saludos!
  #9 (permalink)  
Antiguo 13/04/2011, 14:02
Avatar de Huacho12  
Fecha de Ingreso: septiembre-2008
Ubicación: Isla Mujeres Q. Roo
Mensajes: 175
Antigüedad: 15 años, 6 meses
Puntos: 10
Respuesta: While dentro de while consulta sql problema avanzando de fila

Hola Miexeker!!

Que bien!!!

Bueno yo le llamo campo a la columna de mis tablas , pero si es el nombre de la columna de tu tabla.

Saludos
__________________
Solo se... que no se nada!!! 0_o

Etiquetas: fila, sql
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 23:35.