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 » PHP » Напишите за меня, пожалуйста » сравнить введённую строку со строкой в бд

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

1. broshurkaplus - 09 Сентября, 2011 - 11:39:53 - перейти к сообщению
здравствуйте
задался вопросом чтобы на сайте было поменьше одинаковых данных
хочу при загрузке сравнить введённую пользователем строку со строкой в бд и если повтор то отказать в добавлении

есть поль--й ввод например

явышел на улицу
небо светлое

$_POST['vvod']
мы это передаём постом и вносим в бд
CODE (htmlphp):
скопировать код в буфер обмена
  1.             $_POST['vvod']= trim($_POST['vvod']) ;
  2.             $_POST['vvod']= htmlspecialchars($_POST['vvod']) ;        
  3.             $_POST['vvod']= nl2br($_POST['vvod']);
  4.             $_POST['vvod']= mysql_real_escape_string($_POST['vvod']);

далее вставка в бд...


в базе после этого имеем

явышел на улицу <br />
небо светлое

теперь какой то другой пользователь вводит
явышел на улицу
небо светлое
и отправляет это - опять , а перед отправкой мы проверяем на совпадение

CODE (htmlphp):
скопировать код в буфер обмена
  1.               $q_proverka=mysql_query("SELECT vvod FROM vvod WHERE vvod='".$_POST['vvod']."'");
  2.               $r_proverka=mysql_fetch_row($q_proverka);
  3.               if($r_proverka[0]==trim($_POST['vvod'])){ здесть бла бла  $_POST['vvod'] - такое уже есть }


не срабатывает
т.е. для строки ввода в одну строчку работает, а если предложение на 2 строки то не хочет находить совпадения!
я уже перед проверкой делал htmlspecialchars и т.д. а потом сравнивал - не срабатывает.

ПОДСКАЖИТЕ может чо не так?
2. LIME - 09 Сентября, 2011 - 11:49:25 - перейти к сообщению
ну вообщето проще так проверять http://php.net/manual/ru/functio...sql-num-rows.php
а почему не хочет работать незнаю...ведь строка 1 в принципе после обработки...интересно
(Добавление)
а вы перед сравнением также обрабатываете POST ?
3. broshurkaplus - 09 Сентября, 2011 - 12:56:28 - перейти к сообщению
ну да
я сначала обрабатываю затем сравниваю а затем вставляю

он вставляет как надо, я смотрю по акту в базе одинаково, а при сравнении не реагирует
4. MrBeard - 09 Сентября, 2011 - 14:05:46 - перейти к сообщению
broshurkaplus пишет:
ну да
я сначала обрабатываю затем сравниваю а затем вставляю

он вставляет как надо, я смотрю по акту в базе одинаково, а при сравнении не реагирует


ну, стоило бы посмотреть на строку, которая добавляется в БД, и возвращаемый результат из БД при поиске её же
зависит, по идее, от конфига таблицы и полей. может, ищет по первым символам, находит несколько строк, и первая из них не полностью совпадает с искомой
5. broshurkaplus - 09 Сентября, 2011 - 15:08:57 - перейти к сообщению
MrBeard
я ж код привёл...

ну типа так
вводим

я вышел на улицу
небо светлое

после обработки и вставки в бд имеем

явышел на улицу <br />
небо светлое

опять вводим

я вышел на улицу
небо светлое

обрабатываем пост и имеем

явышел на улицу <br />
небо светлое

теперь проверяем
CODE (htmlphp):
скопировать код в буфер обмена
  1. $q_proverka=mysql_query("SELECT vvod FROM vvod WHERE vvod='".$_POST['vvod']."'");
  2. $r_proverka=mysql_fetch_row($q_proverka);
  3. if($r_proverka[0]==trim($_POST['vvod'])){ здесть бла бла  $_POST['vvod'] - такое уже есть }

те при первом совпадении должно выдать, что это уже есть

а оно ан нет не срабатывает и всё равно добавляет в бд , в чём убеждаемся открыв таблицу в пхпАдмин - текст одинаковый!

а если вводим в одну строчку типа

я вышел на улицу небо светлое

то при повторном наборе и посте срабатывает и выдаёт что есть
в чём может быть дело?
может символы перевода или как подругому можно сравнить
(Добавление)
все исправил

сделал так

$q_proverka=mysql_query("SELECT vvod FROM vvod WHERE vvod='".$_POST['vvod']."'");
$r_proverka=mysql_fetch_row($q_proverka);
if($r_proverka[0]){ здесть бла бла $_POST['vvod'] - такое уже есть }

т.е. если есть в масиве строки элем $r_proverka[0] то - такое уже есть

всем спасибо
6. dimka3210 - 11 Сентября, 2011 - 10:50:49 - перейти к сообщению
а md5 или SHA у них разные? попробуйте сравнить после шифрования.

 

Powered by ExBB FM 1.0 RC1