Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Связь двух таблиц и выпадающий список php mysql
 
 автор: davidoff_72   (23.08.2014 в 02:14)   письмо автору
 
 

Помогите начинающму!

Есть две таблицы:

tab1
id
produkt
- в эту таблицу добавляются клиенты

tab2
id name
1 продукт1
2 продукт2
3 продукт3
- эта таблица должна выводится в выпадающий список.

Внимание вопрос - как сделать, чтоб одно из name , таблицы два (скажим продукт2) из выпадающего списка вносилось при внесении таблицы1. То есть заполняя таблицу1 выбирается из выпадающего списка красное и вносится.
Так же при редактировании в браузере данных из таблицы 1 должна быть возможность отредактировать продукт.

Просто вывести из двух таблиц в браузер данные, как то могу. А с редактированием и выпадающим списокм проблема.
Прошу о помощи!

  Ответить  
 
 автор: elenaki   (23.08.2014 в 08:20)   письмо автору
 
   для: davidoff_72   (23.08.2014 в 02:14)
 

combobox

  Ответить  
 
 автор: Valick   (23.08.2014 в 11:19)   письмо автору
 
   для: 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;

нет немного ошибся, чуть позже подкорректирую

  Ответить  
 
 автор: davidoff_72   (23.08.2014 в 11:40)   письмо автору
 
   для: Valick   (23.08.2014 в 11:19)
 

Спасибо. Да, подключаться к базе данных умею... Выводить информацию из одной таблицы и умею. а вот с выпадающим списокм . увы...
Изучаю то что вы написалию. Жду ваших коррекций .

  Ответить  
 
 автор: Valick   (23.08.2014 в 12:24)   письмо автору
 
   для: 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;
?>

  Ответить  
 
 автор: davidoff_72   (23.08.2014 в 23:05)   письмо автору
 
   для: Valick   (23.08.2014 в 12:24)
 

Большое спасбо! Сажусь разбираться, буду изучать написанное и пользоваться.

  Ответить  
 
 автор: confirm   (24.08.2014 в 00:06)   письмо автору
 
   для: 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(). Да и вообще зачем здесь цикл, если список позволяет выбрать только одно значение?

  Ответить  
 
 автор: davidoff_72   (24.08.2014 в 00:47)   письмо автору
 
   для: confirm   (24.08.2014 в 00:06)
 

Спасибо. Я сел разбирать, действительно выдало ошибку. Буду править. Спасибо.

  Ответить  
 
 автор: confirm   (24.08.2014 в 01:07)   письмо автору
 
   для: davidoff_72   (24.08.2014 в 00:47)
 

Какую ошибку? Я не писал про ошибки, я о том, что нельзя, и как не стоит делать.

  Ответить  
 
 автор: Valick   (24.08.2014 в 09:23)   письмо автору
 
   для: confirm   (24.08.2014 в 01:07)
 

ну если я сразу напишу всё правильно, чем же вам-то заниматься? :)
код вообще теоретический, это даже не код, а каркас, или вектор подходящего направления, чем больше вопросов возникнет у ТС, тем лучше ;)

более того, я уже жду что опять придет одарённый программист и станет мне читать лекцию про mysqli_ или PDO

  Ответить  
 
 автор: confirm   (24.08.2014 в 11:12)   письмо автору
 
   для: 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 легче будет, если браузер пенсионер. Ну и пока используют картонную коробку, то безопасность всегда важный момент. Да даже и в случая шкафа, зачем же в него предметы не нужные класть.

  Ответить  
 
 автор: psychomc   (24.08.2014 в 13:39)   письмо автору
 
   для: Valick   (24.08.2014 в 09:23)
 

чем больше ошибок возникнет у тс, тем лучше...гениально.

  Ответить  
 
 автор: Valick   (24.08.2014 в 15:16)   письмо автору
 
   для: psychomc   (24.08.2014 в 13:39)
 

читайте внимательно что я написал, и не надо мне приписывать свои "умозаключения"

  Ответить  
 
 автор: confirm   (23.08.2014 в 11:58)   письмо автору
 
   для: davidoff_72   (23.08.2014 в 02:14)
 

Вы ничего не путаете?
Как таблица с полями produkt может хранить клиентов?
Как понять таблицу с полем name, которое как раз более подходит к клиентам, но в тоже время содержит продукты? Что продуктов строго по 3? А если более тогда что?

Может я и не прав, так как не понимаю что-то, но такое впечатление, что ваши таблицы из ряда вон, что-то в них не то.

  Ответить  
 
 автор: davidoff_72   (23.08.2014 в 23:04)   письмо автору
 
   для: confirm   (23.08.2014 в 11:58)
 

Прошу прощение за введение в недоумение. Таблица1 имеет больше столбцов, вывел только участвующие в обединении таблиц. В таблице2 продуктов может быть больше чем три и названия даны условные. Извините . Если можете помочь , то подскажите.

  Ответить  
 
 автор: confirm   (23.08.2014 в 23:47)   письмо автору
 
   для: davidoff_72   (23.08.2014 в 23:04)
 

Значит я не понял, думал что просто перепутаны местами таблицы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования