ФорумПрограммированиеPHP для идиотов → требуется помощ по SELECT DISTINCT

требуется помощ по SELECT DISTINCT

  • vladimirov

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 3 февраля 2008 г. 7:16

    я хочу сделать выпадающее меню
    опшины таскать с БД в итоге
    я хочу поочереди вытащить три поля типа селект. пошагово.
    "регион", "район", "деревня"

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

    написал вот кое что… но… чо та нашет. сам я в тупике…

    function select($x,$y,$z){
       if(!isset($_GET['х'])){
         $query = "SELECT DISTINCT post_5 FROM post order by post_5 asc";
           $result = mysql_query($query);
           $text = '<FORM name=select action=/post/?action=select method=GET>';
           $text .= '<INPUT type="hidden" name=action value="select">';
           $text .= '<SELECT class=page_INPUT style="WIDTH: 100%" name=x>';
           if(!isset($_GET['х'])){
               $text .= '<OPTION value='.$x.' selected>'.$x.'</OPTION>';
           }else{
           $text .= '<OPTION value=0 selected>Выбирите регион</OPTION>';
           }
               while($row = mysql_fetch_array($result)){
               $text .= '<OPTION value='.$row["post_5"].'>'.$row["post_5"].'</OPTION>';
               }
           $text .= '<INPUT type="hidden" name=y value="noselected">';
           $text .= '<INPUT type="hidden" name=z value="noselected">';
       }elseif(!isset($_GET['x'],$_GET['y'])){
         $x = $_GET['x'];
         $y = $_GET['y'];
           $query = "SELECT DISTINCT post_7 FROM post WHERE post_5='$x' order by post_7 asc";
           $result = mysql_query($query);
           $text = '<FORM name=select action=/post/?action=select method=GET>';
           $text .= '<INPUT type="hidden" name=action value="select">';
           $text .= '<SELECT class=page_INPUT style="WIDTH: 100%" name=x>';
           $text .= '<OPTION value=0 selected>'.$x.'</OPTION>';
           $text .= '</SELECT>';
           $text .= '<SELECT class=page_INPUT style="WIDTH: 100%" name=y>';
           $text .= '<OPTION value=0 selected>Выбирите район</OPTION>';
               while($row = mysql_fetch_array($result)){
               $text .= '<OPTION value='.$row["post_7"].'>'.$row["post_7"].'</OPTION>';
               }
           $text .= '<INPUT type="hidden" name=z value="noselected">';
       }elseif(!isset($_GET['x'],$_GET['y'],$_GET['z'])){
         $x = $_GET['x'];
         $y = $_GET['y'];
         $z = $_GET['z'];
           $query = "SELECT DISTINCT post_8 FROM post WHERE post_5='$x', post_7='$y' order by post_8 asc";
           $result = mysql_query($query);
           $text = '<FORM name=select action=/post/?action=select method=GET>';
           $text .= '<INPUT type="hidden" name=action value="select">';
           $text .= '<OPTION value=0 selected>Выберите деревню</OPTION>';
               while($row = mysql_fetch_array($result)){
               $text .= '<OPTION value='.$row["post_8"].'>'.$row["post_8"].'</OPTION>';
               }
       }
           $text .= '</SELECT>';
           $text .= '<INPUT class=page_INPUT style="FONT: bold 8pt Verdana, Arial; COLOR: #555555" type="submit" value=Показать>';
           $text .= '</FORM>';
       return $text;
    }


    сейчас первая ифка пашет, но…
    но если переменная Х например равно "АЛТАЙСКИЙ КРАЙ", то после нажатия кнопки возвращается только значинеи "АЛТАЙСКИЙ"

  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 3 февраля 2008 г. 7:35, спустя 18 минут 19 секунд


    но если переменная Х например равно "АЛТАЙСКИЙ КРАЙ", то после нажатия кнопки возвращается только значинеи "АЛТАЙСКИЙ"
    А полученный в результате работы скрипта HTML не пробовал смотреть? Очень, очень полезно для таких случаев, хотя бы для того, чтоб почувстовать разницу между "не возвращается" и "не отображается"
  • vladimirov

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 3 февраля 2008 г. 7:42, спустя 6 минут 51 секунду

    да. увы - пробовал. могу и вам показать)

    <FORM name=select action=/post/?action=select method=GET>

    <INPUT type="hidden" name=action value="select">
    <SELECT class=page_INPUT style="WIDTH: 100%" name=x>
    <OPTION value=АЛТАЙСКИЙ selected>АЛТАЙСКИЙ</OPTION>
    <OPTION value=АДЫГЕЯ РЕСПУБЛИКА>АДЫГЕЯ РЕСПУБЛИКА</OPTION>
    <OPTION value=АЛТАЙ РЕСПУБЛИКА>АЛТАЙ РЕСПУБЛИКА</OPTION>
    <OPTION value=АЛТАЙСКИЙ КРАЙ>АЛТАЙСКИЙ КРАЙ</OPTION>
    <OPTION value=АМУРСКАЯ ОБЛАСТЬ>АМУРСКАЯ ОБЛАСТЬ</OPTION>
    <OPTION value=АРХАНГЕЛЬСКАЯ ОБЛАСТЬ>АРХАНГЕЛЬСКАЯ ОБЛАСТЬ</OPTION>

    etc

    так что - невозвращается!!!
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 3 февраля 2008 г. 9:18, спустя 1 час 36 минут 51 секунду


    да. увы - пробовал.
    Плохо пробовал. Пробуем еще раз. Даю намек. Чему по твоему, равно значение value в этом фрагменте:

    <OPTION value=АДЫГЕЯ РЕСПУБЛИКА>

  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 3 февраля 2008 г. 9:23, спустя 4 минуты 25 секунд

    vladimirov, кавычки… кавычки… HTML выучить надо сначала
    все умрут, а я изумруд
  • vladimirov

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 3 февраля 2008 г. 11:36, спустя 2 часа 12 минут 52 секунды

    вахаха. спасибо! чо та с кавычками протупил)
    этот момент исправил. теперь значение из двух и более слов разделенных пробелами - появляется как есть…

    функция от этого не заработала=(

    подскажите пожалуйста где я ошибся

    function select($x,$y,$z){
    if (!isset($_GET['х'])){
     $x = $_GET['x'];
     $y = $_GET['y'];
     $z = $_GET['z'];
     $query = "SELECT DISTINCT post_5 FROM post order by post_5 asc";
           $result = mysql_query($query);
           $text = '<FORM name="select" action="/post/?action=select" method="GET">';
           $text .= '<INPUT type="hidden" name="action" value="select">';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="x">';
    if(!isset($_GET['х'])){
            $text .= '<OPTION value="'.$x.'" selected>'.$x.'</OPTION>';
    }else{
    $text .= '<OPTION value="0" selected>Выбирите регион</OPTION>';
    }
               while($row = mysql_fetch_array($result)){
               $text .= '<OPTION value="'.$row["post_5"].'">'.$row["post_5"].'</OPTION>';
               }
           $text .= '<INPUT type="hidden" name="y" value="noselected">';
           $text .= '<INPUT type="hidden" name="z" value="noselected">';
    }elseif (!isset($_GET['y'])){
     $x = $_GET['x'];
     $y = $_GET['y'];
     $z = $_GET['z'];
           $query = "SELECT DISTINCT post_7 FROM post WHERE post_5='.$x.' order by post_7 asc";
           $result = mysql_query($query);
           $text = '<FORM name="select" action="/post/?action=select" method="GET">';
           $text .= '<INPUT type="hidden" name="action" value="select">';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="x">';
           $text .= '<OPTION value="0" "selected">'.$x.'</OPTION>';
           $text .= '</SELECT>';
           $text .= '<SELECT class=page_INPUT style="WIDTH: 100%" name="y">';
    if(!isset($_GET['y'])){
            $text .= '<OPTION value="'.$y.'" selected>'.$y.'</OPTION>';
    }else{
               $text .= '<OPTION value="0" "selected">Выбирите район</OPTION>';
               }
               while($row = mysql_fetch_array($result)){
               $text .= '<OPTION value="'.$row["post_7"].'">'.$row["post_7"].'</OPTION>';
               }
           $text .= '<INPUT type="hidden" name="z" value="noselected">';
    }elseif (!isset($_GET['x'],$_GET['y'],$_GET['z'])){
     $x = $_GET['x'];
     $y = $_GET['y'];
     $z = $_GET['z'];
           $query = "SELECT DISTINCT post_8 FROM post WHERE post_5='.$x.', post_7='.$y.' order by post_8 asc";
           $result = mysql_query($query);
           $text = '<FORM name="select" action="/post/?action=select" method="GET">';
           $text .= '<INPUT type="hidden" name="action" value="select">';
           $text .= '<OPTION value="0" "selected">Выберите деревню</OPTION>';
               while($row = mysql_fetch_array($result)){
               $text .= '<OPTION value="'.$row["post_8"].'">'.$row["post_8"].'</OPTION>';
               }
    }
           $text .= '</SELECT>';
           $text .= '<INPUT class="page_INPUT" style="FONT: bold 8pt Verdana, Arial; COLOR: #555555" type="submit" value="Показать">';
           $text .= '</FORM>';
       return $text;
    }


    Спасибо заранее!
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 3 февраля 2008 г. 11:37, спустя 1 минуту 41 секунду

    оформляйте код тэгами
    что должна делать функция? что она делает сейчас?
    все умрут, а я изумруд
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 3 февраля 2008 г. 16:45, спустя 5 часов 7 минут 23 секунды


    vladimirov, кавычки… кавычки…
    Ну что же вы, друзья мои, постоянно лишаете людей удовольствия найти ошибку самостоятельно. :)

    vladimirov, если ты пишешь "не заработала", то как минимум неплохо бы написать, в чем именно это выражается и какой результат преполагался.

  • vladimirov

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2008 г. 1:06, спустя 8 часов 20 минут 50 секунд

    короче я пытаюсь сделать выпадающее меню типа селект

    сначала выходит одно. выбираю. жму ок.
    выходит уже два. первый из них неактивен

    $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="y">';
    $text .= '<OPTION value="0" "selected">'.$x.'</OPTION>';
    $text .= '</SELECT>';


    а второй (тот который тока что появился под первым) - активный. а там выпадающий список.

    от одной большой функции отказался. сделал три отдельных. маленьких.


    function q1(){
     $query = "SELECT DISTINCT post_5 FROM post order by post_5 asc";
           $result = mysql_query($query);
           $text = '<FORM name="q1" action="/post/?action=q2" method="GET">';
           $text .= '<INPUT type="hidden" name="action" value="q2">';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="x">';
    $text .= '<OPTION value="0" 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;
    }

    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 name="q2" action="/post/?action=q3" method="GET">';
           $text .= '<INPUT type="hidden" name="action" value="q3">';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="y">';
           $text .= '<OPTION value="0" "selected">'.$x.'</OPTION>';
           $text .= '</SELECT>';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="y">';
    $text .= '<OPTION value="0" selected>Выбирите район</OPTION>';
               while($row = mysql_fetch_array($result)){
               $text .= '<OPTION value="'.$row["post_7"].'">'.$row["post_7"].'</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;
    }


    третью пока не привожу т.к. вторая не работает.

    по первой функции все окей. создается меню типа селект. а там выпадающий список
    выбираю. жму ок.
    появлется как и задумано неактивное меню 1 и под ним активное меню 2 но…
    а меню 2 нету выпадающего списка.

    помоему во втророй функии в селекте чо та попутал. опять кавычки?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 4 февраля 2008 г. 1:32, спустя 26 минут 20 секунд

     $query = "SELECT DISTINCT post_7 FROM post WHERE post_5='.$x.' order by post_7 asc";

    надо:
     $query = "SELECT DISTINCT post_7 FROM post WHERE post_5=".$x." order by post_7 asc";





    $text .= '<OPTION value="0" "selected">'.$x.'</OPTION>';

    надо:
    $text .= '<OPTION value="0" selected>'.$x.'</OPTION>';

    а еще лучше:
    $text .= '<OPTION value="0" selected="selected">'.$x.'</OPTION>';

    или:
    $text .= '<OPTION value="0" selected="true">'.$x.'</OPTION>';


    P.S. Смотрел только ф-ию 2
    adw/0
  • vladimirov

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2008 г. 1:56, спустя 24 минуты 19 секунд

    adw0rd, спасибо. поправил.

    код теперь вот такой:

    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 name="q2" action="/post/?action=q3" method="GET">';
           $text .= '<INPUT type="hidden" name="action" value="q3">';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="y">';
           $text .= '<OPTION value="0" selected>'.$x.'</OPTION>';
           $text .= '</SELECT>';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="y">';
           $text .= '<OPTION value="0" selected>Выбирите район</OPTION>';
               while($row = mysql_fetch_array($result)){
           $text .= '<OPTION value="'.$row["post_7"].'">'.$row["post_7"].'</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;
    }


    но в браузер вываливается ошибка Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\192.168.0.2\www\post\function.php on line 31

    а на 31 строке у меня  while($row = mysql_fetch_array($result)){
    даже не знаю что делать. подскажи пожалуйста
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 4 февраля 2008 г. 2:04, спустя 7 минут 27 секунд

    Это значит что запрос ничего не вернул. Проблема скорее всего в запросе. Проверяй на правильность и верность вводимых данных.
    from TRIAL with LOVE
  • vladimirov

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2008 г. 2:49, спустя 45 минут 43 секунды

    да. точно. опять кавычки)))

    все заработало! спасибо всем!!

    function q1(){
     $query = "SELECT DISTINCT post_5 FROM post order by post_5 asc";
           $result = mysql_query($query);
           $text = '<FORM name="q1" action="/post/?action=q2" method="GET">';
           $text .= '<INPUT type="hidden" name="action" value="q2">';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="x">';
           $text .= '<OPTION value="0" 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>';
       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 name="q2" action="/post/?action=q3" 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="0" selected>Выбирите район</OPTION>';
               while($row = mysql_fetch_array($result)){
           $text .= '<OPTION value="'.$row["post_7"].'">'.$row["post_7"].'</OPTION>';
               }
           $text .= '</SELECT>';
           $text .= '<INPUT class="page_INPUT" style="FONT: bold 8pt Verdana, Arial; COLOR: #555555" type="submit" value="Показать">';
           $text .= '</FORM>';
       return $text;
    }

    function q3($x,$y){
     $x = $_GET["x"];
     $y = $_GET["y"];
     $query = "SELECT DISTINCT post_8 FROM post WHERE post_5='".$x."' and post_7='".$y."' order by post_8 asc";
           $result = mysql_query($query);
           $text = '<FORM name="q3" action="/post/?action=search" method="GET">';
           $text .= '<INPUT type="hidden" name="action" value="qwerty">';
           $text .= '<INPUT type="hidden" value="'.$x.'">';
           $text .= '<INPUT type="hidden" value="'.$y.'">';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="x">';
           $text .= '<OPTION selected>'.$x.'</OPTION>';
           $text .= '</SELECT>';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="y">';
           $text .= '<OPTION selected>'.$y.'</OPTION>';
           $text .= '</SELECT>';
           $text .= '<SELECT class="page_INPUT" style="WIDTH: 100%" name="z">';
           $text .= '<OPTION value="0" selected>Выберите населенный пункт</OPTION>';
               while($row = mysql_fetch_array($result)){
           $text .= '<OPTION value="'.$row["post_8"].'">'.$row["post_8"].'</OPTION>';
               }
           $text .= '</SELECT>';
           $text .= '<INPUT type="hidden" value="'.$row["post_1"].'">';
           $text .= '<INPUT class="page_INPUT" style="FONT: bold 8pt Verdana, Arial; COLOR: #555555" type="submit" value="Показать">';
           $text .= '</FORM>';
       return $text;
    }


    но в последней функции мне надо выдернуть еще и $row["post_1"]
    но если у меня селект с конструкцией DISTINCT - как мне быть?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 4 февраля 2008 г. 2:58, спустя 9 минут 6 секунд


    но в последней функции мне надо выдернуть еще и $row["post_1"]
    но если у меня селект с конструкцией DISTINCT - как мне быть?

    Так и быть. А что конкретно мешает тебе это сделать?
    adw/0
  • vladimirov

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2008 г. 3:20, спустя 21 минуту 33 секунды

    ну у меня ж селект вот такой SELECT DISTINCT post_8 FROM post WHERE post_5='".$x."' and post_7='".$y."' order by post_8 asc

    пробовал дописать туда SELECT DISTINCT post_8 post_1 FROM post
    но - не вышло

Пожалуйста, авторизуйтесь, чтобы написать комментарий!