Soy nuevo en php, pero estoy tratando de construir una página que produce después de haber leído algo de la base de datos, las casillas de verificación inherentes, pero cuando se imprimen con eco, el formato no es el deseado, lo que produce errores para el carro. devolver. Aquí está el php
<?php $conn = mysqli_connect("localhost", "username", "password", "database_name"); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $query="SELECT * FROM ingrediente"; $result = mysqli_query($conn, $query); if (mysqli_num_rows($result) > 0) { // output data of each row while($row = mysqli_fetch_assoc($result)) { $name = $row["id_ingrediente"]; $value = $row["immagine"]; $etichetta = $row["nome"]; $prezzo = $row["costo_unitario"]; echo "\n"; echo "<input type='checkbox' name=$name value='$value' onchange=\"add_ing2($name,'$value','$etichetta',$prezzo,this);\">$etichetta" ; echo "\n"; echo "<input type='number' name='$etichetta' style='border:0px; text-align:right;background:transparent; height:auto;' value=$prezzo readonly> €"; echo "\n"; echo "<br><br>"; } } else { echo "0 results"; } mysqli_close($conn); ?>Aquí está el html producido
<input type='checkbox' name=1 value='/images/ingredienti/pomodoro.png' onchange="add_ing2(1,'/images/ingredienti/pomodoro.png','Pomodoro',0.3,this);">Pomodoro <input type='number' name='Pomodoro' style='border:0px; text-align:right;background:transparent; height:auto;' value=0.3 readonly> € <br><br> <input type='checkbox' name=2 value='/images/ingredienti/formaggio.png ' onchange="add_ing2(2,'/images/ingredienti/formaggio.png ','Formaggio',0.2,this);">Formaggio <input type='number' name='Formaggio' style='border:0px; text-align:right;background:transparent; height:auto;' value=0.2 readonly> € <br><br> <input type='checkbox' name=3 value='/images/ingredienti/hamburger.png ' onchange="add_ing2(3,'/images/ingredienti/hamburger.png ','Hamburger',1,this);">Hamburger <input type='number' name='Hamburger' style='border:0px; text-align:right;background:transparent; height:auto;' value=1 readonly> € <br><br>Como puede ver, la forma correcta de imprimir se aplicó solo al primer elemento (Pomodoro (línea 1: 2 en código html)). Dado que esto me causa más que pocos problemas cuando uso las casillas de verificación, ¿cómo puedo resolverlo?
Muchas gracias
No hay nada malo con PHP: los datos que está extrayendo de la base de datos son simplemente malos. Algunas de las rutas de su imagen tienen un carácter de nueva línea al final.
En última instancia, debe corregir los datos (validar la entrada del usuario, ajustar los scripts que los extraen automáticamente, etc.), pero puede aplicar trim() a los valores para eliminar los caracteres adicionales.
Suposición incorrecta! Su valor de $ parece tener un salto de línea al final. Puede ver que la línea se rompe después de la URL de la imagen. Así que busque un \n en el valor de la imagen. Consejo: $valor = trim($valor); [actualización] Hacer trim() en todas las variables utilizadas. – @JustOnUnderMillions
Parece que tienes datos incorrectos con saltos de línea. Eche un vistazo a la base de datos: apuesto a que los verá allí en los datos sin procesar. Puede intentar recortar () los valores, pero es mejor solucionar el problema subyacente. – @ceejayoz
¡Apliqué el ajuste () a todas las variables y funciona! Muchas gracias JustOnUnderMillion y ceejayox <3