Задавайте вопросы, мы ответим
Вы не зашли.
есть селект SELECT DISTINCT post_7 FROM post WHERE post_5='".$x."' order by post_7 asc
а как сделать что бы если post_7 is NULL то искать не в post_7 а сразу в post_8
заранее спасибо!
Неактивен
SELECT DISTINCT IFNULL(post_7,post_8) FROM post WHERE post_5='".$x."' order by 1
Неактивен
IFNULL раздельно?
Неактивен
Нет, слитно, это такая специальная функция: http://dev.mysql.com/doc/refman/5.0/en/ … tions.html
Неактивен
СПАСИБО! выручили!
Неактивен
кстати. а вот "order by 1" - это сортровка по чему? какие поле или словие придерживается в таком случае?
Неактивен
чо та функция перестала работать... вернее форма какая та "пустая" вылазит... никак не пойму в чем дело
function q1(){
$query = "SELECT DISTINCT IFNULL(post_5,post_6) FROM post order by 1";
$result = mysql_query($query);
$text = '<FORM class="form-common" name="q1" action="/hudaev/" method="GET">';
$text .= '<INPUT type="hidden" name="action" value="q2">';
$text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="x">';
$text .= '<OPTION value="Регион не выбран" selected>Выбирите регион</OPTION>';
while($row = mysql_fetch_array($result)){
$text .= '<OPTION value="'.$row["post_5"].'">'.$row["post_5"].'</OPTION>';
}
$text .= '</SELECT>';
$text .= '<INPUT class="page_INPUT" style="FONT: bold 8pt Verdana, Arial; COLOR: #555555" type="submit" value="Показать">';
$text .= '</FORM>';
$text .= print_r($_GET); // для проверки
return $text;
}
как будта бы в $row["post_5"] ничо нету
хоя если выполнять SELECT DISTINCT IFNULL(post_5,post_6) FROM post order by 1 в окошке SQL запроса то все окей...
Отредактированно vladimirov (05.02.2008 17:05:58)
Неактивен
order by 1 - сортировка по первому столбцу.
Сделайте
SELECT DISTINCT IFNULL(post_5,post_6) AS col FROM post order by 1
и
$row['col']
Неактивен
ок. заработало. получилось вот что...
function q1(){
// $query = "SELECT DISTINCT IFNULL(post_5,post_6) FROM post order by 1";
$query = "SELECT DISTINCT IFNULL(post_5,post_6) AS col FROM post order by 1";
$result = mysql_query($query);
$text = '<FORM class="form-common" name="q1" action="/hudaev/" method="GET">';
$text .= '<INPUT type="hidden" name="action" value="q2">';
$text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="x">';
$text .= '<OPTION value="Регион не выбран" selected>Выбирите регион</OPTION>';
while($row = mysql_fetch_array($result)){
$text .= '<OPTION value="'.$row["col"].'">'.$row["col"].'</OPTION>';
}
$text .= '</SELECT>';
$text .= '<INPUT class="page_INPUT" style="FONT: bold 8pt Verdana, Arial; COLOR: #555555" type="submit" value="Показать">';
$text .= '</FORM>';
return $text;
}
результат клика передается на другую функцию... а там уже посложнее
function q2($x){
$x = $_GET["x"];
$query = "SELECT DISTINCT post_7 FROM post WHERE post_5='".$x."' order by post_7 asc";
$result = mysql_query($query);
$text = '<FORM class="form-common" name="q2" action="/hudaev/" method="GET">';
$text .= '<INPUT type="hidden" name="action" value="q3">';
$text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="x">';
$text .= '<OPTION value="'.$x.'" selected>'.$x.'</OPTION>';
$text .= '</SELECT>';
$text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="y">';
$text .= '<OPTION value="Район не выбран" selected>Выбирите район</OPTION>';
while($row = mysql_fetch_array($result)){
$text .= '<OPTION value="'.$row["col"].'">'.$row["col"].'</OPTION>';
}
$text .= '</SELECT>';
$text .= '<INPUT class="page_INPUT" style="FONT: bold 8pt Verdana, Arial; COLOR: #555555" type="submit" value="Показать">';
$text .= '</FORM>';
return $text;
}
опробовал вот это
SELECT DISTINCT post_7 FROM post WHERE post_5='".$x."' order by post_7 asc";
заменить на
SELECT DISTINCT IFNULL(post_7,post_8) AS col FROM post WHERE post_5='".$x."' order by 1
но тут тоже тупик. вроде работает... но точно знаю что неправильно работает...
т.к. WHERE post_5='".$x."' - неправильно будет. откуда там post_5 возмется...
раз уж селект был SELECT DISTINCT IFNULL(post_7,post_8) AS col ...
и потом помоему неправиль использовать только post_5
раз уж в первой функции было SELECT DISTINCT IFNULL(post_5,post_6) AS col ...
пробую яндексовать - но там только простые манипуляции с БД
paulus помогите
я так понял мне надо WHERE post_5='".$x."' переделать во что то типа WHERE post_5 или post_6 равно $x
Отредактированно vladimirov (05.02.2008 19:06:41)
Неактивен
Конструкция вида "IFNULL(c1,c2) AS c3" означает буквально следующее:
"Если c1 является NULL, то выбрать c2 и назвать ее c3, иначе выбрать c1 и назвать ее c3".
Поэтому во втором <option> у Вас не работает - Вы не правильно назвали колонку ("col", а
надо было так, как написано в запросе - "post_7").
Переделать where - в соответствии с правилами английского языка и логики
WHERE post_5="'.$x.'" OR post_6="'.$x.'"
Неактивен