PDA

Показать полную графическую версию : [решено] редактирование записи


cibin
27-05-2012, 18:08
У меня тут странная вещь произошла:
Делаю возможность редактирования справочника, т.е. нажимаешь на ссылку он открывает форму в котором вписан текст который нужно редактировать. В роде бы ни чего сложного, но вот парадокс некоторые тексты выдаёт не полностью и не могу понять почему! Прикладываю скрины и код!


<?php

require_once "bdconnect.php";
require_once "zashita.php";
mysql_query("SET NAMES cp1251");

$edit = mysql_fetch_object(mysql_query("SELECT * FROM `bank` WHERE id_bank = '$id_bank'"));

?>



<h1><strong><em>Редактировать наименование Банка</em></strong></h1>
<form action="<?php echo "update_spr_bank.php?id_bank=$id_bank" ?>" method="post" name="form">
<tr>
<td><input name="bank_name" type="text" value="<?php echo $edit->bank_name;?>" size="55" maxlength="100" /></td>
</tr>
<p>
<input type="submit" name="create" value="Изменить" />
</p>


</form>


1.jpg - это то как выглядит текст, нажимаю с боку кнопку-ссылку и выдаёт 2.jpg
Я для решение и таблицу заново с связками создал, перед этим всю таблицу очистил и ввёл информацию в ручную, не помогло!
Точно таким же способом создал для другого вида справочника, работает без проблем!

Coutty
27-05-2012, 19:47
Вероятно, дело в кавычках. Заменяйте их на & q u o t ; (без пробелов) перед добавлением в базу данных. Думаю, это поможет.

cibin
27-05-2012, 19:55
Нет, вводил без кавычек! Не помогло!

Sham
28-05-2012, 10:24
mysql_fetch_object(mysql_query("SELECT * FROM `bank` WHERE id_bank = '$id_bank'")); »
Делайте через переменную-ресурс. См. php.net

cibin
28-05-2012, 11:46
можно чуть чуть по подробнее!?

Sham
28-05-2012, 12:43
$resource = mysql_query( .......
$edit = mysql_fetch_object($resource);

http://www.php.net/manual/ru/language.types.resource.php
http://php.net/manual/ru/function.mysql-fetch-object.php

cibin
28-05-2012, 13:20
Странно но помогло то что в место формы input применил textarea

Sham
28-05-2012, 13:50
Вероятно, дело в кавычках. Заменяйте их на & q u o t ; (без пробелов) »
Имеется в виду, что перед выводом текст нужно обрабатывать htmlspecialchars (http://ru2.php.net/manual/ru/function.htmlspecialchars.php), если в базе лежит не HTML-вариант. Из-за необработанной кавычки часть текста было скрыта (ломаный HTML-код).

cibin
28-05-2012, 21:28
У меня где то токая запись была сохранена и я его применял:
class CcreateEdit extends McreateEdit {
function clean_data($str) { // ф-ция для очистки введенного контента
if(get_magic_quotes_gpc() == 1) { // если на сервере включен magic quotes, срабатывает "ручная" очистка
$str = str_replace('\"', "&quot;", $str) ;
$str = str_replace("\'", "'", $str) ;
$str = str_replace("<", "&lt;", $str) ;
$str = str_replace(">", "&gt;", $str) ;
} else { // если на сервере выключен magic quotes, срабатывает "ручная" очистка
$str = htmlspecialchars($str,ENT_QUOTES,"cp1251",false) ;
}
return $str ;
}

Но это не помогло!
Я как токовой понимал что проблема в кавычке, что нужно применить htmlspecialchars, но почему помогла запись типа:

<textarea name="bank_name" cols="55" rows="1"><?php echo $edit->bank_name;?></textarea> ???

Sham
28-05-2012, 22:45
Но это не помогло! »
тут какбы не медицинский форум
но почему помогла запись типа: »
неэкранированые кавычки (как и символы > < &) вне тегов показываются браузерами нормально, хотя это тоже нарушение разметки.

cibin
29-05-2012, 20:56
Имеется в виду, что перед выводом текст нужно обрабатывать htmlspecialchars, если в базе лежит не HTML-вариант. Из-за необработанной кавычки часть текста было скрыта (ломаный HTML-код). »

Помогла токая запись:

<input name="bank_name" type="text" value="<?=htmlspecialchars( $edit->bank_name )?>" size="55" maxlength="100" />




© OSzone.net 2001-2012