Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с чтением данных из БД через поле формы ввода.
Форумы портала PHP.SU » » HTTP и PHP » Проблема с чтением данных из БД через поле формы ввода.

Страниц (2): [1] 2 »
 

1. KuPbI4 - 15 Августа, 2011 - 21:04:49 - перейти к сообщению
Здравствуйте.
Хотел спросить по поводу проблемы чтения из базы данных через поле формы ввода. Что это значит? Это значит, я допустим добавил данные в БД, и хочу редактировать через поля формы ввода.
Вот допустим:
Добавил такие данные:
Цитата:
id 1
model lada calina
money 150000

А теперь хочу редактировать, захожу на страницу редактирования и запрашивает запрос через id методом $_GET, результат таков:
Цитата:

id 1
model lada
money 150000

Собственно, сам код:
PHP:
скопировать код в буфер обмена
  1.         <?
  2.     $id_car = strip_tags(stripslashes(substr($_GET['id_car'], 0, 11)));
  3.  
  4.     $q = "SELECT * FROM cars WHERE id_car='$id_car'";
  5.     $result = mysql_query($q);
  6.     $row = mysql_fetch_assoc($result);
  7.        
  8.         $id_car = strip_tags(stripslashes(substr($row['id_car'],0,11)));
  9.         $model = strip_tags(stripslashes(substr($row['model'],0,255)));
  10.         $year = strip_tags(stripslashes(substr($row['year'],0,11)));
  11.         $mesto = strip_tags(stripslashes(substr($row['mesto'],0,255)));
  12.         $phone = strip_tags(stripslashes(substr($row['phone'],0,32)));
  13.         $probeg = strip_tags(stripslashes(substr($row['probeg'],0,11)));
  14.         $kpp = strip_tags(stripslashes(substr($row['kpp'],0,255)));
  15.         $moschnost = strip_tags(stripslashes(substr($row['moschnost'],0,11)));
  16.         $money = strip_tags(stripslashes(substr($row['money'],0,11)));
  17.        
  18.         echo '<form action="edit.php" method="post" ENCTYPE="multipart/form-data">
  19.         <table width="100%"  height="100%" border="0" cellspacing="0" cellpadding="0" id="table">
  20.         <tr>
  21.    <td height="249" rowspan="16">&nbsp;</td>
  22.    <td align="justify" valign="top" width="16%">ID машины (для чтения): </td>
  23.    <td align="justify" valign="top" width="21%">
  24.    <input type="text" name="id_car" value='.$id_car.' readonly><br>
  25.         </td>
  26.    <td rowspan="16">&nbsp;</td>
  27.    </tr>
  28.         <tr>
  29.    <td align="justify" valign="top">Модель машины: <b><font color="red">*</font></b></td>
  30.    <td align="justify" valign="top">
  31.    <input type="text" name="model" value='.$model.'>
  32.         </td>
  33.    </tr>
  34.         <tr>
  35.    <td align="justify" valign="top">Год выпуска: <b><font color="red">*</font></b></td>
  36.    <td align="justify" valign="top">
  37.    <input type="text" name="year" value='. $year .'> г.
  38.         </td>
  39.    </tr>
  40.         <tr>
  41.    <td height="22" align="justify" valign="top">Место стоянки: <b><font color="red">*</font></b></td>
  42.    <td align="justify" valign="top">
  43.    <input type="text" name="mesto" value='. $mesto .'>
  44.    </td>
  45.    </tr>
  46.         <tr>
  47.    <td align="justify" valign="top">Контактный телефон: <b><font color="red">*</font></b></td>
  48.    <td align="justify" valign="top">
  49.    <input type="text" name="phone" value='. $phone .'>
  50.    </td>
  51.         <tr>
  52.    <td align="justify" valign="top">Пробег: <b><font color="red">*</font></b></td>
  53.    <td align="justify" valign="top">
  54.         <input type="text" name="probeg" value='. $probeg .'> км
  55.         </td>
  56.    </tr>
  57.         <tr>
  58.    <td align="justify" valign="top">КПП (на данный момент): <b><font color="red">*</font></b></td>
  59.    <td align="justify" valign="top">
  60.         <input type="text" value='.$kpp.' readonly>
  61.         </td>
  62.    </tr>
  63.         <tr>
  64.    <td align="justify" valign="top">КПП (для изменения):  <b><font color="red">*</font></b></td>
  65.    <td align="justify" valign="top">
  66.         <select name="kpp" id="kpp" ><option selected value='.$kpp.'></option><option value="Автомат">Автомат</option><option value="Ручная">Ручная</option></select>
  67.         </td>
  68.    </tr>
  69.         <tr>
  70.    <td align="justify" valign="top">Мощность: <b><font color="red">*</font></b></td>
  71.    <td align="justify" valign="top">
  72.         <input type="text" name="moschnost" value='.$moschnost.'> см<sup>3</sup>
  73.         </td>
  74.    </tr>
  75.         <tr>
  76.    <td align="justify" valign="top">Цена: <b><font color="red">*</font></b></td>
  77.    <td align="justify" valign="top">
  78.         <input type="text" name="money" value='.$money.'> руб.
  79.         </td>
  80.    </tr>
  81.         </table>
  82.         <input type="submit" value="Редактировать" name="edit"/>&nbsp;<input type="reset" value="Очистить"/>
  83.         </form>';

НО! Если так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <input type="text" name="money" value="'.$model.'"> руб.
  3.  

