Помощник
|
Массовое добавление в mysql |
DrDRED
|
Сообщение
#1
|
||
|
|
||
|
|||
r3ntg3n |
15.2.2010, 23:40;
Ответить: r3ntg3n
Сообщение
#2
|
|
я так понимаю, что у Вас имя radio и textarea герениться с добавлением id-шника вопроса?
тогда правильней будет так? [php]while ($row = mysql_fetch_array($result)) { echo "<table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"1\"> <tr> <td width=\"209\"> $row[id]. $row[title] </td> <td width=\"209\" align=\"center\"> <input type=\"radio\" name=\"voting_".$row['id']."\" value=\"1\" /> <input type=\"radio\" name=\"voting_".$row['id']."\" value=\"2\" /> <input type=\"radio\" name=\"voting_".$row['id']."\" value=\"3\" /> <input type=\"radio\" name=\"voting_".$row['id']."\" value=\"4\" /> <input type=\"radio\" name=\"voting_".$row['id']."\" value=\"5\" /> <input type=\"radio\" name=\"voting_".$row['id']."\" value=\"6\" /> <input type=\"radio\" name=\"voting_".$row['id']."\" value=\"7\" /> </td> <td width=\"209\"> <textarea name=\"comment_".$row['id']."\" cols=\"23\" rows=\"2\"> </textarea> </td> </tr></table>"; }[/php]получение данных и вставка будет выглядить следующим образом: [php]$result = $db->query("SELECT id FROM swot_ques"); if ($result) { while (($row = $result->fetch_row()) !== null) { $voting = $_POST['voting_'.$row[0]]; $comment = $_POST['comment_'.$row[0]]; if ((!empty($voting)) && (!empty($comment)) { $db->query("UPDATE swor_ques SET voting=$voting && comment='$comment' WHERE id=".$row[0]); } } }[/php] дополнительно можно проводить обработку комментариев для удаления из их текста html-тэгов, слешей и escape-последовательностей, дабы исключить вероятность внедрения кода или передачи SQL-injection |
|
|
DrDRED
|
Сообщение
#3
|
|
r3ntg3n, начал разбираться в Вашем скрипте, при компиляции были ошибки в результате чего пришлось немного поменять Ваш скрипт на такой:
[php] include("config.php"); $result = mysql_query("SELECT id FROM swot_ques"); if ($result) { while (($row = mysql_fetch_array($result)) !== null) { $voting = $_POST['voting_'.$row[0]]; $comment = $_POST['comment_'.$row[0]]; if ((!empty($voting)) && (!empty($comment))) { $query_user = ("UPDATE swot_form SET voting=$voting && comment='$comment' WHERE id=".$row[0]); $query_result = mysql_query($query_user); if ($query_result) { header ("Location: 1.html"); exit;} else { echo 'Не удалось добавить';} mysql_close(); } } } [/php]Но все равно добавление в БД не происходит, ошибок не пишет, переходит как в случае удачи на 1.html, но в БД ничего не заносит, в чем причина, не поможете? |
|
|
r3ntg3n |
16.2.2010, 0:36;
Ответить: r3ntg3n
Сообщение
#4
|
|
я писал код для изменения данных в таблице, но если Вам нужно добавление в базу, то измените запрос с "UPDATE..." на
"INSERT INTO swot_quest VALUES (0, $voting, '$comment')" но при этом надо в таблицу swot_ques добавить поле parent_id типа int(11) или что-то этого вида для хранения id-шника вопроса, на который был дан ответ. При добавлении данных в таблицу добавлять и id вопроса следующим запросом:[php]$db->query("INSERT INTO swot_ques VALUES (0, $voting, '$comment',".$row[0].")");[/php]в итоге Вы добавите в базу ответ на вопрос с комментариями и id-шник вопроса, на который отвечали. Потом по этому айдишнику можно будет доставать ответы на этот вопрос. |
|
|
DrDRED
|
Сообщение
#5
|
|
Работать работает, но добавляет только одну запись, а не все, что передано.
А должен добавить приблизительно следующее: Array ( [voting_1] => 1 [comment_1] => wd [voting_2] => 2 [comment_2] => fbtfb [voting_3] => 3 [comment_3] => wberbreberbr [voting_4] => 4 [comment_4] => wdwdw [submit] => Далее ) |
|
|
r3ntg3n |
16.2.2010, 0:54;
Ответить: r3ntg3n
Сообщение
#6
|
|
попробуйте поменять условие в цикле while c !== null на !== false, не помню точно, то в ООП используется null, так как работаем с объектами, а в процедурном варианте раньше использовал false
еще вопрос: с какой таблицы Вы берете id при формировании имен радио-кнопок в форме? |
|
|
r3ntg3n |
16.2.2010, 0:57;
Ответить: r3ntg3n
Сообщение
#7
|
|
немного запутался, да и Вас запутал :)
напишите, пожалуйста, с какой таблицы Вы берете вопросы и айдишники для формирования имен, и в какую таблицу хотите заливать результаты. + ко всему напишите имена полей, который используются в обоих таблицах. Спасибо! |
|
|
DrDRED
|
Сообщение
#8
|
|
id беру из таблицы вопросов:
`swot_ques` ( `id` int(11) NOT NULL auto_increment, `title` varchar(500) NOT NULL ) Ответы надо добавить в таблицу: `swot_form` (
`id` int(11) NOT NULL auto_increment, `voting` int(10) NOT NULL, `comment` varchar(800) NOT NULL, `id_ques` int(11) NOT NULL, PRIMARY KEY (`id`) ) |
|
|
Apay |
16.2.2010, 1:22;
Ответить: Apay
Сообщение
#9
|
|
[PHP]include('config.php'); //фаил подключения к базе данных
$result = mysql_query('SELECT * FROM swot_ques') or die ('Невозможно подключиться к БД!!!'); echo '<form action="add_swot_form.php" method="post">'; while( $row = mysql_fetch_assoc($result) ){ echo '<table border="0" width="100%" cellspacing="1" cellpadding="1"><tr>'. '<td width="209"> '.$row['id'].' '.$row['title'].'</td>'. '<td width="209" align="center"> '; '<input type="radio" name="voting_'.$row['id'].'" value="1" /> '. '<input type="radio" name="voting_'.$row['id'].'" value="2" /> '. '<input type="radio" name="voting_'.$row['id'].'" value="3" /> '. '<input type="radio" name="voting_'.$row['id'].'" value="4" /> '. '<input type="radio" name="voting_'.$row['id'].'" value="5" /> '. '<input type="radio" name="voting_'.$row['id'].'" value="6" /> '. '<input type="radio" name="voting_'.$row['id'].'" value="7" /> '. '</td>'. '<td width="209"><textarea name="comment_'.$row['id'].'" cols="23" rows="2"></textarea></td>'. '</tr></table>'; } [/PHP] [PHP]include('config.php'); //фаил подключения к базе данных if( isset($_POST['submit'] ) ){ $result = mysql_query( 'SELECT id FROM swot_ques' ) $query = array(); while( $row = mysql_fetch_row($result) ) if( !empty($_POST['voting_'.$row[0]]) && !empty($_POST['comment_'.$row[0]]) ) $query[] = '(NULL,"'.$_POST['voting_'.$row[0]].'","'.$_POST['comment_'.$row[0]].'")'; if( !empty($query) ){ if( mysql_query( 'INSERT INTO show_form VALUES'.implode(',',$query) ) ) header( 'Location: 1.html' ); else echo 'Не удалось добавить'; } else header( 'Location: 2.html' ); // если ничего не отправлено } mysql_close(); [/PHP] |
|
|
r3ntg3n |
16.2.2010, 1:42;
Ответить: r3ntg3n
Сообщение
#10
|
|
отлично, спасибо!
тогда список вопросов выводим следующим образом (попытаюсь написать процедурным подходом, если будут ошибки заранее простите): [php]$query = "SELECT * FROM swot_ques"; $id_query = mysql_query($query); echo "<form action=\"handler.php\" method=\"post\">"; if ($id_query) { while (list($id, $title) = mysql_fetch_row($id_query)) { // ставим поле hidden с айдишником вопроса, чтобы в обработчике формы не селектить опять таблицу echo "<table> <tr> <td>$id. $title <input type=\"hidden\" name=\"question_$id\" value=\"$id\"> </td> <td> <input type=\"radio\" name=\"voting_$id\" value=\"1\">1; <input type=\"radio\" name=\"voting_$id\" value=\"2\">2; <input type=\"radio\" name=\"voting_$id\" value=\"3\">3; <input type=\"radio\" name=\"voting_$id\" value=\"4\">4; <input type=\"radio\" name=\"voting_$id\" value=\"5\">5; </td> <td><textarea name=\"comment_$id\" cols=\"50\" rows=\"5\"></textarea> </tr> </table> "; } echo "<input type=\"submit\" value=\"Ответить\" name=\"answer\">"; }[/php]в файле handler.php "ловим" данные: [php]if (!empty($_POST['answer'])) { foreach ($_POST as $key=>$value) { // перебираем элементы массива $_POST $field = substr($key, strpos("_", $key)); // определяем имя элемента до знака подчеркивания, по имени будем создавать переменные switch ($field) { case "question": // если элемент question_id $question_id = $value; break; case "voting": // если элемент voting_id $voting = $value; break; case "comment": // если элемент comment_id $comment = htmlspecialchars(stripslashes($value)); // избавляем комментарий от тэгов и слешей break; default: break; } $query = "INSERT INTO swot_form VALUES (0, $voting, '$comment', $question_id)"; $id_query = mysql_query($query); if ($id_query) echo "Answer for question # $question_id succesfully added<br />"; } }[/php] |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1129 | 24.11.2023, 14:46 автор: alexey |
|
Массовое размещение объявлений на досках. Ручное размещение. Повышение ИКС |
99 | gold15 | 70503 | 24.1.2022, 16:00 автор: gold15 |
|
Массовое размещение объявлений на досках | 25 | Mapshal | 3696 | 12.10.2020, 11:57 автор: Mapshal |
|
Добавление RSS-ленты на новостные агрегаторы и блоги | 4 | agency | 4808 | 14.5.2020, 15:53 автор: agency |
|
Web программирование на С/С++/PHP/MySQL/SQL, высоконагруженные проекты Есть наработки в области бирж трафика, топов, тизеров, видео cj-тубов |
4 | DFService | 3327 | 8.4.2020, 18:02 автор: DFService |
Текстовая версия | Сейчас: 19.3.2024, 13:28 |