|
|
|
| Помогите начинающму!
Есть две таблицы:
tab1
id
produkt
- в эту таблицу добавляются клиенты
tab2
id name
1 продукт1
2 продукт2
3 продукт3
- эта таблица должна выводится в выпадающий список.
Внимание вопрос - как сделать, чтоб одно из name , таблицы два (скажим продукт2) из выпадающего списка вносилось при внесении таблицы1. То есть заполняя таблицу1 выбирается из выпадающего списка красное и вносится.
Так же при редактировании в браузере данных из таблицы 1 должна быть возможность отредактировать продукт.
Просто вывести из двух таблиц в браузер данные, как то могу. А с редактированием и выпадающим списокм проблема.
Прошу о помощи! | |
|
|
|
|
|
|
|
для: davidoff_72
(23.08.2014 в 02:14)
| | combobox | |
|
|
|
|
|
|
|
для: davidoff_72
(23.08.2014 в 02:14)
| | По хорошему тут конечно бы выпадающий список вытягивать с сервера по средствам AJAX.
Но можно и на сервере формировать сразу нужный функционал.
разберёмся сначала с выпадающим списком
надеюсь подключаться к БД вы умеете
// выбираем из бд значения для селекта
$query = "SELECT * FROM `tab2`";
$res = mysql_query($query);
$select = '<select>';
while($m = mysql_fetch_assoc($res)){
$select .= '<option value="'.$m['id'].'">'.$m['name'].'</option>';
}
$select .= '</select>';
// переменная $select содержит html код нашего селекта
// теперь выбираем из основной таблицы
$query = "SELECT * FROM `tab1`";
$res = mysql_query($query);
$form = '<form method="POST"'>';
while($m = mysql_fetch_assoc($res)){
$form .='<p>'.$m['produkt'].' '.$select.'</p>';
}
$form .= '</form>';
// выводим форму
echo $form;
|
нет немного ошибся, чуть позже подкорректирую | |
|
|
|
|
|
|
|
для: Valick
(23.08.2014 в 11:19)
| | Спасибо. Да, подключаться к базе данных умею... Выводить информацию из одной таблицы и умею. а вот с выпадающим списокм . увы...
Изучаю то что вы написалию. Жду ваших коррекций . | |
|
|
|
|
|
|
|
для: davidoff_72
(23.08.2014 в 11:40)
| |
<?php
header('Content-Type: text/html; charset=utf-8');
include('connect.php');
if(!empty($_POST)){
print_r($_POST);
foreach($_POST as $k=>$v){
$_POST[$k]=$k.",'".$v."'";
}
$values = implode('),(',$_POST);
// обновляем поле select в таблице tab1
echo $query = "INSERT INTO `tab1` (`id`,`select`) VALUES($values) ON DUPLICATE KEY UPDATE `select`=values(`select`)";
$res = mysql_query($query) or die(mysql_error());
}
// выбираем из бд значения для селекта
$query = "SELECT * FROM `tab2`";
$res = mysql_query($query);
$option = '<option value="null">выбрать</option>';
while($m = mysql_fetch_assoc($res)){
$option .= '<option value="'.$m['name'].'">'.$m['name'].'</option>';
}
// переменная $option содержит html код нашего селекта
// теперь выбираем из основной таблицы
$query = "SELECT * FROM `tab1`";
$res = mysql_query($query);
$form = '<form method="POST">';
while($m = mysql_fetch_assoc($res)){
$form .='<p>'.$m['produkt'].' <select name="'.$m['id'].'">'.$option.'</select></p>';
}
$form .= '<input type="submit" value="Go" />';
$form .= '</form>';
// выводим форму
echo $form;
?>
|
| |
|
|
|
|
|
|
|
для: Valick
(23.08.2014 в 12:24)
| | Большое спасбо! Сажусь разбираться, буду изучать написанное и пользоваться. | |
|
|
|
|
|
|
|
для: Valick
(23.08.2014 в 12:24)
| | Ну что же вы советуете?
<option value="null">выбрать</option>
Этого быть не может, ибо для РНР и JS это строка, а значит не пусто. То есть если требуется проверка на клиенте, то:
<select onchange="if(!this.value) alert(1)">
<option value="null">set null</option>
<option value="1">set 1</option>
</select>
|
работать не будет, и нельзя будет проверить, что выбрано не значащее значение. Опция сообщения "выбрать" должна иметь пустое значение, в крайнем случае 0, хотя в этом случае JS нужны будут лишние телодвижения.
if(!empty($_POST)) - это излишек, достаточно if($_POST) ибо пустой массив возвращает 0.
Вы же прекрасно знаете, что нефильтрованные данные в запрос вставлять нельзя, а тем не менее. Если данные формы, ее ключи и значения это только числа, то какая проблема:
<?
array_walk_recursive($_POST, function(&$v, &$k) {
$v = (int)$v;
$k = (int)$k;
});
|
Либо array_walk для одномерного массива.
Сколько можно гонять циклы, когда сразу можно сформировать строку нужную, есть же array_map(). Да и вообще зачем здесь цикл, если список позволяет выбрать только одно значение? | |
|
|
|
|
|
|
|
для: confirm
(24.08.2014 в 00:06)
| | Спасибо. Я сел разбирать, действительно выдало ошибку. Буду править. Спасибо. | |
|
|
|
|
|
|
|
для: davidoff_72
(24.08.2014 в 00:47)
| | Какую ошибку? Я не писал про ошибки, я о том, что нельзя, и как не стоит делать. | |
|
|
|
|
|
|
|
для: confirm
(24.08.2014 в 01:07)
| | ну если я сразу напишу всё правильно, чем же вам-то заниматься? :)
код вообще теоретический, это даже не код, а каркас, или вектор подходящего направления, чем больше вопросов возникнет у ТС, тем лучше ;)
более того, я уже жду что опять придет одарённый программист и станет мне читать лекцию про mysqli_ или PDO | |
|
|
|
|
|
|
|
для: Valick
(24.08.2014 в 09:23)
| | Да ну, что говорить о PDO.
Если не понимать разницы между нижним и верхним бельем, что из них для верха предназначено, а что исподнее, то какая разница где его хранить, в бельевом шкафу или картонной коробке.
В противном случае, значит есть и представления по использованию и уходу за бельем, а понятие, что шкаф не только удобнее, но и надежнее, придет само. )
Но вот зная, что все значения полей формы, это строки, писать value="null"... Ну кто-то добросовестно это и использует.
<form>
<select required="required">
<option value="">Выберите ...</option>
<option value="1">Выбор 1</option>
<option value="2">Выбор 2</option>
</select>
<button>Send</button>
</form>
|
Только так, ибо по другому браузер не поймет, в таком виде и JS легче будет, если браузер пенсионер. Ну и пока используют картонную коробку, то безопасность всегда важный момент. Да даже и в случая шкафа, зачем же в него предметы не нужные класть. | |
|
|
|
|
|
|
|
для: Valick
(24.08.2014 в 09:23)
| | чем больше ошибок возникнет у тс, тем лучше...гениально. | |
|
|
|
|
|
|
|
для: psychomc
(24.08.2014 в 13:39)
| | читайте внимательно что я написал, и не надо мне приписывать свои "умозаключения" | |
|
|
|
|
|
|
|
для: davidoff_72
(23.08.2014 в 02:14)
| | Вы ничего не путаете?
Как таблица с полями produkt может хранить клиентов?
Как понять таблицу с полем name, которое как раз более подходит к клиентам, но в тоже время содержит продукты? Что продуктов строго по 3? А если более тогда что?
Может я и не прав, так как не понимаю что-то, но такое впечатление, что ваши таблицы из ряда вон, что-то в них не то. | |
|
|
|
|
|
|
|
для: confirm
(23.08.2014 в 11:58)
| | Прошу прощение за введение в недоумение. Таблица1 имеет больше столбцов, вывел только участвующие в обединении таблиц. В таблице2 продуктов может быть больше чем три и названия даны условные. Извините . Если можете помочь , то подскажите. | |
|
|
|
|
|
|
|
для: davidoff_72
(23.08.2014 в 23:04)
| | Значит я не понял, думал что просто перепутаны местами таблицы. | |
|
|
|