HTML-форма и php-сообщение не работает, информация переписывается - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть следующий код, который генерирует мою форму на моей HTML-странице

<input type="hidden" name="name[<? echo $productid; ?>]" value="<? echo     $rows["id"];?>">

                <select name="name<? echo $rows["id"];  ?>" >

                <?
                for($i = 0; $i <= sizeof($_SESSION['people']['name']); $i++){
                echo "<option>";
                echo $_SESSION['people']['name'][$i];
                echo "</option>";
                }
                echo "</select>";
                ?>

затем эта форма отправляется на страницу, которая в настоящее время содержит

var_dump($_POST);

и его распечатка

array(3) { 
    ["name"]=> array(2) { 
        [2]=> string(1) "2" 
        [6]=> string(1) "6" 
    } 
    ["name2"]=> string(12) "first person" 
    ["name6"]=> string(15) "andother person" 
} 

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

string (1) указывает на 6 и 2. это мои номера продуктов, и они должны быть в паре с именем.

Не могли бы вы, пожалуйста, сообщить мне, как я могу очистить свою форму и правильно с помощью цикла foreach извлечь каждый атрибут. т.е. имя и идентификационный номер (6, 2 ...)

В основном, я хочу знать, какое имя ассоциируется с каким номером продукта = = 2, 6 и т. Д. Я хочу, чтобы имя сохранялось как $ name, а id - как $ id. затем вставьте в таблицу (имя, идентификатор) значения ($ name, $ id) ... однако, он должен быть в цикле, чтобы захватить все $ names и $ ids. поэтому при первом пробежке он должен взять «первое лицо и сгруппировать его с 2» 2-й проход, он должен схватить «другого человека и сгруппировать его с 6»

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

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

Бит string(1) сообщает вам тип переменной и длину, а не ключ.Если ваши массивы связаны так, как они выглядят, вы можете получить информацию с помощью

foreach($_POST['name'] as $id) {
    echo $_POST['name' . $id];
}

. Если вы планируете использовать какую-либо из этой информации с вашими вызовами SQL, обязательно сначала очистите ввод, иначе выбыть восприимчивым к SQL-инъекциям.

Редактировать: Если вы пытаетесь создать массив типа id => name, вы можете сделать это:

$arr = array();
foreach($_POST['name'] as $id) {
    $arr[$id] = $_POST['name' . $id];
}
print_r($arr);
//should print an array like ('2' => 'first person', '6' => 'another person')
0 голосов
/ 12 декабря 2011

String(1) означает строку с одним символом.Результат мне кажется хорошим.Никогда не используйте sizeof() -функцию в циклах.Присвоить размер массива переменной быстрее, так как эта функция вызывается в каждом цикле.

или используется

$sOptions = '';
foreach($_SESSION['people']['name'] AS $i => $sName) {
    $sOptions .= '<option value="'.$i.'">'.$sName.'</option>';
}
print '<select name="name'.$rows["id"].'">'.$sOptions.'</select>';

Редактировать: если вы присваиваете id ($ i) значениям параметров, вы получите выбранный идентификатор на пост

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...