Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Averiguar si un campo no existe

Estas en el tema de Averiguar si un campo no existe en el foro de PHP en Foros del Web. Muy buenas, Llevo todo el día dándole vueltas al asunto y no encuentro la manera. Resulta que estoy sacando un listado de una tabla con ...
  #1 (permalink)  
Antiguo 05/08/2015, 11:32
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 9 meses
Puntos: 2
Averiguar si un campo no existe

Muy buenas,

Llevo todo el día dándole vueltas al asunto y no encuentro la manera.

Resulta que estoy sacando un listado de una tabla con 3 datos (tipo directorios) y estos van con una imagen como avatar que está en otra tabla.

Si el código lo ejecuto así funciona perfectamente:

Código PHP:
   $peticion "SELECT * FROM zapaterias";
  
$resultado mysqli_query($conexion$peticion);
    while(
$filamysqli_fetch_array($resultado)){
        echo 
"<article>";
        echo 
"<a href='listado.php?id=".$fila['idzapateria']."'><h3>".$fila['nombre']."</h3>";
        echo 
"<p>".$fila['ubicacion']."</p>";
        echo 
"</article>";
    
$peticion2 "SELECT * FROM zapateriasimg WHERE idzapateria= ".$fila['idzapateria'];
    
$resultado2 mysqli_query($conexion$peticion2);
    while(
$fila2mysqli_fetch_array($resultado2)){
        
         echo 
"<img src='img/".$fila2['url']."'>";
}
 }
    

        echo 
"</article>";
    } 
Con esto me saca el listado con los datos de la tabla y la imagen de la otra table pero UNICAMENTE si existe. Mi propósito es, que si no hay una imagen creada y ligada a otra fila del campo zapaterias, salga una imagen "default".

He probado con esto:

Código PHP:
  $peticion "SELECT * FROM zapaterias";
  
$resultado mysqli_query($conexion$peticion);
    while(
$filamysqli_fetch_array($resultado)){
        echo 
"<article>";
        echo 
"<a href='tienda.php?id=".$fila['idzapateria']."'><h3>".$fila['nombre']."</h3>";
        echo 
"<p>".$fila['ubicacion']."</p>";
        echo 
"</article>";
    
$peticion2 "SELECT * FROM zapateriasimg WHERE idzapateria= ".$fila['idzapateria'];
    
$resultado2 mysqli_query($conexion$peticion2);
    while(
$fila2mysqli_fetch_array($resultado2)){
        
if (
$fila2['url'] == NULL){
    
     echo 
"<img src='img/nophoto.jpg'>";
}   else {
         echo 
"<img src='img/".$fila2['url']."'>";
}
 }
    

        echo 
"</article>";
    }
  
mysqli_close($conexion);
  
  
?> 
Algo avanza, ya sale algo si el campo de la fila no existe, pero aún así requiere la existencia de una fila (con su id).

Estoy muy verde con php, seguro que es una chorrada pero no llego a dar con la tecla. Buscando en el foro di con mysql_num_rows pero al parecer ya no funciona con las nuevas versiones de php.

Googleando di con COUNT() pero creo que es otra historia diferente.

¿Saben en que puedo estar fallando o que se me escapa? Seguiré exprimiendo la mente

Gracias de antemano
  #2 (permalink)  
Antiguo 05/08/2015, 11:39
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Averiguar si un campo no existe

Utiliza un if:

Código PHP:
Ver original
  1. if ($fila2['url'])==""
  2. {
  3.     echo "<img src='img/default.jpg'>";
  4. }
  5. else
  6. {
  7.    echo "<img src='img/".$fila2['url']."'>";
  8. }
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 05/08/2015, 11:50
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Averiguar si un campo no existe

Cita:
Iniciado por chronos682 Ver Mensaje
Utiliza un if:

Código PHP:
Ver original
  1. if ($fila2['url'])==""
  2. {
  3.     echo "<img src='img/default.jpg'>";
  4. }
  5. else
  6. {
  7.    echo "<img src='img/".$fila2['url']."'>";
  8. }
