PHP - No funciona condición dentro de etiqueta <img src = "">

 
Vista:
Imágen de perfil de Albert J.
Val: 15
Ha aumentado su posición en 13 puestos en PHP (en relación al último mes)
Gráfica de PHP

No funciona condición dentro de etiqueta <img src = "">

Publicado por Albert J. (9 intervenciones) el 28/04/2020 01:57:08

Hola Buenas tardes comunidad.




Iré al grano.
Estoy comenzando una tienda online, necesito mostrar el catálogo de una sección de productos. Unos productos tienen imagen y otros no, los que no tiene imagen son rellenados por una imagen por default


Las tablas que utilizo para este ejercicio son las sig:

tablas

el codigo es el sig:

codigo

En concreto, la duda que tengo es en estas lineas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="main">
    <?php while($fila1 = mysqli_fetch_array($registros1)) { ?>
    <div class="productosmain hvr-buzz-out">
        <?php $registros2 = mysqli_query($link,"select nombre from imagenes where id_producto = '$fila1[id_producto]' and prioridad = 1");
 
        while ($fila2 = mysqli_fetch_array($registros2)){
 
            if(mysqli_num_rows($registros2)>0){?>
            <img src="admin/productos/imagenes/<?php echo $fila2['nombre'];} else {echo "sinimagen.jpg";}?>" width="100%" alt="portatil1">
            <?php } ?>
 
            <div class="precio">$<?php echo $fila1['precio']; ?> Pesos.</div>
    </div> <!-- el ancho al 100% de la imagen se adapta al 100% del div "productosmain"-->
        <?php
    }
    cerrarconexion();
    ?>
    <div class="limpiar"></div>
</div>

Entiendo que el primer while creara un div por cada producto que exista en la tabla productos.
Y, que el segundo while solo insertará 9 imagenes (son las que si cumplen todas las condiciones.)
LA DUDA ES, ¿porqué no funciona el else dentro de la etiqueta <img src = "">?

La consulta de la linea 4 genera esta tabla:

tabla2

Guardo ese array en la variable $fila2 y hago la siguiente condición, (si $registro2 contiene filas, inserta la imagen ubicada en la sig dirección. Sino imprime "sinimagen.jpg"):
src="admin/productos/imagenes/nombreimagen.jpg (si tiene imagen)
src="admin/productos/imagenes/sinimagen.jpg (sino tiene iimagen)

El problema PRINCIPAL es que esa condición no me imprime la imagen "sinimagen.jpg."

El resultado se ve asi:

result

De antemano, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Annonymous
Val: 61
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

No funciona condición dentro de etiqueta <img src = "">

Publicado por Annonymous (18 intervenciones) el 28/04/2020 02:28:43
Intenta cambiando las comillas del archivo "sin imagen" en el else por comillas simples es decir :

Cambia esta linea 9
1
<img src="admin/productos/imagenes/<?php echo $fila2['nombre'];} else {echo "sinimagen.jpg";}?>" width="100%" alt="portatil1">

Por

1
<img src="admin/productos/imagenes/<?php echo $fila2['nombre'];} else {echo 'sinimagen.jpg';}?>" width="100%" alt="portatil1">
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Albert J.
Val: 15
Ha aumentado su posición en 13 puestos en PHP (en relación al último mes)
Gráfica de PHP

No funciona condición dentro de etiqueta <img src = "">

Publicado por Albert J. (9 intervenciones) el 28/04/2020 06:01:50
Hola amigo, gracias por responder.

No, esto no funciona. No encuentro error en la estructura del código. Estoy usando phpstorm, y en una ocasión tuve un problema con la condición isset. Lo solucione actualizando la versión de mi IDE. Espero que esta ocasión no sea lo mismo. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

No funciona condición dentro de etiqueta <img src = "">

Publicado por Julio (830 intervenciones) el 28/04/2020 08:50:11
Hola.

Creo que tu código no tiene sentido y te explico por qué y dónde:

1
2
3
4
5
6
7
8
9
<?php
$registros2 = mysqli_query($link,"select nombre from imagenes where id_producto = '$fila1[id_producto]' and prioridad = 1");
 
while ($fila2 = mysqli_fetch_array($registros2)){
    if(mysqli_num_rows($registros2)>0){?>
        <img src="admin/productos/imagenes/<?php echo $fila2['nombre'];} else {echo "sinimagen.jpg";}?>" width="100%" alt="portatil1">
<?php
}
?>

Paso a paso, tú obtienes $registros2 que, supuestamente, es el nombre de las imágenes. Luego recorres las imágenes que te ha devuelto y, dentro cuando estás recorriendo, ¿compruebas si no te ha devuelto ningún nombre? Piénsalo bien, te pones a recorrer una serie de elementos y, cuando los estás recorriendo, te preguntas si hay elementos. No tiene sentido, pues no se va a poner a recorrer unos elementos que no existen, por tanto nunca te preguntarás si existen.

Obviamente cuando te devuelve alguna imagen, la recorre y mysli_num_rows siempre te dirá que sí hay imágenes, por lo tanto te funciona correctamente. Pero cuando no te devuelve ninguna imagen, ¡teóricamente no entra en el while porque no hay nada que recorrer! Por tanto nunca te llega ni siquiera a comprobar mysqli_num_rows y mucho menos a colocar la imagen, haya o no haya.

Por tanto, es antes de recorrer los resultados de la consulta donde debes hacer la comprobación de si hay o no nombres.

1
2
3
4
5
6
7
if (mysqli_num_rows($registros2) > 0) { ?>
	<?php while ($fila2 = mysqli_fetch_array($registros2)) { ?>
		<img src="admin/productos/imagenes/<?php echo $fila2['nombre']; ?>" width="100%" alt="portatil1">
	<?php } ?>
<?php } else { ?>
	<img src="admin/productos/imagenes/sinimagen.jpg" width="100%" alt="portatil1">
<?php } ?>

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

No funciona condición dentro de etiqueta <img src = "">

Publicado por joel (1269 intervenciones) el 28/04/2020 07:55:32
Yo cambiaria estas lineas:
1
2
3
if(mysqli_num_rows($registros2)>0){?>
    <img src="admin/productos/imagenes/<?php echo $fila2['nombre'];} else {echo "sinimagen.jpg";}?>" width="100%" alt="portatil1">
<?php } ?>

por estas:
1
2
echo "<img src='admin/productos/imagenes/".(mysqli_num_rows($registros2)>0 ? $fila2['nombre'] : "sinimagen.jpg")." width='100%' alt='portatil1'>";
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar