За последние 24 часа нас посетили 163225 программистов и 3024 робота. Сейчас ищут 1584 программиста ...

помогите с выпадающим меню ( select )

Тема в разделе "PHP для новичков", создана пользователем zionko, 20 сен 2009.

  1. zionko

    zionko Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    22
    Симпатии:
    0
    помогите с выпадающим меню ( select )

    HTML:
    1. <SELECT onChange="location.href=this.value" onkeyup="location.href=this.value">
    2. <option value='#' selected>Value 1
    3. <option value='#' >Value 2
    вот такое

    делаю запрос в базу где значение city = 1
    потом проверяю mysql_num_rows() != если = 0 то ничего не выводит
    если есть записи то делаю вывод <option value=' ' >Value 1

    на данный момент у меня 10 запросов в mysql где city = 1 , city = 2 итд.0

    как можно упростить ? такую проверку ?
     
  2. Frozen

    Frozen Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    "select * ... where city!=0"
     
  3. zionko

    zionko Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    22
    Симпатии:
    0
    Frozen

    таким образом я сделаю 10+ запросов в базу

    а я думаю каким то образом можно это решить один или двумя запросами
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    задачу не понял
     
  5. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    [sql]WHERE `City` IN (1, 2, 3, 4, 5)[/sql]
     
  6. zionko

    zionko Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    22
    Симпатии:
    0
    TheShock

    а вывод делать через while ?

    или каким образом ?

    $res[city1] = ?
    $res[city2]
    $res[city3]
    $res[city4]
     
  7. zionko

    zionko Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    22
    Симпатии:
    0
    при выводе он должен дать количество записей или 0 или число записей в поле where city = 1 ?
     
  8. Noobie

    Noobie Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Вам Frozen всё правильно сказал.

    Код (Text):
    1. "select * ... where city!=0"
    Дальше читаете по строчкам mysql_fetch_assoc() и смотрите какой номер содержится в массиве.
     
  9. zionko

    zionko Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    22
    Симпатии:
    0
    PHP:
    1.  
    2. $result_city1 = mysql_query("SELECT * FROM t_city WHERE city='1' ORDER BY time ASC");
    3. if(mysql_num_rows($result_city1) <> "0") { $city1 = "1";}
    4.  
    5. $result_city2 = mysql_query("SELECT * FROM t_city WHERE city='2' ORDER BY time ASC");
    6. if(mysql_num_rows($result_city2) <> "0") { $city2 = "1";}
    7.  
    8. $result_city3 = mysql_query("SELECT * FROM t_city WHERE city='3' ORDER BY time ASC");
    9. if(mysql_num_rows($result_city3) <> "0") { $city3 = "1";}
    Noobie
    каким образом ?
    если у меня отличаются WHERE в каждом запросе ?
     
  10. Frozen

    Frozen Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    задача не ясна, мало данных.
    никто ниче понять не может
     
  11. SDR

    SDR Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    zionko
    хз, тут проще наверно на php посчитать всё, чем 10 запросов в базу делать
    если правильно понял вопрос, то я бы сделал что-то типа:
    Код (Text):
    1.  
    2. $result_cities = mysql_query("SELECT * FROM t_city WHERE city != 0 ORDER BY city");
    3. $last = 0;
    4. while($Row = mysqli_fetch_assoc($result_cities))
    5. {
    6.    if($last != $Row['city']) $last = $Row['city'];
    7.    ${'city'.$last} = 1;
    8. }
    или даже (если никакие данные потом не нужны)
    Код (Text):
    1.  
    2. $result_cities = mysql_query("SELECT DISTINCT city FROM t_city WHERE city != 0");
    3. while($Row = mysqli_fetch_assoc($result_cities)) ${'city'.$Row['city'} = 1;
    можно ещё наделать 10 джойнов и получить 10 значений из базы - но это имхо извращение :D
     
  12. zionko

    zionko Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    22
    Симпатии:
    0
    Frozen

    HTML:
    1.  <SELECT onChange="location.href=this.value" onkeyup="location.href=this.value">
    2.  </select>
    3.  
    делаю вот такое меню

    PHP:
    1.  $result_city1 = mysql_query("SELECT * FROM t_city WHERE city='1' ORDER BY time ASC");
    2.  if(mysql_num_rows($result_city1) <> "0") { $city1 = "1";}
    3.  
    4.  $result_city2 = mysql_query("SELECT * FROM t_city WHERE city='2' ORDER BY time ASC");
    5.  if(mysql_num_rows($result_city2) <> "0") { $city2 = "1";}
    6.  
    7.  $result_city3 = mysql_query("SELECT * FROM t_city WHERE city='3' ORDER BY time ASC");
    8.  if(mysql_num_rows($result_city3) <> "0") { $city3 = "1";}

    потом делаю вывод
    PHP:
    1.  
    2. if ( $city1 == "1" ) { $m1 = "<option value='#' >city 1"; }
    3. if ( $city1 == "2" ) { $m2 = "<option value='#' >city 2"; }
    4. if ( $city1 == "3" ) { $m3 = "<option value='#' >city 3"; }
    5.  
    HTML:
    1. <SELECT onChange="location.href=this.value" onkeyup="location.href=this.value">
    2. <?php
    3. echo $m1;
    4. echo $m2;
    5. echo $m3;
    6. ?>
    7.  </select>
    то-есть есть есть хоть какие записи в базе то он будет показывать в меню строку
     
  13. Noobie

    Noobie Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Зачем делать 10 запросов и городить каждый option отдельной строкой?
    Заберите все данные одним запросом и циклом проверяйте.
     
  14. SDR

    SDR Активный пользователь

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    zionko
    смари мой пример