У меня есть форма, где я использую несколько переменных, вроде массива, и на одном из моих серверов (Godaddy) мне не нужно запрашивать переменные, и он работает нормально. Я должен поменять серверы в ближайшее время, и мне нужно обойти, чтобы я мог запросить эти переменные
У меня есть 12 областей ввода, как
<input name="sd[1]" type="text" id="sd1" size='10' value='<?echo$sd[1];?>'/>
<input name="sd[2]" type="text" id="sd2" size='10' value='<?echo$sd[2];?>'/>
...
<input name="sd[12]" type="text" id="sd12" size='10' value='<?echo$sd[12];?>'/>
Мне нужно иметь возможность запрашивать каждую переменную sd [#], но все, что я пробовал, не работает.
Я пробовал такие вещи, как
for ($i=1; $i<=12; $i++){
$sd[$i]= $_POST['sd']["$i"];
}
а также
for ($i=1; $i<=12; $i++){
$sd[$i]= $_POST['sd[$i]'];
}
а также
$sd[1]= $_POST['sd[1]'];
Буду признателен за любую помощь, которую вы можете предложить.
Спасибо,
Келли
Название группировки name="sd[]"
уже возвращает массив, являющийся числом внутри []
в качестве индекса. Относитесь к массиву как обычно.
foreach
очень подходит для этой задачи:
$sd = $_POST['sd'];
foreach($sd as $key => $value) {
// $key is integer inside name[1] or name[2], and so on
echo $key;
echo $value;
}
На самом деле цикл с другим присваиванием является излишним, так как этот массив уже представляет то, что вы хотите.
$sd = $_POST['sd']; // contains the key pair values 1 => the corresponding echoed value from the form, and so on...
echo $sd[12];
Удалите двойные кавычки вокруг «$ i».
for ($i=1; $i<=12; $i++){
$sd[$i]= $_POST['sd'][$i];
}
Во-первых, вы не должны использовать короткие теги для вашего PHP.
<? is bad, <?php is good.
Параметр краткого тега по умолчанию отключен на большинстве хостов.
Во-вторых, вы должны иметь доступ к таким значениям.
$sd[1]= $_POST['sd'][1];
или даже так, если вам нужно зациклить
foreach($_POST['sd'] as $key => $value){
// $key is the number: 1-12
// $value is what is held in it. ex sd[1]
}
Используйте этот пример:
<?php
if(isset($_POST['sd'])) {
for($i = 1; $i <= count($_POST['sd']); $i++) {
echo $_POST['sd'][$i] . "<br>";
}
}?>
<form action='' method='POST'>
<input name="sd[1]" type="text" id="sd1" size='10' value='1'/>
<input name="sd[2]" type="text" id="sd1" size='10' value='2'/>
<input name="sd[3]" type="text" id="sd1" size='10' value='3'/>
<input type=submit value='Send'>
</form>
Или вы можете использовать этот код, в своем HTML-коде вы можете установить имя ввода, как это name="sd[]"
в этом случае первый элемент 0
увидеть код:
<?php
if(isset($_POST['sd'])) {
for($i = 0; $i < count($_POST['sd']); $i++) {
echo $_POST['sd'][$i] . "<br>";
}
}?>
<form action='' method='POST'>
<input name="sd[]" type="text" id="sd1" size='10' value='1'/>
<input name="sd[]" type="text" id="sd1" size='10' value='2'/>
<input name="sd[]" type="text" id="sd1" size='10' value='3'/>
<input type=submit value='Send'>
</form>
Выход:
1
2
3