Xpoint
   [напомнить пароль]

Проверка на сущесвование в поле Title

Метки: [без меток]
2010-01-27 17:59:58 [обр] Станилав[досье]

Привет всем.
Хотел спросить на счет такой проверки.
Когда пользователь ввел в поле Title заголовок сообщение в гостевую (к примеру) то скрипт бы проверял этот Title на уже сущесвующий в базе, т.е если такой заголовок есть то пишем пользователю что такое сообщение уже сущесвует.

Хотелось бы спросить как это правильно сделать на PHP и если ли какой нибуть вариант на Jquery т.е что бы без перезагрузки страницы уже был результат ?
Это тяжело сделать ? и какая будет нагрузка на базу при таких запросов ?

спустя 1 час 26 минут [обр] Станилав[досье]
помагите куда копать.
спустя 1 час 26 минут [обр] Станилав[досье]
Я разобрался. Вот вопрос как это будет влиять на базу данных ? такие проверки ?
спустя 10 часов [обр] Прокаев2(13/35)[досье]
mysql? влиять не будет , если Title уникальный индекс
спустя 1 час 9 минут [обр] Филипп Ткачев(20/112)[досье]

Станилав[досье], по логике вы должны проверять наличие указанного заголовка в базе.
Тут у вас 2 пути проверки:

  1. Сложный (IMHO, удобный для пользователя): навешивание на поле с заголовком обработчика события потери фокуса и асинхронной проверки на существование заголовка в базе
  2. Простой: проверка уже после отправки формы и возврата к заполнению в случае существования.

Если вы делаете систему в духе FAQ или форума, 1 способ может сильно улучшить жизнь юзера, подсказывая релевантные темы.

Прокаев2[досье], использование уникального индекса в mysql лишь дополнительная мера, она поможет облегчить поиск существующих записей.
Я думаю, что генерация ошибки (конфликта при вставке) и ее последующая обработка не самый лучший выход из ситуации.

спустя 12 минут [обр] Прокаев2(13/35)[досье]

а я про вставку ничего не говорил ;)

уникальность индекса влияет на скорость selecta,
не был уверен, что Станилав[досье]знал об этом

спустя 2 часа 42 минуты [обр] Станилав[досье]

######################################################
ValidateUser.php
######################################################

<?php
 
/* RECEIVE VALUE */
$validateValue=$_POST['validateValue'];
$validateId=$_POST['validateId'];
$validateError=$_POST['validateError'];
 
 
 
 
 
 
 
    /* RETURN VALUE */
    $arrayToJs = array();
    $arrayToJs[0] = $validateId;
    $arrayToJs[1] = $validateError;
 
if($validateValue =="karnius"){        // validate??
    $arrayToJs[2] = "true";            // RETURN TRUE
    echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';            // RETURN ARRAY WITH success
}else{
    for($x=0;$x<1000000;$x++){
        if($x == 990000){
            $arrayToJs[2] = "false";
            echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';        // RETURN ARRAY WITH ERROR
        }
    }
    
}
 
?>

 

######################################################
Форма отправки
######################################################
 

 
<form id="formID" class="formular" method="post" action="">
            <fieldset>
                <legend>User informations</legend>
                <label>
                    <span>Desired username (ajax validation, only karnius is available) : </span>
                    <input value="" class="validate[required,custom[noSpecialCaracters],length[0,20],ajax[ajaxUser]]" type="text" name="user" id="user" />
                </label>
 
</form>

 

#################################
Вот я написал скрипт пример как проверяет есть или заголовка в базе
если adtitle=$adtitle значит есть или если не совпадают то нету.
#################################

 
if(mysql_num_rows(mysql_query("SELECT adtitle FROM xzclf_ads WHERE adtitle = '$adtitle'")))
 
{
echo "Уже есть;
}  
 
else
{
    echo "Нету можно постить";
}

 
Вопрос в том, как прикрутить к ValidateUser.php мой запрос к базе ?
 
В ValidateUser.php есть строка

Цитата:
 
