1

Тема: помогите с обработчиком $_POST

Приветствую! Есть база в ней таблица `phpbb_calendar_events` туда добавил 2 поля stran и id_str.  В форме есть выпадающий список стран загружается из базы. Нужно чтобы выбранной стране в поле селект выводился список запесей с данной страной. Сделал такой запрос

<?php
if (!$_POST['submitted'])
?>

<form name='input' method="post" id="searchform" action='http://localhost:8888/forum/form1.php'>

<select  class='input' type='select' name='str'>
 
<?php $sql = mysql_query("SELECT stran FROM  `phpbb_calendar_events` ");?>
    <option value='' disabled selected='selected'>Выберите страну</option>
    <?php while($row = mysql_fetch_assoc($sql))
{
    echo     '<option value="">'. $row['stran'] .'</option>';
}

 $sql = mysql_query("SELECT id_str, stran, event_subject, event_body FROM  `phpbb_calendar_events` 
WHERE id_str=0 AND str=$_POST['str'] AND event_subject IN 
(SELECT event_subject FROM `phpbb_calendar_events` WHERE stran=event_subject OR event_subject=event_body)");
    
     while($row = mysql_fetch_assoc($sql))
{
    echo     '<option value="'. $row['str'] .' ">""</option>';
}

if (isset($_POST['str'])) {$country1=$_POST['str'];}
echo "".$country1."<br/>";

?>
 </select>
 
 <input type="submit" id="searchsubmit" name="submitted" value="найти" />

</form>

Зарание спасибо.

2

Re: помогите с обработчиком $_POST

Не смог разобраться в вашем коде. Вижу два запроса, с помощью которых формируется список, но судя по задаче, списка должно быть два? Попробуйте упростить формулировку задачи.

3

Re: помогите с обработчиком $_POST

Мне нужно чтобы из select списка выводимого из базы стран, по  выбранной стране второй запрос выводил результат.
P. S. Первый запрос выводит в поле select список стран, второй с помощью переменной $_POST подразумевает вывод данных соответствующих запросу. Спасибо.

4

Re: помогите с обработчиком $_POST

Если первый список формируется правильно, то второй необходимо формировать в зависимости от значения переменной $_POST['str'].

if (!empty($_POST['str'])) {
  $sql = mysql_query("SELECT id_str, stran, event_subject, event_body FROM  `phpbb_calendar_events` 
WHERE id_str=0 AND str='" . $_POST['str'] . "' AND event_subject IN 
(SELECT event_subject FROM `phpbb_calendar_events` WHERE stran=event_subject OR event_subject=event_body)");
}

SQL запрос проверьте в phpMyAdmin подставив соответствующее значение.

Чтобы при выборе первого списка перезагружалась страница, необходимо отловить событие onchange.

<select  class='input' type='select' name='str' onchange="javascript:this.form.submit();">

5

Re: помогите с обработчиком $_POST

Выпадающий список работает выводит данные, второй запрос в PHPMyAdmin срабатывает, выводит нужные данные. При выборе страны и щелчке по кнопки найти отправляет на пустую страницу, тоесть не чего не выводит. Вот что получилось.

<?php

if (!$_POST['submitted'])
?>

<form name='input' method="post" id="searchform" action='http://localhost:8888/forum/form1.php'>


<select  class='input' type='select' name='str' onchange="javascript:this.form1.submit();">

 
<?php $sql = mysql_query("SELECT stran FROM  `phpbb_calendar_events` ");?>
    <option value='' disabled selected='selected'>Выберите страну</option>
    <?php while($row = mysql_fetch_assoc($sql))
{
    
    echo     '<option value="">'. $row['stran'] .'</option>';
}
 if (!empty($_POST['str'])) {
  $sql = mysql_query("SELECT id_str, stran, event_subject, event_body FROM  `phpbb_calendar_events` 
WHERE id_str=0 AND str='" . $_POST['str'] . "' AND event_subject IN 
(SELECT event_subject FROM `phpbb_calendar_events` WHERE stran=event_subject OR event_subject=event_body)");
}
     while($row = mysql_fetch_assoc($sql))
{
    echo     '<option value="'. $row['event_subject'] .' '. $row['event_body'] .'">""</option>';
}



if (isset($_POST['str'])) {$country1=$_POST['str'];}
echo "".$country1."<br/>";

?>
 </select>
 
 <input type="submit" id="searchsubmit" name="submitted" value="найти" />
    
</form>

Заранее спасибо

6

Re: помогите с обработчиком $_POST

Цикл необходимо вложить внутрь условия.

if (!empty($_POST['str'])) {
  $sql = mysql_query("SELECT id_str, stran, event_subject, event_body FROM  `phpbb_calendar_events` 
WHERE id_str=0 AND str='" . $_POST['str'] . "' AND event_subject IN 
(SELECT event_subject FROM `phpbb_calendar_events` WHERE stran=event_subject OR event_subject=event_body)");
     while($row = mysql_fetch_assoc($sql))
  {
    echo     '<option value="'. $row['event_subject'] .' '. $row['event_body'] .'">""</option>';
  }
}

onchange="javascript:this.form1.submit();" - здесь должен быть form, а не form1.

И все-таки не понимаю почему у вас только один тег select, если списка должно быть два? Если это ошибка, то поправьте.

7 (изменено: tstas, 2011-06-30 23:21:33)

Re: помогите с обработчиком $_POST

Спасибо Hanut! Цыкл вставил внутрь условия, но результата не кокого. Первый запрос формирует список (один единственный)  из 244 стран, к примеру "Англия" этой стране соответствуют ряд записей в 'event_subject' и 'event_body'. При помощи переменной $_POST['str'] мне нужно во втором запросе вывести в файле form1 результат соответствия. Допустим пользователь в списке выбрал Англия и нажал выбрать, то на новой странице должен появиться  результат всех записей соответствующий Англии.
Возможно в коде не задана изначально переменная $_POST['str'].
Код файла form1

//Устанавливаем кодировку UTF8  
        mysql_query ("SET NAMES utf8");
        mysql_query ("set character_set_client='utf8'");
        mysql_query ("set character_set_results='utf8'");
        mysql_query ("set collation_connection='utf8_general_ci'");
     
if (isset($_POST['str'])) {$country1=$_POST['str'];}

echo "".$country1."<br/>";

Делается все на платформе WordPress
Заранее спасибо.
P.S. onchange="javascript:this.form1.submit();" исправил.

8

Re: помогите с обработчиком $_POST

Кажется понял. Обратите внимание на эту строку:
echo     '<option value="">'. $row['stran'] .'</option>';
Значение параметра value будет везде пустым, поэтому в $_POST['str'] всегда пусто.

Должно быть наверное как-то так:
echo     '<option value="'. $row['stran'] .'">'. $row['stran'] .'</option>';

9

Re: помогите с обработчиком $_POST

Совсем запутался, пришел к первоначальным вариантам. В выпадающем списке после подстановки в значение value $row['stran'] выводит в выпадающем списке не только список 244 стран, но и то что заполнено в базе на эти страны. К примеру на Англию есть 3 записи, выводит список 244 стран и в конце три Англии при нажатии в конце списка на одну из Англий выдает то что нужно, а из списка по алфавиту просто название страны. Код пришлось подредактировать  столбца str в таблице нет и поэтому переменную переименовад на stran. Вот что получилось:

<?php

if (!$_POST['submitted'])
?>

<form name='input' method="post" id="searchform" action='http://localhost:8888/forum/form1.php'>


<select  class='input' type='select' name='stran' onchange="javascript:this.form.submit();">

 
<?php $sql = mysql_query("SELECT stran, event_subject, event_body FROM  `phpbb_calendar_events` ");?>
    <option value='stran' disabled selected='selected'>Выберите страну</option>
    <?php while($row = mysql_fetch_assoc($sql))
{
    $stran=$row['stran'];
    echo     '<option value="'. $row['stran'] .' '. $row['event_subject'] .' '. $row['event_body'] .'">'. $row['stran'] .'</option>';
}

?>

<?php
 if (!empty($_POST['stran'])) {
  $sql = mysql_query("SELECT id_str, stran, event_subject, event_body FROM  `phpbb_calendar_events` 
WHERE id_str=0 AND $stran='" . $_POST['stran'] . "' AND event_subject IN 
(SELECT event_subject FROM `phpbb_calendar_events` WHERE stran=event_subject OR event_subject=event_body)");

     while($row = mysql_fetch_assoc($sql))
{
    echo     '<option value="'. $row['event_subject'] .' '. $row['event_body'] .'">""</option>';
}

}
    

if (isset($_POST['stran'])) {$country1=$_POST['stran'];}
echo "".$country1."<br/>";

?>

 </select>

 <input type="submit" id="searchsubmit" name="submitted" value="найти" />

</form>

P.S. Планируется информационный сайт описания путешествий с возможностью поиска попутчиков. На платформе WordPress статический с блогом и форумом. Выборка примерно такая http://hello.awd.ru/index.php?mode=2 РЕШЕНИЕ ВОПРОСА ГОТОВ ОПЛАТИТЬ.

10

Re: помогите с обработчиком $_POST

С кодом мне уже сложно помочь, это надо брать структуру таблиц и писать код с самого начала.

Если у вас уже сделана регистрация посетителей и запись о их путешествиях, то выборку сделать не очень сложно, с этим я могу помочь. Если ничего еще нет, то лучше поищите программиста на фрилансе, например. Работа не сложная, но требует грамотно составленного тех-задания и времени.