У меня многостраничная форма, и я пытаюсь захватить массив как сеанс для вставки в MySQL. На второй странице формы находится раздел «Адрес». Здесь я прошу информацию об адресе. Пользователь может нажать кнопку «ввести другой адрес», которая открывает другое поле.
Пользователь нажимает «Далее», чтобы перейти на следующую страницу (phone.php), где я запрашиваю информацию о телефоне. Я думаю, что на этой странице я правильно регистрирую данные сессии:
if(!isset($_SESSION))
{
@session_start();
}
header("Cache-control: private");
ob_start();
include('header.php');
//now, let's register our session variables from address.php
session_register('addressLineOne');
session_register('addressLineTwo');
//finally, let's store our posted values in the session variables
$_SESSION['addressLineOne'] = $_POST['addressLineOne'];
$_SESSION['addressLineTwo'] = $_POST['addressLineTwo'];
В конце концов мы попали в submit.php. Если я отключаю код, чтобы добавить дополнительный адрес, то я использую эту вставку, которая работает нормально.
$insertAddress="INSERT INTO address (idperson, addressLineOne, addressLineTwo)
VALUES ( '$id','$_SESSION[addressLineOne]','$_SESSION[addressLineTwo]')";
if (!mysql_query($insertAddress,$con))
{die('Error: ' . mysql_error());}
echo "";
Когда я включаю код «добавить дополнительный адрес», вставка выше будет вставлять «ARRAY» в каждое поле БД. Я пробовал следующее:
foreach($_SESSION['idperson'] as $row=>$id)
{
$idperson=$id;
$addressLineOne=$_SESSION['addressLineOne'][$row];
$addressLineTwo=$_SESSION['addressLineTwo'][$row];
}
//enter rows into database
foreach($_SESSION['idperson'] as $row=>$id)
{
$idperson=mysql_real_escape_string($id);
$addressLineOne=mysql_real_escape_string($_SESSION['addressLineOne'][$row]);
$addressLineTwo=mysql_real_escape_string($_SESSION['addressLineTwo'][$row]);
}
$insertAddress="INSERT INTO address (idperson, addressLineOne, addressLineTwo)
VALUES ('.$id.','.$addressLineOne.','.$addressLineTwo.')";
if (!mysql_query($insertAddress,$con))
{
die('Error: ' . mysql_error());
}
echo "$row record added";
Однако вместо того, чтобы работать, вышеприведенное просто вставляет пару точек, например, "...", в базу данных. Я не знаю, что еще делать. Я правильно не получаю данные сеанса? Мой код foreach выключен? Спасибо за любую помощь.
Вот код, который я использую, чтобы добавить другую таблицу в address.php:
<?php for($i=1; $i<6; $i++):?>
<div id='hidden<?php echo $i; ?>' style='display: none'>
<tr class="odd">
<td width="33%">Street/Number</td>
<td><input type="text" name="addressLineOne[]" id="addressLineOne<?php echo $i; ?>"/></td>
</tr>
<tr>
<td>Address 2</td>
<td><input type="text" name="addressLineTwo[]" id="addressLineTwo<?php echo $i; ?>"/></td>
</tr>
<?php endfor; ?>
Submit.php не имеет ничего, кроме подключения к БД и вставке выше.