Проблема с отображением всей строки в поле ввода (в php) - PullRequest
4 голосов
/ 23 июня 2009

Я пытаюсь отобразить элемент из таблицы MySQL в поле ввода type = text. Данные являются строковым значением. Но я вижу только первое слово всей строки.

но если я повторю элемент, я получу полное строковое значение.

Мой код выглядит так:

  echo "Title: <input type=\"text\" name=\"title\" value=".$row['Title']."></input><br>"; 

Пожалуйста, дайте мне знать, что я здесь не так делаю.

Лучший Zeeshan

Ответы [ 8 ]

8 голосов
/ 23 июня 2009

Вы не заключили текст в кавычки в полученный HTML, попробуйте это

echo "Title: <input type=\"text\" name=\"title\" value=\"".$row['Title']."\"></input><br>";

или еще лучше

echo 'Title: <input type="text" name="title" value="'.$row['Title'].'"></input><br>';

, который избегает необходимости избегать двойных кавычек.

3 голосов
/ 23 июня 2009

Вам не хватает кавычек вокруг значения атрибута:

echo "<input type=\"text\" name=\"title\" value=\"" . htmlspecialchars($row['Title'])  . "\"><br>"

Также вы должны использовать htmlspecialchars, если заголовок содержит " или <>. Наконец, нет </input>

1 голос
/ 23 июня 2009

Я бы начал с того, что переписал бы это:

?>
  <div>
  <label>Title: 
    <input type="text" name="title" value="<?php echo htmlspecialchars($row['Title'])?>">
  </label>
  </div>
<?php

Так что это:

  • Более читабельно
  • Сейф от кавычек в данных, разбивающих вещи
  • Более доступный (благодаря лучшей разметке, включая элемент метки)

Затем, если проблемы все еще возникают, исследуйте сгенерированный html , а не PHP. С каждым уровнем генерации кода вы убираете себя из проблемы, тем сложнее вы зарабатываете себе на жизнь.

Вы сравниваете, как браузер отображает HTML, сгенерированный PHP, с PHP. Посмотрите на HTML, выясните, что с ним не так ( validator.w3.org может помочь), а затем выясните, как его генерирует PHP.

1 голос
/ 23 июня 2009

style="width:auto;" для элемента input, похоже, не сработает, поэтому я предполагаю, что вам придется изменить размер поля с помощью Javascript. Это поле, которое пользователь будет редактировать?

0 голосов
/ 21 декабря 2013

value = "'. $ Row [' Title '].'" Делает свое дело. Совершенно верно.

0 голосов
/ 23 июня 2009

Похоже, вы не заключаете свой атрибут value в кавычки и без кавычек, если $row['Title'] содержит пробел, только до этого пробела будет установлено значение. Попробуйте:

echo 'Title: <input type="text" name="title" value="' . $row['Title'] . '" /><br />';
0 голосов
/ 23 июня 2009

Возможно, в вашей строке есть символ \ n. input type = "text" не может справиться с этим. Вы можете удалить его и заменить его пробелом: str_replace ("\ n", "", $ subject) или удалить его полностью. Другой причиной может быть кавычка внутри вашей строки. Htmlspecialchars ($ subject) - хорошее решение избавиться от тех символов, которые могут испортить ваш html.

0 голосов
/ 23 июня 2009

Возможно, вам нужно изменить размер элемента формы.

<input type="text" size="50">

Это текстовый ввод шириной 50 символов.

Добавьте строку в nl2br () , чтобы увидеть, содержит ли она новую строку. Если он содержит переводы строк, вы должны удалить их, как уже упоминалось, чтобы иметь возможность отображать текст в одну строку.

echo nl2br(row['Title']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...