Почему команда echo php печатает плохо строки html?

Я новичок в php, но я пытаюсь создать страницу, которая выдает после прочтения чего-либо из базы данных встроенные флажки, но когда они печатаются с эхо-форматированием, это не тот результат, который выдает, поэтому выдает ошибки для каретки вернуть.
Вот 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);

?>

Вот произведенный HTML

<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>

Как видите, правильный способ печати был применен только к первому элементу (Pomodoro (строка 1: 2 в HTML-коде)). Так как это вызывает у меня больше проблем, когда я использую флажки, как я могу решить?

огромное спасибо

0

Решение

В PHP нет ничего плохого — данные, которые вы извлекаете из базы данных, просто плохие. Некоторые из ваших путей к изображениям имеют символ новой строки в конце.

В конечном итоге вы должны исправить данные (проверка ввода пользователя, настройка сценариев, которые автоматически его вводят и т. Д.), Но вы можете применить trim() к значениям, чтобы убрать лишние символы.

0

Другие решения

Ошибочное предположение! У вашего значения $ в конце тоже есть разрыв строки.
Вы можете видеть, что линия разрывается после URL изображения. Так что ищите
\ n на значение изображения. Совет: $ value = trim ($ value); [обновить] сделать обрезку ()
на все используемые переменные. —
@JustOnUnderMillions

Похоже, у вас плохие данные с символами новой строки. Посмотрите в
база данных — держу пари, вы увидите их там в необработанных данных. Ты можешь попробовать
Обрезать значения, но лучше исправить основную проблему. —
@ceejayoz

Я применил trim () ко всем переменным, и это работает !!! Огромное спасибо JustOnUnderMillion и ceejayox <3

0