if($validateValue =="karnius"){ // validate??
 

 
Если я в текстовое поле имя karnius то пишет что юзер свободен, я думаю тут что то нужно подставлять из базы.. или мою переменную $adtitle вообщем я запутался так как не имею большой практики в php... помогите кто может.. как проверить.

спустя 18 минут [обр] Станилав[досье]
У меня сайт обьявлений.. проблема в том что пользователи флудят некоторые берут и по 10 раз размещают одно и тоже обьявление только в разные города. Так вот для этого я и делаю это что бы был уник контент.. Другого выхода не вижу как запретить такое.
спустя 39 минут [обр] Филипп Ткачев(20/112)[досье]
Станилав[досье], если флуд ручной, то никакие способы вам не помогут. Если автоматический, проблему решит каптча.
спустя 14 минут [обр] Станилав[досье]
Да ну для бональных юзеров будет самое оно. Так как флудят единица а другие просто берут копируют передыдущие сообщение и вставляют в поля по новой.. и отправляют. Я просто хочу что бы был контент более уникален так как же проверить тогда все сообщение ?... я же не могу все время при модерации делать в базе поиск и искать одинаковые ?.. сверять и удалять их. Я понимаю что стоит поставить лишний символ в строку и она запоститься но другого выхода не вижу. По крайней мере на других сайтах моего типа на некоторых стоит такая защита от флуда..
спустя 11 минут [обр] Станилав[досье]
<?php

/* RECEIVE VALUE */
$adtitle=$_POST['adtitle'];
$validateId=$_POST['validateId'];
$validateError=$_POST['validateError'];




/* RETURN VALUE */
$arrayToJs = array();
$arrayToJs[0] = $validateId;
$arrayToJs[1] = $validateError;
   
   
   

if($adtitle != "hello"){      // validate??
   $arrayToJs[2] = "true";         // RETURN TRUE
   echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';         // RETURN ARRAY WITH success
}else{
   for($x=0;$x<1000000;$x++){
      if($x == 990000){
         $arrayToJs[2] = "false";
         echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';      // RETURN ARRAY WITH ERROR
      }
   }
   
}
   
   
?>

что то я не пойму почему если я вставляю код подключеник к db то когда идет проверка в форме написанно Please Wait Loading... т.е проверяет до бесконечности..

Вот ставлю так

    $link = mysql_connect("localhost", "root", "")
        or die("Could not connect : " . mysql_error());
    print "Connected successfully";
    mysql_select_db("mydb") or die("Could not select database");

Модет я не правильно понимаю как определяет переменную Ajax ? Просто если я делаю так

if($adtitle != "hello")

Потом в поле пишу слово Hello мне выдает аякс что слово Hello занято..

Так вот не пойму как туда вставить ответ из запроса

if(mysql_num_rows(mysql_query("SELECT adtitle FROM xzclf_ads WHERE adtitle = '$adtitle'")))

Но не пойму почему не работает если я вставляю код подключение к бд... если он должен быть не в том скрипте то как он проверяет наличие переменной ???.. (( помогите я знаю что сложновато но все же я один не смогу...

спустя 2 часа 48 минут [обр] Станилав[досье]
Боже да что это такое ? нашел еще 1 скрипт еще проще чем до этого в раз 10 и обратно та же ошибка сумай сойти.... кто то мне поможет или нет ?
спустя 10 минут [обр] Алексей Севрюков(162/1280)[досье]
Вы где такой уникальный код берете?
спустя 47 минут [обр] Станилав[досье]
Код предоставлен без базы данных т.е ее нужно туда поместить запрос и проверку.
А так взял его с сайта по ajax / jquery на американском сайте. Там писали что поддерживает все браузеры и т д.
 Так вот я его скачал все настроил все поля и осталось только настроить проверку поля Заголовок Сообщение.. ну вот и мучаюсь.. *(ибо там приведет пример без базы данных . т.е самому нужно дописать базу и запрос и подставить вместо примера переменную вообщем результотов покамись ноль.
спустя 2 минуты [обр] Филипп Ткачев(20/112)[досье]

Станилав[досье],научитесь писать код самостоятельно. копипаста до хорошего не доводит!

За столько времени можно было бы уже всю доску объявлений закончить

спустя 2 часа 56 минут [обр] Станилав[досье]
Добился я все таки чего хотел... только вот проблема некотороя осталась.. думаю смогу и ее решить.. Спасибо.
Powered by POEM™ Engine Copyright © 2002-2005