Я создаю сайт, на котором люди могут размещать заказы, и это первый раз, когда мне приходилось вставлять сразу несколько строк, и я теряюсь. Я знаю, что мне нужен цикл FOR, чтобы выполнить это, но я потерял, как построить цикл. Я использую PHP, MySQL (очевидно) с jQuery. Я использую jQuery для .append () нового поля выбора в форме, чтобы клиент мог выбрать другой элемент.
Вот как я обычно создаю свой код, чтобы пользователи могли вставлять их в базу данных. Мой вопрос заключается в том, как и где бы я вставлял цикл таким образом, чтобы кратные строки могли быть отправлены сразу без необходимости вставлять их по одному. Все будет полезно, спасибо.
<?php if (isset($_POST['submit'])) { if (!$_POST['col1'] | !$_POST['col2'] | !$_POST['col3']) { die ("error"); } if (!get_magic_quotes_gpc()) { $_POST['col1'] = addslashes ($_POST['col1']); $_POST['col2'] = addslashes ($_POST['col2']); $_POST['col3'] = addslashes ($_POST['col3']); } $insert = "insert into table (col1, col2, col3) values ('".$_POST['col1']."', '".$_POST['col2']."', '".$_POST['col3']."')"; mysql_query ($insert); } else { ?> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> <table> <tr> <td><input type="text" name="col1"></td> <td><input type="text" name="col2"></td> <td><input type="text" name="col3"></td> //I'm using jQuery .append() to insert more text boxes with names (col1, col2, col3) here </tr> </table> <input type="submit" name="submit" value="Submit"> </form> <?php } ?>
Моя путаница заключается в том, где положить цикл … Я знаю, что это должен быть цикл FOR, но я никогда не смог заставить его работать. Еще раз спасибо за любую помощь.
Убедитесь, что вы однозначно называете свои входы. Но вы можете назвать каждый столбец таким образом (см. Здесь, например):
<input type="text" name="column1[]" /> <input type="text" name="column2[]" /> <input type="text" name="column3[]" />
Таким образом, вы можете получить доступ к столбцам через PHP, используя цикл for.
for($i = 0; $i < $n; $i++) // If you have $n rows { echo($_POST["column1"][$i]); echo($_POST["column2"][$i]); echo($_POST["column3"][$i]); }
Чтобы вставить несколько строк в вашу базу данных mySQL, используйте следующий синтаксис (также: см. Здесь ).
INSERT INTO tbl_name (column1, column2, column3) VALUES (1,2,3), (4,5,6), (7,8,9);
Теперь вам нужно настроить SQL-запрос.
Первое, чего вы хотите избежать, – использовать тот же набор имен. Вы можете называть их rowNcolM, а затем извлекать их там, где вы проверяете переменные post.