php foreach кнопка отправки

#php #foreach #submit

#php #foreach #Отправить

Вопрос:

Проблема, с которой я сталкиваюсь, заключается в том, что моя кнопка отправки формы, поскольку она находится в цикле foreach, завершает отправку для каждого отдельного элемента, через который проходит foreach. Если я помещу ее вне цикла, у отправки не будет правильного номера для отправки, в итоге будет отправлено последнее значение в foreach. У кого-нибудь есть решение для этого?

     <div data-role='collapsible' data-collapsed='true' data-icon='arrow-l'>
        <h3><?=$ticket['ticket_no']?> - <?=$ticket['title']?></h3>

        <div class="ui-body ui-body-a"> 
            <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="c">
            <li data-role="list-divider"><h1></h1></li> 
            <li><h3>Description</h3><br><br><?=$ticket['description'] ?></li>
            <input type=hidden name=ticket_number value=<?= $ticket['ticket_no'];  ?>>
            <form action="<?=$_SERVER['PHP_SELF']; ?>" method="post">
            <fieldset>
                <div data-role="fieldcontain">
                    <label for="status" class="select">Change Status:</label>
                    <select name="status" id="<?=$ticket['ticket_no']?>">
                        <option value="Open">Status</option>
                        <option value="Tracker">Tracker</option>
                        <option value="Abandon">Abandon</option>
                        <option value="Communicate">Communicate</option>
                        <option value="Closed">Closed</option>
                    </select>
                </div>
                <input type="submit" data-theme="a" name="submit" value="Submit"></input>
            </fieldset>
        </form>


        </div><!-- /themed container --> 
    </div> <!-- End inner collapsible set -->
  

}
?>

Комментарии:

1. Классный стиль кодирования, код формы для самостоятельной отправки 😉 — общий ответ заключается в том, что вам нужно отделить обработку вывода и ввода друг от друга, см. Модель IPO .

2. итак, что именно вам нужно?

3. почему вы используете html здесь в цикле? напишите его снаружи, а затем отправьте вместе с кодом php.

Ответ №1:

В каждой форме поместите что-то вроде:

 <input type=hidden name=ticket_number value=<?= $ticket['ticket_no'];  ?>>
  

а затем переместите if() за пределы цикла и проверьте наличие $_POST[‘ticket_number’]

 if(isset($_POST['submit']) amp;amp; isset($_POST['ticket_number'])) {
 $tickNum = $_POST['ticket_number'];
 updateTT($tickNum);                            
} 
  

Это было сделано с наименьшим количеством возможных изменений. Пожалуйста, очистите свой ввод и все такое хорошее!

Комментарии:

1. Предполагается, что вы хотите кнопку отправки для каждого тикета, и это не одна большая форма. Если это 1 большая форма, это неправильный подход. Если вы хотите перечислить все свои заявки на одной странице, но вам нужно выполнить действия для каждого из них по отдельности, используйте этот метод…

2. Это на правильном пути, но форма отправки по-прежнему неправильно совпадает с номером билета. Он по-прежнему отправляет самый последний элемент foreach.

3. Мне пришлось изменить код, я использовал $_POST[‘status’], чтобы получить номер билета, но он задается как идентификатор, а не ЗНАЧЕНИЕ. Попробуйте вместо этого приведенный выше код, добавив скрытый элемент формы. Это должно сработать, в противном случае отправьте измененный код.

4. Столкнувшись с проблемой, я поместил скрытый ввод за пределы формы. Теперь это исправлено. Спасибо, Дэвид.

Ответ №2:

переместите <form> теги из цикла, а также кнопку, которая должна работать для вас

Ответ №3:

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

[] — это то, что вам нужно !.

 <select name="status[]" id="<?=$ticket['ticket_no']?>">
                            <option value="Open">Status</option>
                            <option value="Tracker">Tracker</option>
                            <option value="Abandon">Abandon</option>
                            <option value="Communicate">Communicate</option>
                            <option value="Closed">Closed</option>
</select>
  

теперь после публикации вы получите все заявки в массиве status. когда вы получаете статус, выполните цикл, чтобы получить каждое значение.

пример записи массива: http://www.pickndrive.info/questions.php

проверьте html-форму, например

Комментарии:

1. Это предполагает, что он хочет отправить все на странице. Мне кажется, что он хочет кнопку отправки для каждого билета.

2. @David спасибо за выделение . он сказал, что «в конечном итоге отправляется последнее значение в foreach», поэтому я решил, что ему нужно отправить их все. ну, если ему нужно отправить весь этот код, иначе его код будет работать нормально!