то получит ВСЕ данные из БД. Результат будет таков:
Цитата:
id 1
model lada calina
money 150000

Если мы добавим данные, к примеру:
Цитата:

id 1
model lada "calina"
money 150000

То тогда захожу на страницу редактирования и запрашивает запрос через id методом $_GET, результат таков:
Цитата:

id 1
model lada
money 150000


Есть варианты какие-то, как исправить ошибку?!
2. КЫР - 15 Августа, 2011 - 21:09:07 - перейти к сообщению
strip_tags и stripslashes стоит делать перед добавлением в бд, а не после чтения

а по теме - попробуй без mysql_fetch_assoc

PHP:
скопировать код в буфер обмена
  1.  
  2. $id_car = mysql_result($result,0,'id_car');
  3. $model = mysql_result($result,0,'model');
  4. $year = mysql_result($result,0,'year');
  5.  


и т.д.
3. KuPbI4 - 15 Августа, 2011 - 21:26:16 - перейти к сообщению
КЫР пишет:
strip_tags и stripslashes стоит делать перед добавлением в бд, а не после чтения

а по теме - попробуй без mysql_fetch_assoc

PHP:
скопировать код в буфер обмена
  1.  
  2. $id_car = mysql_result($result,0,'id_car');
  3. $model = mysql_result($result,0,'model');
  4. $year = mysql_result($result,0,'year');
  5.  


и т.д.

Спасибо за подсказку, но не получилось. Выдает те же данные, т.е. добавили:
Цитата:
model lada "calina"

А в редактировании выводит тоже самое:
Цитата:
model lada

и попробовал без mysql_fetch_assoc
4. КЫР - 15 Августа, 2011 - 21:30:27 - перейти к сообщению
а какой тип поля и кодировка бд?
5. KuPbI4 - 15 Августа, 2011 - 21:34:48 - перейти к сообщению
КЫР пишет:
а какой тип поля и кодировка бд?

тип поля - varchar(255)
кодировка бд - cp1251_general_ci
6. КЫР - 15 Августа, 2011 - 21:37:29 - перейти к сообщению
попробуйте тип поля text сделать
7. KuPbI4 - 15 Августа, 2011 - 21:43:49 - перейти к сообщению
КЫР пишет:
попробуйте тип поля text сделать

Пробовал, тоже самое, и пробовал даже кодировку сменить на utf8_general_ci, безрезультатно.
8. КЫР - 15 Августа, 2011 - 21:46:42 - перейти к сообщению
а страница со скриптом тоже utf-8?
если да, попробуйте перед выводом значений сделать iconv('windows-1251','utf-8',$string);
если так не поможет, попробуйте поменять местами кодировки при вызове)
9. KuPbI4 - 15 Августа, 2011 - 21:55:45 - перейти к сообщению
КЫР пишет:
а страница со скриптом тоже utf-8?
если да, попробуйте перед выводом значений сделать iconv('windows-1251','utf-8',$string);
если так не поможет, попробуйте поменять местами кодировки при вызове)

Страница со скриптом - windows-1251
CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

Попробовал Ваш вариант:
PHP:
скопировать код в буфер обмена
  1. iconv('windows-1251','utf-8',$string);

Такой же результат.
Попробовал даже поменять места кодировки при вызове:
PHP:
скопировать код в буфер обмена
  1. iconv('utf-8','windows-1251',$string);

Такой же результат.
10. КЫР - 15 Августа, 2011 - 21:58:42 - перейти к сообщению
ну тогда пробуем тяжелую артилерию)
попробуйте заменить кавычки спецсимволами
и пробелы тоже
пОшло конечно, но результат тут знать уже просто интересно)
11. KuPbI4 - 15 Августа, 2011 - 22:07:25 - перейти к сообщению
КЫР пишет:
ну тогда пробуем тяжелую артилерию)
попробуйте заменить кавычки спецсимволами
и пробелы тоже
пОшло конечно, но результат тут знать уже просто интересно)

Заменял кавычки на спецсимволами типа:
Цитата:
!№;:?*()
Цитата:
!@#$%^&*()
Цитата:
~<>:{}

Они выводятся. Пробелы убирал и добавлял, там в чтении поле формы вводы пробел есть.
Единственное, что не читается это
Цитата:
<>""''
12. КЫР - 15 Августа, 2011 - 22:08:48 - перейти к сообщению
ну тогда попробуйте вместо " &quot;
13. KuPbI4 - 15 Августа, 2011 - 22:12:24 - перейти к сообщению
КЫР пишет:
ну тогда попробуйте вместо " &quot;

Радость насмешили, выводится в поле ввода формы, но тупым пользователям, которые будут редактировать, не знают ведь, что такое &quot; Радость
14. КЫР - 15 Августа, 2011 - 22:15:05 - перейти к сообщению
ойой, забыл что в инпут выводим
мне тут что подумалось - выводит он только lada, а в исходном коде это поле как выглядит? попробуйте еще это значение вывести не в инпут, а обычным текстом
15. KuPbI4 - 15 Августа, 2011 - 22:18:40 - перейти к сообщению
КЫР пишет:
ойой, забыл что в инпут выводим
мне тут что подумалось - выводит он только lada, а в исходном коде это поле как выглядит? попробуйте еще это значение вывести не в инпут, а обычным текстом

В исходном коде html:
Цитата:
value="&quot;"

Если так:

то выводит
Цитата:
"

 

Powered by ExBB FM 1.0 RC1