За последние 24 часа нас посетили 26894 программиста и 1814 роботов. Сейчас ищут 1377 программистов ...

Передача массива из формы в форму/функцию

Тема в разделе "PHP для новичков", создана пользователем ekip, 16 авг 2010.

  1. ekip

    ekip Активный пользователь

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    Образовалась следующая задача, бьюсь но безуспешно пока что.
    Есть форма index.php

    PHP:
    1. <?php
    2. echo '<form action="script.php" method="POST">
    3. <input type="checkbox" value="1" name="check[]"> 1
    4. <input type="checkbox" value="2" name="check[]"> 2
    5. <input type="checkbox" value="3" name="check[]"> 3
    6. <input type="submit" value="Оптравить">
    7. </form>'; // вывод 1-й формы указываем пункты к которые необходимо внести изменения
    8. ?>
    Выбранные пункты, как массив передаются скрипту script.php

    PHP:
    1. <?php
    2. function viewgroop() // функция вывода 2-й формы
    3. {
    4. $check = $_POST['check'];
    5. echo 'Вы указади пункты в которых необходимо внести изменения: ';
    6. foreach ( $check as $colvalue=>$checkvalue )
    7. {
    8. echo ''.$checkvalue.', ';    
    9. }
    10. echo '<form action="" method="POST">
    11. <input type="text" value="1" name="name"> Название
    12. <input type="text" value="2" name="cash"> Цена
    13. <input type="submit" value="Оптравить" name="send"
    14. </form>';
    15. }
    16. function editgroop() // функция записи изменений  
    17. {
    18. foreach ( $check as $colvalue=>$checkvalue ) // цикл
    19. {
    20. require 'config.php';
    21. mysql_query ("UPDATE `zayavki` SET name = '".$_POST['name']."', cash = '".$_POST['cash']."' WHERE id = ".$checkvalue.""); // изменение записи по выбранным пунктам
    22. }
    23. }
    24. if ($_POST['edit']) editgroop();
    25. else viewgroop();
    26. ?>
    После нажатия кнопки отправить в index.php я передал методом post массив с номерами выбранных чекбоксов в таблице бд это ключевые id , далее вывел еще одну форму но уже не с полями, после нажатия кнопки отправить в script.php методом post передал введенные значения в полях 2-й формы, но сам массив с указанными чекбоксами по которым следует пройтись в цикле и перезаписать значения полей name и cash не получил, потому как это повторная отправка данных и в функцию так же не удалось передать значения, ругается что мол это не массив.
    Как можно передать массив?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну наверное проще всего передать в сессии
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Проще всего добавить поля из второй формы в первую. Все равно для всех выбранных пунктов будет установлена одна цена и одно имя.

    А так же погуглить про sql инъекцию и прочие вопросы безопасности.
     
  4. ekip

    ekip Активный пользователь

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    Да я думал об этом, но не совсем подходит, то что я привел это пример просто под первой формой это не совсем несколько чекбоксов, интересовал именно метод.
    Сама первая форма выглядит как огромная таблица, да и полей там очень много для редактирования
    [​IMG]
    Есть конечно идея все же раскрывать данную форму через <div style="style="display:none;">форма</div> и выводить его по onclick через js но это делает код тяжелее :cry: