Athlete
6.08.2009 - 06:39
Всем привет! Подскажите, что должен возвращать 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 написал(а):
С
использованием класса
отсюда будет такой код:
JSPHP |
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) == '').... Причина - ответ может состоять из пробелов. Указанной функцией все лишние пробелы будут отрезаны.
А лучше вообще запрос переделать
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 написал(а):
Спасибо! Это именно то, что надо, не подумал про count!