Запрос MySQL в виде массива. Через форму отправляю переменные - название статьи title и через checkbox - массив авторов autor (т.е. id из таблицы man). Массив autor предварительно обрабатываю implode - записываю в строку через запятую и записываю значения в базу. «article» |id| title |autor | |1 | PHP |2;3;7 | |2 | HTML |1;4 | |3 | WWW |5;8 | «man» |id| name | |1 | Иванов | |2 | Петров | |3 | Сидоров| Вот код: PHP: <?php include ("blocks/bd.php"); /*подключаемся к базе */ ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title></title> </head> <body> <form name='form1' action='test.php' method='post'> <label>Название статьи : <input name='title' type='text'></label> <br> <label>Авторы :<br> <?php $sql = mysql_query("SELECT id, name FROM man", $db); $res = mysql_fetch_array ($sql); do { printf ("<input type='checkbox' name='autor[]' value='%s'>%s<br>", $res ["id"], $res ["name"]); } while ($res = mysql_fetch_array ($sql)); ?> </label> <input type='submit' name='submit' value='Сохранить'></p> </form> <?php /*смотрим что переданные переменные*/ echo "<pre>"; print_r ($_POST); echo "<pre>"; /*создаем переменные из глобального массива*/ if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);}} if (isset($_POST['autor'])) {$autor = $_POST['autor']; if ($autor == '') {unset($autor);}} $autor2 = implode(";", $autor); /* объединяет элементы массива в строку */ /* если существуют, то добавляем в базу*/ if (isset($title) && isset($autor) ) { $result = mysql_query ("INSERT INTO `article` (title,autor) VALUES ('$title','$autor')"); /* Проверка */ if ($result == 'true') {echo "данные добалены";} else {echo "данные не добалены";} } echo "<br><br>"; /* вывод данных из базы*/ $sql2 = mysql_query("SELECT * FROM article ", $db); $res2 = mysql_fetch_array ($sql2); do { printf ("Статья - %s, авторы - %s <br>", $res2 ["title"], $res2 ["autor"]); } while ($res2 = mysql_fetch_array ($sql2)); ?> </body> </html> Прошу помощи решить следующие вопросы: 1) предполагаю выводить в общем списке название статей и всех авторов. Как поместить строку/массив autor в запрос к таблице man и вывести рядом с название статьи? 2) и как потом при необходимости делать выборку статьей по авторам, когда авторы записаны в строку? Отразится ли на скорость обработки всех данных? Есть ли альтернативный способ записи авторов? 3) когда записываю в базу параметры при обновлении страницы данные дублируются, что есть лишнее? Спасибо. [/php]
Либо. Копай в строну связей типа many-to-many: много статей имеют много авторов - и наобарот - много авторов имеют много статей: [sql]select ... from article join article_man on (article_man.article_id = article.id) join man on (man.id = article_man.man_id)[/sql] Либо. В поле author можно писать id через запятую: 1,3,6,11. а ескать функией find_in_set('6', '1,3,6,11'). Правда, без понятия насколько удобно/быстро это будет работать при join`е таблиц article и man: [sql]select ... from article, man where find_in_set(man.id, article.autor)[/sql]
Оперативности ответов просто поражает. Спасибо lexa. Второй вариант пока мне более понятен, пробую применить, пригодилась бы ссылочка по функции find_in_set .
я и попова читал/смотрел )) Не спорю, форумы заставляют думать. Вот сижу и думаю, неужто все умными родились, а как же сравнивать, что есть хор, а что уд. Да и что за манеры подковырнуть, уколоть. Всему свое время, научимся и посложнее вопросы задавать. Дайте подумать над вышеизложенным.
incomer, не все умные родились, но стали благодаря тому, что ответы сами искали, а не вопросы на форумах учились задавать. Форум - последнее место куда стоит идти. Приоритет должен быть такой: 1. http://php.net 2. http://yandex.ru 3. http://google.com 4. http://phpclasses.org n. ... 9999. различные форумы
lexa, и за эти ссылочки спасибо, учту. Раздел форума «для начинающих» на php.ru – для меня находка , т.к. свободное время я больше уделяю семье, а в Инете столько много инфо, что глаза разбегаются. Для ATI: HTML я по книжкам на 3 выучил, а вот с PHP книжки не помогали, wikipedia чуть помогла, а видеоуроков именно на русском и не нашел. Везде Попов, что мне оставалось. Попову я уважение отдаю за то, что у меня желание не пропало в учении. Терь вот мануалы читаю, понять не все удается - беда в моем храмом английском. Лано парни, не судите строго, я же к Вам как к логопедам пришел.