Выпадающее значение обрезается после первого пробела - PullRequest
0 голосов
/ 08 мая 2019

При редактировании значения, выбранного из раскрывающегося списка, значение, отправленное в БД, обрезается после первого пробела.

Я уже проверил и, по-видимому, нет пропущенных кавычек. Что я не вижу?

Это раскрывающийся список

<div class="col-md-12 form-group2 group-mail">
    <label class="control-label">Forma de Pago</label>
    <select name="formapago" id="formapago">
        <option value="">Seleccione la forma de pago</option>  
        <option value="Tarjeta de Crédito U&A">Tarjeta de Crédito U&A</option>
        <option value="Transferencia U&A">Transferencia U&A</option>
        <option value="Efectivo (fondo personal del profesional)">Efectivo (fondo personal del profesional)</option>

    </select>
 </div>

Это то, где раскрывающиеся значения вызываются при редактировании значения.

$formaDePago = $row["DESCRIPTION"];
$fpay_sql = mysqli_query($db,"select distinct DESCRIPTION from report_det where DESCRIPTION is not NULL and DESCRIPTION <> ' '");
echo " <td><select id='formapay".$cont."'>";
while($row7 = mysqli_fetch_array($fpay_sql,MYSQLI_ASSOC)){
      if($row7['DESCRIPTION'] == $formaDePago)
      {
         echo "<option selected value=".$row7['DESCRIPTION']." >".utf8_encode($row7['DESCRIPTION'])."</option>";
      }else{
         echo "<option value=".$row7['DESCRIPTION']." >".utf8_encode($row7['DESCRIPTION'])."</option>";
      }    
}
echo "</select></td>";

Строка полностью отображается в раскрывающемся меню, но при отправке она обрезается. т.е. когда я выбираю «Tarjeta de Credito U & A», значение, отправляемое в БД, является просто «Tarjeta». Чего мне не хватает?

Ответы [ 3 ]

0 голосов
/ 08 мая 2019

Перед сохранением данных в базе данных примените дезинфекцию или используйте функцию mysqli_real_escape_string

0 голосов
/ 08 мая 2019

Вы должны проверить несколько вещей. Убедитесь, что экранированы строки, такие как Asif ответил или используя htmlspecialchars(), и убедитесь, что ваши кодировки верны - кодировка PHP / HTML, сопоставление базы данных и таблицы

Также убедитесь, что столбец вашей БД имеет правильный тип и размер - то есть VARCHAR (100)

И я также рекомендую вам проверить, как ваши данные передаются. var_dump($_POST['formapay']) может точно показать, какой объект и размер читает PHP - просто запомните, что $ _POST нужен атрибут name вашего поля, которого нет во втором теге select, поэтому я просто предложил использовать "formapay"

Подробнее о субтитрах форм в PHP - https://www.php.net/manual/en/tutorial.forms.php

0 голосов
/ 08 мая 2019

Я не уверен, что породило HTML в первом блоке кода, но в этом фрагменте кода:

"<option value=".$row7['DESCRIPTION']." >"

Значение не заключено в кавычки, поскольку оно находится в этом блоке кода. Единственные кавычки вокруг него - это те, которые содержат "<option value=" и " >". Просмотрите исходный код страницы, и я думаю, что вы подтвердите это. Без кавычек лишние слова после пробелов интерпретируются как дополнительные атрибуты.

Вы должны просто добавить кавычки, чтобы позаботиться об этом.

"<option value='".$row7['DESCRIPTION']."' >"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...