2013-05-27 2 views
0

Я просто хочу спросить, почему после получения данных из MySQL и пытается поставить это значение на TextField:PHP значение Text Field показывает неполные данные, только 1 слово

$contractorx = $row['Contractor']; 

Значение $ contractorx это «Хосе Амадео Алонзо», что является правильным. Но когда я пытаюсь отобразить его в текстовом поле HTML, используя этот код:

echo "<p>Contractor: <input type=\"text\" name=\"mdu\" readonly value=$contractorx></p>"; 

текст, отображаемый на поле только «Хосе». Может ли кто-нибудь помочь в определении того, почему это происходит и как его решить?

+2

Возьмите хороший твердый взгляд на HTML, который будет подаваться на выход. – deceze

+1

Вам нужны цитаты, которые я думаю ... – sashkello

+1

a) Вы не помещаете кавычки вокруг атрибута value. б) Вы не избегаете выхода. c) Вы уверены, что переменная действительно содержит значение, которое, по вашему мнению, имеет место? – GordonM

ответ

3

Добавить кавычки в "значение"

value=\"$contractorx\" 
+1

Вы * нужно * HTML-экранирование тоже! – deceze

+0

Это должно быть сделано до помещения данных в базу данных в любом случае;] – 0xAli

+1

Нет, этого не должно быть. Данные в базе данных не имеют ничего общего с HTML. Вы только HTML-побег на выходе * в * HTML! – deceze

0
echo sprintf("<p>Contractor: <input type='text' name='mdu' readonly value='%s' /></p>", $contractorx); 
+0

Нет смысла иметь двойные кавычки для этой строки, если вы собираетесь просто конкатенировать переменную. – BLaZuRE

+0

@BLaZuRE Я тебя не понимаю, но эта линия работает хорошо. вы можете попробовать. Не требуется согласование лицензии конечного пользователя. – zkanoca

+0

извините, неправильный ответ. Я на смартфоне. – BLaZuRE

4

Поскольку результат выглядит следующим образом:

<input type="text" name="mdu" readonly value=Foo Bar Baz> 

Атрибут value имеет единственное значение Foo, а затем еще два атрибута Bar и Baz. Вы должны использовать кавычки и HTML бежать значение правильно, она должна сама содержать цитаты:

printf('<input type="text" name="mdu" readonly value="%s">', 
     htmlspecialchars($contractorx, ENT_COMPAT)); 

Тогда результат будет правильно выглядеть следующим образом:

<input type="text" name="mdu" readonly value="Foo Bar Baz"> 
2

Использование htmlspecialchars():

$contractorx = htmlspecialchars($row['Contractor']); 

и не забывайте про котировки:

echo "<p>Contractor: <input type=\"text\" name=\"mdu\" readonly value=\"$contractorx\"></p>"; 

Или использовать одиночные кавычки:

echo '<p>Contractor: <input type="text" name="mdu" readonly value="'.$contractorx.'"></p>'; 
0
echo '<p>Contractor: <input type="text" name="mdu" readonly value="'.$contractorx.'"</p>';