Вывести в переменные значения двух выпадающих списков

Lyahasik

Новичок
Добрый день.
Реализовал присваивание значения выпадающего списка переменной через $_POST. Все было хорошо пока не стал присваивать значение 2го выпадающего списка другую переменную. Первая форма выводит данные таблицы из БД, а вторая группирует повторяющиеся поля т.к. много повторений.
Вот собственно и код:

<?php
echo '<form method="post">';
echo '<select name="table" size="1" >';
echo '<option selected="selected" value="second">Таблица</option>';
echo '<option value="kitchen"> Кухни </option>';
echo '<option value="living"> Гостиные </option>';
echo '<option value="furniture"> Мягкая мебель </option>';
echo '<option value="children"> Детские </option>';
echo '<option value="bedrooms"> Спальни </option>';
echo '<option value="antechambers"> Прихожие </option>';
echo '<option value="tables"> Компьютерные столы </option>';
echo '<option value="cabinets"> Шкафы </option>';
echo '<option value="interior"> Интерьер </option>';
echo '</select>';
echo '<input type="submit" value="Выбрать" />';
echo '</form>';

if ($_POST['table']=='kitchen') $table=$_POST['table'];
if ($_POST['table']=='living') $table=$_POST['table'];
if ($_POST['table']=='furniture') $table=$_POST['table'];
if ($_POST['table']=='children') $table=$_POST['table'];
if ($_POST['table']=='bedrooms') $table=$_POST['table'];
if ($_POST['table']=='antechambers') $table=$_POST['table'];
if ($_POST['table']=='tables') $table=$_POST['table'];
if ($_POST['table']=='cabinets') $table=$_POST['table'];

$stable=$_POST['table'];
if(isset($stable))
{
$qr_result1 = mysql_query("select * from " . $table)
or die(mysql_error());
}
?>

Первую форму сделал статичной ибо не знаю возможно ли присвоить переменной перечень названий таблиц не создавая для этого доп. таблицу. Вторая форма уже зависит от значения первой переменной и массивом выводит информацию из столбца с группами товаров.

<?php
echo '<form method="post">';
echo '<select name="group" size="1">';
echo '<option selected="selected" value="second">Группа</option>';
$result2 = mysql_query("SELECT `groups` FROM " . $table . " GROUP BY `groups` ");
while($myrow = mysql_fetch_array($result2)) {
echo "<option value=" . $myrow['groups'] . ">" . $myrow['groups'] . "</option>";
}
echo '</select>';
echo '<input type="submit" value="Выбрать" />';
echo '</form>';

$sgroup=$_POST['group'];
if(isset($sgroup))
{
$qr_result1 = mysql_query("select * from " . $table . " WHERE `groups`='$group'")
or die(mysql_error());
}
?>

Как я понял не получается т.к. $_POST меняется по нажатию кнопки на 2ой форме и $_POST['table'] становится пустым. Можно приравнять переменную как нить так чтобы она 1 раз задалась и потом не зависела от значения $_POST['table']?
После этого планирую изменять выведенную инфу с последующим изменением записи в БД, но это в случае если получится переменные с форм брать нормально.
 

Vano

Новичок
$_POST Запрос используется (в общем говоря) чтобы что-то запостить. Зарегатся, залогиниться(всмысле пароль нельзя по ссылке кидать), запостить тему, комент и тд. $_GET запрос используеться чтобы что-то "взять" - взять страницу, взять профиль пользователя, по user_id, взять товар по tovar_id, найти все товары по group, потом эту ссылку можна скинуть другану чтобы тот заценил товар.
 

С.

Продвинутый новичок
Как я понял не получается т.к. $_POST меняется по нажатию кнопки на 2ой форме и $_POST['table'] становится пустым. Можно приравнять переменную как нить так чтобы она 1 раз задалась и потом не зависела от значения $_POST['table']?
Для начала пойми, что две твои формы, это две разные программы, запускаемые в разное время. Когда старует вторая, первая уже закончилась,, забыта и быльем поросла.

В принципе есть специальные механизмы, как передавать сохраненные данные между такими программами. В твоем случае лучше всего использовать передачу параметров в URL..
 

Lyahasik

Новичок
Спасибо за разъяснение, с $_GET по правде работает. Не хотел его использовать т.к. меняется адрес в адресной строке, но просто не знал принципа этих запросов.
Не могли бы подсказать как визуальное изменение адреса убрать?
 

С.

Продвинутый новичок
Можно и в $_POST передавать. Но изменение адреса в строке совсем не страшно и не постыдно. Даже наоборот однозначно показывает, что это второй этап формы.
 

Lyahasik

Новичок
Можно и в $_POST передавать. Но изменение адреса в строке совсем не страшно и не постыдно. Даже наоборот однозначно показывает, что это второй этап формы.
А как в $_POST передавать? по разному пытался - не получалось, после нажатия кнопки 2ой формы у меня сбрасывалось значение у переменной. Можно сказать что у меня бзик на то что адрес меняется>_<
 

Vano

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

'<input type="hidden" name="table" value="' , isset($_POST['table']) ? $_POST['table'] : null , '" />';
в форму влепи.

А что ты делаеш? всмысле зачем? учишся?
 

Lyahasik

Новичок
Не стоит его убирать, он на то и нужен, чтобы можна было поделиться ссылкой или сохранить себе.
Да и походу нельзя так.
Ну просто в админке происходит только изменение и занесение данных в БД. Делиться с ссылкой нету смысла. А точно никак? Ведь в cms как то меняется текст адресной строки, точнее вызываемой страницы или как то так.

'<input type="hidden" name="table" value="' , isset($_POST['table']) ? $_POST['table'] : null , '" />';
в форму влепи.
Не понял для чего это невидимое поле, как я понимаю при изменении его значение становить пустым, или я что то не так понял?

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

С.

Продвинутый новичок
Ты занимаешься ерундой. Надо трезво оценивать свои возможности. Сделать недомагазин и и тем более магазин у тебя не получится. Самое лучшее в твоем случаея взять готовую магазинную CMS, заполнить данными (хоть вручную!) и отключить платежи для начала.
 

Vano

Новичок
Влепи в нижнюю форму, для начала посмотри открыто (type text), потом можеш спрятать '<input type="text" name="table" value="' , isset($_POST['table']) ? $_POST['table'] : null , '" />';
 
Сверху