Всем привет! В php новичок, прошу сильно не пинать и помочь разобраться с выпадающим списком из БД. Проблема такова: В БД есть большая таблица расписания движения автобусов с id; city (город); way (направление); table(html таблица c расписанием). В файле bus_rasp.php имеющийся скрипт без проблем выводит из БД список с <optgroup> по way и <option> - по city, . Как вывести в <div id="bus_content_rasp"> html таблицу c расписанием из table, в соответствии с выбранным городом? bus_rasp.php Код (Text): <div id="bus_content_up"> <?php include("blocks/db.php"); $string = 'SELECT * FROM city'; $query = mysql_query($string); print '<form name = "bus_rasp" method="post">'; print '<select name ="city" onchange="this.form.submit()">'; $group = array(); while ($row = mysql_fetch_assoc($query)) { $group[$row['way']][] = $row;} foreach ($group as $key => $values) { echo '<optgroup label="'.$key.'">'; foreach ($values as $value) { echo '<option value ="'.$value['id'].'">'.$value['city'].'</option>';} echo "</optgroup>";} print "</select>"; print "</form>"; ?> </div> <div id="bus_content_rasp"> if (isset($_POST['city'])) {$city =$_POST['city'];} echo $city; ________КАК ВЫВЕСТИ ДАННЫЕ ИЗ table ?____ </div>
Re: Большой выпадающий список 1. Раз вы так легко делаете вложенные foreach, интересует: в каком виде хранятся записи? 2. Если таблица большая, не стоит её считывать всю 'SELECT * FROM city', т.к. в будущем может не хватить памяти Выбирайте неободимые поля (например, 'SELECT id,way,city FROM city').
Re: Большой выпадающий список Да я сам пытаюсь разобраться в работе этого скрипта )))). За совет с таблицей - YSandro спасибо. Но все таки как вывести таблицу из table. И еще что нужно в скрипте доработать что бы при выборе города он оставался (как без onchange="this.form.submit())
Re: Большой выпадающий список с <optgroup> Можно сделать, чтобы при перезагрузке оставался выбор, можно не перезагружать страницу вовсе, а подружать данные в нужный элемент. покажите sql запрос построения таблицы, или скриншот или хоть что, чтобы было понятно, как выглядят строки, какие поля есть в таблице.
Re: Большой выпадающий список с <optgroup> В общем получилось у меня так Код (Text): <div id="bus_content_up"> <?php include("blocks/db.php"); $string = 'SELECT id, city, way FROM city'; $query = mysql_query($string); print '<form name = "bus_rasp" method="post">'; print '<select name ="city" onchange="this.form.submit()">'; $group = array(); while ($row = mysql_fetch_assoc($query)) { $group[$row['way']][] = $row;} foreach ($group as $key => $values) { echo '<optgroup label="'.$key.'">'; foreach ($values as $value) { echo '<option value ="'.$value['id'].'">'.$value['city'].'</option>';} echo "</optgroup>";} print "</select>"; print "</form>"; ?> </div> <div id="bus_content_rasp"> <?php if (isset($_POST['city'])) {$city =$_POST['city'];} $resultat = mysql_query("SELECT * FROM city WHERE id=$city",$db); $array = mysql_fetch_array($resultat); echo $array['table']; ?> </div>
Ну хоть так. Во втором запросе требуется только таблица, можно переписать так Код (Text): 'SELECT `table` FROM `city` WHERE `id`='.$city выбираем только столбец "table". Кстати, это зарезервированное имя, потому нужно брать в одинарные обратные кавычки. Важно! Чтобы обезопасить запрос от инъекции, не вставляйте принятые параметры прямо в запрос Код (Text): $city =$_POST['city'] "SELECT * FROM city WHERE id=$city" , лучше так Код (Text): $city=(isset($_POST['city']))?(int)$_POST['city']:0; 'SELECT `table` FROM `city` WHERE `id`='.$city приводя переменную $city к типу int. Добавлено спустя 3 минуты 27 секунд: Ещё, чтобы сохранился выбор города, можно select выводить так Код (PHP): $city=(isset($_GET['city']))?(int)$_GET['city']:0; echo '<select name="city" onchange="this.form.submit()">',"\n"; foreach($group as $key=>$values){ echo '<optgroup label="'.$key.'">',"\n"; foreach($values as $value){ echo sprintf('<option%svalue="%d">%s</option>%s', ($value['id']==$city)?' selected="selected" ':' ',$value['id'],$value['city'],"\n"); } echo '</optgroup>',"\n"; } echo '</select>',"\n";
Re: Большой выпадающий список с <optgroup> Все работает! YSandro - спасибо))))) Код (Text): <div id="bus_content_up"> <?php include("blocks/db.php"); $string = 'SELECT id, city, way FROM city'; $query = mysql_query($string); print '<form name = "bus_rasp" method="post">'; $city=(isset($_POST['city']))?(int)$_POST['city']:0; echo '<select name="city" onchange="this.form.submit()">',"\n"; $group = array(); while ($row = mysql_fetch_assoc($query)) { $group[$row['way']][] = $row;} foreach ($group as $key => $values) { echo '<optgroup label="'.$key.'">',"\n"; foreach ($values as $value) { echo sprintf('<option%svalue="%d">%s</option>%s', ($value['id']==$city)?' selected="selected" ':' ',$value['id'],$value['city'],"\n");} echo "</optgroup>";} echo "</select>"; print "</form>"; ?> </div> <div id="bus_content_rasp"> <?php $city=(isset($_POST['city']))?(int)$_POST['city']:0; $resultat = mysql_query('SELECT `table` FROM `city` WHERE `id`='.$city,$db); $array = mysql_fetch_array($resultat); echo $array['table']; ?> </div>
Уважаемые форумчане, в просторах интернета встретил данный код, но чтобы в нем разобраться не хватила скилла ) Решил его проверить сработал только выпадающий список. PHP: <?php /*Соединяеся с базой и делаем выборку из таблицы*/ mysql_connect("ip", "login", "password"); mysql_select_db("name_db"); $sql = "SELECT * FROM name_table"; $result_select = mysql_query($sql); /*Выпадающий список*/ echo "<select name = ''>"; while($object = mysql_fetch_object($result_select)){ echo "<option value = '$object->column_name' > $object->column_name </option>"; } echo "</select>"; ?>
@BAbl_gun, начни рассказ с того как ты решил его проверить? Вот прям по пунктам распиши свои действия после того как скачал скрипт из интернета.
@BAbl_gun, почти 7 лет прошло, задача решена, и в списке нужен был элемент optgroup, и сейчас я бы чуть получше предложил код. Зачем ты пишешь в эту тему, да ещё без конкретного вопроса?