Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Hay forma de condicionar un while?

Estas en el tema de Hay forma de condicionar un while? en el foro de PHP en Foros del Web. Hola mi pregunta es la siguiente, hay forma de que condicione sun while? Osea que si el while no se ejecuta que haga tal cosa. ...
  #1 (permalink)  
Antiguo 16/11/2014, 14:44
Avatar de mostaza4  
Fecha de Ingreso: octubre-2008
Mensajes: 74
Antigüedad: 16 años
Puntos: 0
Hay forma de condicionar un while?

Hola mi pregunta es la siguiente, hay forma de que condicione sun while? Osea que si el while no se ejecuta que haga tal cosa.

Les doy un ejemplo.
Tengo una base en al que guardo fotos de registros de usuarios pero algunos de los usuarios no subieron foto. Entonces cuando hago la consulta habeces el while funciona (si tiene alguna foto guardada) o no.

Código:
$Consulta= "SELECT * FROM fotos WHERE id = $Id";
               //La coneccion ($cnx) esta realizada antes
$sql= mysql_query($consulta, $cnx);

while($fila=mysql_fetch_array($sql)){
echo <img src='fotos/".$fila['nombre']."'/>
}
ese while habeces funciona y habeces no debido a que hay registros en los que no tienen cargado foto y necesitaria que cuando no funcione que me coloque otra imagen tipo <img src='fotos/noImagen.jpg'>

Gracias
  #2 (permalink)  
Antiguo 16/11/2014, 17:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Hay forma de condicionar un while?

En tu caso usar while() no tiene sentido porque sólo obtienes un registro a la vez, ¿entonces de que sirve while() sino necesitar hacer un ciclo?

Debes usar un if() cualquier, y ahí si puedes aplicar en el "else"la condición en caso de no complirse el if(), es lógico: usa tu sentido común.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/11/2014, 05:57
Avatar de mostaza4  
Fecha de Ingreso: octubre-2008
Mensajes: 74
Antigüedad: 16 años
Puntos: 0
Respuesta: Hay forma de condicionar un while?

disculpa mi ignorancia pero hace 2 años que aprendo solo php y siempre use el ciclo while para sacar los registors pero ahora que lo decis suena logico no? te pregunto para reconfirmar aunque en un rato ya lo pruebo.
¿con un $sql['nombre'] por ejemplo me daria el resultado de el campo?

Gracias, en un rato igual voy a probar y si funciona me voy a ahorrar miles de while que usaba en todos lados
  #4 (permalink)  
Antiguo 17/11/2014, 06:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Hay forma de condicionar un while?

Cita:
¿con un $sql['nombre'] por ejemplo me daria el resultado de el campo?
No.

Código PHP:
Ver original
  1. $sql= mysql_query($consulta, $cnx);

$sql es un resultset no una matriz. Debes ejecutar

Código PHP:
Ver original 

para obtener una matriz (array) por registro del resultset.

(esta función tiene la particularidad de leer secuencialmente el resultset de tal forma que cada vez que se ejecuta obtienes una matriz con un registro nuevo hasta llegar al final del resultado de la query)


No te lies fijate bien en las estructuras....

Código PHP:
Ver original
  1. while(...condicion...){
  2.    ....codigo que se repite mientras la condición sea cierta.
  3. }

Código PHP:
Ver original
  1. if(...condicion...){
  2. ...codigo que se ejecuta si la condicion es cierta.
  3. }else{
  4. ...codigo que se ejecuta si la condición NO es cierta.
  5. }

Luego en tu

Código PHP:
Ver original
  1. while($fila=mysql_fetch_array($sql)){

Estas haciendo dos cosas

1. Asignar a "$fila" el resultado de "mysql_fetch_array($sql)", eso no es la condición.
2. Ejecutar "mysql_fetch_array($sql)" la qual da falso si no hay mas registros, esa es la condición que manda sobre el ciclo WHILE. El ciclo no terminara hasta que "mysql_fetch_array($sql)" sea falso.

Ahora bien si tu query tiene un "WHERE id = $Id;" los id son únicos luego seguro que solo va a generar un registro o ninguno. Por lo tanto no es necesario un bucle o ciclo como ya te ha dicho @pateketrueke. (En el caso de una tabla fotos, debes haber controlado la condicion que cada usuario solo pueda tener una sola foto, o ninguna, para que lo ultimo sea cierto).

Luego si solo tenemos una o ninguna foto la estructura del if() nos sirve a la perfección.

Pero, recuerdas las dos cosas que haciamos en el WHILE()? Asignación y condición.

En el if debes hacer lo mismo....


Código PHP:
Ver original
  1. if($fila=mysql_fetch_array($sql)){
  2. echo "<img src='fotos/".$fila['nombre']."'/>";
  3. }else{
  4. echo "<img src='fotos/noImagen.jpg'>";
  5. }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 17/11/2014 a las 06:23
  #5 (permalink)  
Antiguo 17/11/2014, 06:51
Avatar de mostaza4  
Fecha de Ingreso: octubre-2008
Mensajes: 74
Antigüedad: 16 años
Puntos: 0
Respuesta: Hay forma de condicionar un while?

ahorta entiendo entonces en vez del while debo hacer un por ejemplo
Código:
$sql2= mysql_fetch_array($sql);
// y ahi

if($sql2['nomre']== TRUE){
echo "<img src='fotos/".$sql2['nombre']."'/>";
}else{
echo "<img src='fotos/noImagen.jpg'>";
}
No? Gracias por la buena onda! a los 2
  #6 (permalink)  
Antiguo 17/11/2014, 06:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Hay forma de condicionar un while?

Noooooooooo..... eeeee que he perdido bastante de mi tiempo .... lee por favor TODO mi post.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 17/11/2014 a las 07:31
  #7 (permalink)  
Antiguo 17/11/2014, 09:15
Avatar de mostaza4  
Fecha de Ingreso: octubre-2008
Mensajes: 74
Antigüedad: 16 años
Puntos: 0
Respuesta: Hay forma de condicionar un while?

Gracias quimfv, lei todo y probe con lo que puse en mi ultimo post y funciono, elimine el while y use un if ya que es un solo resultado. Es mas recorri todos mis codigos y elimine como 5 while que rondaban por ahi para sacar un solo registro y los cambie por if. Muchas Gracias quedo solucionado
  #8 (permalink)  
Antiguo 18/11/2014, 05:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Hay forma de condicionar un while?

Debes intentar entender lo que haces

$sql2['nomre']

no contiene un boleano (true/false), cualquier cosa que no sea 0 se evaluara como true, por eso te funciona, pero no es correcto, si un día en ese campo hay un cero 0 tendrás problemas, ya se que no será el caso de las fotos pero en otro similar podría darse y luego la misma solución no te funcionará.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #9 (permalink)  
Antiguo 18/11/2014, 07:13
Avatar de mostaza4  
Fecha de Ingreso: octubre-2008
Mensajes: 74
Antigüedad: 16 años
Puntos: 0
Respuesta: Hay forma de condicionar un while?

Claro te entiendo, gracias a ustedes comprendi eso.

Gracias groso!

Etiquetas: condicionar, forma, mysql, registro, select, sql, usuarios
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 15:40.