Массив в Форме, собирающей несколько значений с тем же возможным именем?

Добрый день,

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

Цель

Вместо того, чтобы собрать несколько переменных и назвать их с ключами индивидуально, я решил подать и использовать структуру массива для обработки всех исходных данных того же типа и правил. После того как у меня есть переменные, я проверю против них и если 'хорошо' хранят их в таблице MySQL. Таблица будет содержать информацию для потребителей и должна будет сохранить несколько строк того же типа информации.

Первичная обработка

Я не учту часть проверки этого вопроса, потому что я чувствую, что должен сначала понять основы.

<form action="?" method="POST" name="Form">
Member 1 First Name:<input type="text" name="MemberFirstName[]" /><br />
Member 1 Last Name: <input type="text" name="MemberLastName[]" /><br />
Member 1 Email: <input type="text" name="MemberEmail[]" /><br />

Member 2 First Name:<input type="text" name="MemberFirstName[]" /><br />
Member 2 Last Name: <input type="text" name="MemberLastName[]" /><br />
Member 2 Email: <input type="text" name="MemberEmail[]" /><br />

Member 3 First Name:<input type="text" name="MemberFirstName[]" /><br />
Member 3 Last Name: <input type="text" name="MemberLastName[]" /><br />
Member 3 Email: <input type="text" name="MemberEmail[]" /><br />

<input type="submit" name="submit" value="Continue" />          
</form>

Я надеюсь, что каждый вход, данный для Имени (обязательное поле), генерирует уникальный ключ для той конкретной записи и не перезапишет любые вводимые данные. Поскольку я хранил информацию от страницы до страницы (форма контроля), я превращаю переменные POST в Переменные сеанса, затем хранящие в mysql базе данных в конце. Моя надежда состоит в том, чтобы иметь:

<?php

$conn = mysql_connect("localhost", "username", "password");
mysql_select_db("DBname",$conn);

$sql = "INSERT INTO tablename VALUES ('$_SESSION[Member1FirstName]', '$_SESSION[Member1LastName]', '$_SESSION[Member1Email]', '$_SESSION[Member2FirstName]', '$_SESSION[Member2LastName]', '$_SESSION[Member2Email]', '$_SESSION[Member1FirstName]', '$_SESSION[Member3LastName]', '$_SESSION[Member3Email]')";


$result = mysql_query($sql, $conn) or die(mysql_error());
Header ("Location: completed.php");
?>

Где Member1, Member2 и значения Member3 появятся на их собственной строке в таблице. Я ЗНАЮ, что мой код является неверным, но я даю первый выстрел в полную бизнес-цель, которой я пытаюсь достигнуть и пытаюсь изучить, как кодировать правильный путь.

Я очень, очень плохо знаком с программированием, таким образом, любой 'детский совет' значительно ценится.

1
задан JM4 17 May 2010 в 23:12
поделиться

2 ответа

В зависимости от имен столбцов следующие

INSERT INTO tablename 
VALUES ('$_SESSION[Member1FirstName]', '$_SESSION[Member1LastName]', '$_SESSION[Member1Email]'),
       ('$_SESSION[Member2FirstName]', '$_SESSION[Member2LastName]', '$_SESSION[Member2Email]'), 
       ('$_SESSION[Member1FirstName]', '$_SESSION[Member3LastName]', '$_SESSION[Member3Email]')"

будут работать с mysql, см. INSERT .

Однако это ответ, который приведет к большим проблемам, если вы не очистите ввод.

РЕДАКТИРОВАТЬ: Под дезинфекцией понимается атака sql-инъекция , при которой строки, передаваемые непосредственно в базу данных, могут содержать конструкции, которые позволят злоумышленнику изменить пароли базы данных или обновить или уничтожить данные.

РЕДАКТИРОВАТЬ2: Что касается синтаксиса php, я думаю , что этот вопрос имеет разумные ответы, из которых вы можете поучиться.

1
ответ дан 3 September 2019 в 00:29
поделиться

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

Member 1 First Name:<input type="text" name="MemberFirstName[1]" /><br />
Member 1 Last Name: <input type="text" name="MemberLastName[1]" /><br />
Member 1 Email: <input type="text" name="MemberEmail[1]" /><br />
1
ответ дан 3 September 2019 в 00:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: