[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужно проверить наличие записи в БД
Athlete
Всем привет! Подскажите, что должен возвращать php скрипт, чтобы при отсутствии записи в БД выскакивал алерт, я хотел реализовать так: если php скрипт возвращает ALERT, то выскакивает алерт, но не получается, алерт не выскакивает. Подскажите, что не так. Или иными словами, как задать в JS условие, при котором ответ приходит пустым. Пытался написать if (response == "") и if (response == null), но что то тоже не получается

функция JS:

Код
function getnameprod()
{
if(document.getElementById('codebeton').value=="")
{
  window.alert("Не введено значение!");
 
}
else {createRequest();
var codebeton = document.getElementById('codebeton').value;
var url = "getnameprod.php?codebeton=" + escape(codebeton);
request.open("GET", url, true);
request.onreadystatechange = function() {
         if (request.readyState == 4) {
          if (request.status == 200){ var response = request.responseText;
                 if (response == ALERT) {window.alert ("qqq");}
                 }
                 else {window.alert ("Ошибка!" + request.status);}
                 }  
         
          }
request.send(null);
 }
}

php:

PHP
<?php
$db
=@mysql_connect ("localhost", "upp", "");
if (!$db) {
            echo "Не удалось подключиться к БД!";
            }
else {
        mysql_select_db("upp");
        }
$codebeton = $_GET['codebeton'];        
$markabdb 
= mysql_query("SELECT marka FROM upp_beton WHERE code='$codebeton'");
$row = mysql_fetch_assoc($markabdb); 
$markab 
= $row['marka'];
if ($markab=="") {echo "ALERT";}




Спустя 22 минуты, 2 секунды (6.08.2009 - 06:01) kirik написал(а):
С использованием класса отсюда будет такой код:
JS
PHP
function getnameprod() {
    if(ge('codebeton').value == '') {
        alert('Не введено значение!');
    } else {
        var AJAX = new AjaxRequest('getnameprod.php?');

        AJAX.OnComplete(function (result) {
            if(result == 'ALERT') {
                alert('Тут собственно алерт..');
            }
        });

        AJAX.Get({'codebeton': ge('codebeton').value});
    }
}

или можно сделать так:
JS
PHP
function getnameprod() {
    if(ge('codebeton').value == '') {
        alert('Не введено значение!');
    } else {
        var AJAX = new AjaxRequest('getnameprod.php?', true);
        AJAX.Get({'codebeton': ge('codebeton').value});
    }
}


а в PHP так:
PHP
// ..........запрос, и проверка.......
exit('<script>alert("Тут собственно алерт..");</script>');




А если использовать ваш код, попробуйте заменить (response == ALERT) на (response == 'ALERT')..

Спустя 52 минуты, 21 секунда (6.08.2009 - 06:53) Athlete написал(а):
Пробовал менять (response == ALERT) на (response == 'ALERT'), эффекта нет, хотя по логике должен быть...

Спустя 32 минуты, 30 секунд (6.08.2009 - 07:26) Athlete написал(а):
заметил одну вещь: если запись не найдена в базе, возвращается ответ длиной 2 символа, а совсем не пустой, объясните, почему?

Спустя 26 минут, 58 секунд (6.08.2009 - 07:53) sergeiss написал(а):
Цитата (Athlete @ 6.08.2009 - 06:39)
if ($markab=="") {echo "ALERT";}

Не совсем хорошо сделано. Лучше сделать if( trim($markab) == '').... Причина - ответ может состоять из пробелов. Указанной функцией все лишние пробелы будут отрезаны.

А лучше вообще запрос переделать smile.gif

PHP
$markabdb mysql_query("SELECT count(marka) as c FROM upp_beton WHERE code='$codebeton'");

и оценивать величину $row['c'].

Плюс к этому, если код бетона является целой величиной, то лучше в начале написать так:
PHP
$codebeton=intval$_GET['codebeton'] );

Это будет защитой от инъекции.

Спустя 19 минут, 43 секунды (6.08.2009 - 08:12) Athlete написал(а):
Цитата
sergeiss


Спасибо! Это именно то, что надо, не подумал про count!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.