Gracias por la respuesta, es lo que utilicé como puedes ver en el segundo código. Solo que en mi código metí el =="" dentro de los paréntesis del if. Si lo saco como me lo has puesto me da error de sintaxis
  #4 (permalink)  
Antiguo 05/08/2015, 11:51
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Averiguar si un campo no existe

Si va dentro del parentesis es que me equivoque al escribirlo desde el celular.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #5 (permalink)  
Antiguo 05/08/2015, 11:54
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Averiguar si un campo no existe

Pues así sale, pero debe existir la fila con la idzapateria de la imagen definida que es lo que relaciona una tabla con otra, creo que ahí está el problema.

Igual debería añadir el avatar de otra forma desde la misma tabla y ahí utilizar el if. Pero tenía la duda por si más adelante quiero añadir imágenes como fotografías.

Saludos
  #6 (permalink)  
Antiguo 05/08/2015, 12:12
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Averiguar si un campo no existe

Ya entendí qué es lo que quieres, eso lo puedes hacer así:

Código PHP:
Ver original
  1. <?php
  2.     $peticion = "SELECT * FROM zapaterias";
  3.     $resultado = mysqli_query($conexion, $peticion);
  4.     while($fila= mysqli_fetch_array($resultado)){
  5.         echo "<article>";
  6.         echo "<a href='tienda.php?id=".$fila['idzapateria']."'><h3>".$fila['nombre']."</h3>";
  7.         echo "<p>".$fila['ubicacion']."</p>";
  8.         echo "</article>";
  9.         $peticion2 = "SELECT * FROM zapateriasimg WHERE idzapateria= ".$fila['idzapateria'];
  10.         $resultado2 = mysqli_query($conexion, $peticion2);
  11.         $total = mysqli_num_rows($resultado2);
  12.         if ($total > 0)
  13.         {
  14.             $fila2= mysqli_fetch_assoc($resultado2);
  15.             echo "<img src='img/".$fila2['url']."'>";
  16.         }
  17.         else
  18.         {
  19.             echo "<img src='img/nophoto.jpg'>";
  20.         }
  21.         echo "</article>";
  22.     }
  23.     mysqli_close($conexion);
  24. ?>

Lo que hace mysqli_num_rows es determinar cuántos registros coincidieron con la búsqueda, si el idzapateria no existe en la tabla zapateriasimg va a devolver 0 esta función, por lo cual se debería cargar la imagen nophoto.jpg, si devuelve 1, qué es lo que debería devolver a menos que hayan varios registros que cumplan con ese idzapatería, se carga la imagen que está en la BD. En caso de que sean varias imágenes tendrías que utilizar otro while en vez de esto $fila2= mysqli_fetch_assoc($resultado2);
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]

Última edición por chronos682; 05/08/2015 a las 12:19
  #7 (permalink)  
Antiguo 06/08/2015, 03:54
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Averiguar si un campo no existe

Muchas gracias chronos682, funciona perfectamente. En este mismo foro encontré algo similar con la función mysqli_num_rows, pero he visto en el manual de php que va a quedar obsoleto, por eso ni lo utilicé
  #8 (permalink)  
Antiguo 06/08/2015, 06:53
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Averiguar si un campo no existe

Cita:
Iniciado por srwik Ver Mensaje
Muchas gracias chronos682, funciona perfectamente. En este mismo foro encontré algo similar con la función mysqli_num_rows, pero he visto en el manual de php que va a quedar obsoleto, por eso ni lo utilicé
Va a quedar obsoleta la extensión mysql no mysqli por lo tanto la función que dejará de funcionar es mysql_num_rows no mysqli_num_rows.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #9 (permalink)  
Antiguo 06/08/2015, 08:03
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Averiguar si un campo no existe

Entendido, genial entonces ! Muchas gracias nuevamente

Etiquetas: averiguar, campo, mysql, select, tabla
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 09:10.