Вывожу записи из таблицы Код (PHP): while ($row = mysql_fetch_array($res)) { echo "<form method=\"post\" action= \"edit.php\" name=\"edit_form\">\n"; echo "<input type=\"hidden\" name=\"id\" value=\"".$row["id"]."\" />\n"; //echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">\n"; echo "<tr>\n"; echo "<td>".$row["id"]."</td>\n"; echo "<td>".$row['name']."</td>\n"; echo "<td>".$row['email']."</td>\n"; echo "<td>".$row['theme']."</td>\n"; echo " <td style='text-align: center;'> <a href='' class='spoiler_links'> <input type='button' value='Показать' onclick='dawn(this)'> </a> <div class='spoiler_body'> ".$row['message']."</div></td>\n"; echo "<td>"; include('spt.php'); echo "</td>\n"; echo "<td>"; include('spt2.php'); echo "</td>\n"; echo "<td><input size='7' readonly type=\"text\" value=\"".$row['dreg']."\" name=\"dreg\"/></td>\n"; echo "<td><input size='7' readonly type=\"text\" value=\"".$row['drun']."\" name=\"drun\"/> <input type=checkbox name=top[] value=".$row['id']."> </td>\n"; echo "<td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit_edit\" class=\"buttons\" value=\"Сохранить\" /></td>\n"; echo "</form>\n\n"; } echo "</tr></td></table>"; echo "</tr>\n"; После сохраняю Код (PHP): if(isset($_POST['submit_edit'])) { $tech1=$_POST['tech1']; $tech2=$_POST['tech2']; //$otv=$_POST['otv']; $dreg=$_POST['dreg']; $drun=$_POST['drun']; $id = $_POST['id']; $query = "UPDATE table SET tech1='$tech1', tech2='$tech2', drun='$drun', dreg='$dreg' WHERE `id`='$id'"; /* Выполняем запрос. Если произойдет ошибка - вывести ее. */ mysql_query($query) or die (mysql_error()); //die($query); Все сохраняет, но только по одной записи, а нужно сразу несколько. Подскажите как. Пожалуйста. Я думаю что нужно как-то через массив , только как правильно? Заранее спасибо! Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
имеешь массив данных $arr, пусть длина массива 5, тогда Код (PHP): $length = count($arr); for($i=0; $i<$length; $i++){ // тут будет сам запрос обновления данных }
Мы апдейтим, указывая id записи, как … WHERE id = :id. Значит нам надо обеспечить приход нескольких записей с разным id, логично? Задача раскладывается на две: 1. добиться, чтобы в POST приходили данные в массиве, проиндексированном по id 2. исполнить update с этими записями Первое делается так: имена инпутов должны выглядеть как-то так Код (PHP): <input name="dreg[12]"…> <input name="drun[12]"…> Где 12 это значение id для данной записи. Тогда var_export($_POST) будет выглядеть примерно так: Код (PHP): array( 'dreg' => array( '12' => 'xxx', '13' => 'yyy', ... ), 'drun' => array( '12' => 'a b c', '13' => 'ololo', ... ), ... ); И можно будет делать цикл по записям.
А что значит Код (PHP): <input name="dreg[12]"…> <input name="drun[12]"…> почему именно Код (PHP): "dreg[12]"… ? Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
это произвольные имена полей сущности - дрег и дрюн - а в скобках для идентификации их отношения к конкретной сущности - её идентификатор.
New_neo, что тебе непонятно: что такое запись или что такое id? слова drun и dreg взяты из твоего текста. Добавлено спустя 1 минуту 31 секунду: Код (PHP): echo "<input name=\"dreg[{$row['id']}]\" value=\"{$row['dreg']}\" … ";
Теперь все ясно! Я просто не понял сразу Код (PHP): [12] А скобки обязательно ?{ } Код (PHP): dreg[{$row['id']}] Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
да, обязательно. без них ты не сможешь встроить в строку значение ключа массива. я бы даже рекомендовал всегда встраивать переменные обрамляя фигурными скобками.
как теперь выполнить запрос с массивами Код (PHP): dreg[{$row['id']}] ? подскажите пожалуйста в коде Код (PHP): if(isset($_POST['submit_edit'])) { $tech1=$_POST['tech1']; $tech2=$_POST['tech2']; //$otv=$_POST['otv']; $dreg=$_POST['dreg']; $drun=$_POST['drun']; $id = $_POST['id']; $query = "UPDATE table SET tech1='$tech1', tech2='$tech2', drun='$drun', dreg='$dreg' WHERE `id`='$id'"; /* Выполняем запрос. Если произойдет ошибка - вывести ее. */ mysql_query($query) or die (mysql_error()); //die($query);
Пост приходит теперь массивом! Теперь его нужно я так думаю сделать: Код (PHP): <span class="syntaxdefault">$id </span><span class="syntaxkeyword">AS </span><span class="syntaxdefault">$KEY</span> Только как правильно сделать нет мощности в голове. Помогите! Пожалуйста.
пост всегда приходит массивом. как и гет. как и сервер. как и сессн. как и энвайрмент. не даром у этих штук официальное название - суперглобальный массив. тебе надо проитерировать пост-массив. давай покажи идеи как ты это будешь делать. будем считать что тред в разделе новичков. если хочешь чтоб за тебя подумали - готовь кошелек в разделе "фриланс" или запас надежд в разделе "за меня"
Идея такова Код (PHP): $length = count($id); for($i=0; $i<$length; $i++){ foreach($id AS $key) { $query = "UPDATE table SET tech1='$tech1', tech2='$tech2' WHERE `id`='$key'"; mysql_query($query) or die (mysql_error()); } } Только вот он сохраняет все записи одинаково!
Нет там все нормально! Только там два массива. Их каким-то образов нужно разложить вместе на ключи. Посоветуйте как?
не, Дим, его никто не учит запросы в цикле делать. пусть для начала научится массив итерировать. само формирование запроса ему пока рано. да и вообще с его потугами - пусть запросы в цикле делает. тем более что он еще не дошел до самих запросов. пока он не может даже данные принять.
подсказка: в тех массивах ключ один и тот же. делай форич по одному из массивов, а используй все массивы.
А можно подробнее по поводу - в тех массивах ключ один и тот же. делай форич по одному из массивов, а используй все массивы.[/quote] типа использовать как Код (PHP): $length = count($id); for($i=0; $i<$length; $i++){ foreach($id AS $key) { $query = "UPDATE table SET tech1='$key', tech2='$tech2' WHERE `id`='$key'"; mysql_query($query) or die (mysql_error()); } } Правильно я понял?