Почему мой php выпадающий форму приводит к неопределенному смещению - PullRequest
0 голосов
/ 19 мая 2011

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

options.php

<?php
$options = array();
$options["PC 1"] = array("year"=>"2000","colour"=>"blue");
$options["PC 2"] = array("year"=>"2003","colour"=>"pink");
$options["PC 3"] = array("year"=>"2006","colour"=>"orange"); 
?>

index.php

<html>
<body>
<form name="input" action="test.php" method="post">
Device Name: <?php
include("options.php");
echo '<select name="option">';
foreach($options as $name => $values)
{    echo '<option value="' .$name .'">' .$name .'</option>';
}
echo '</select>';
?>
<input type="submit" value="Submit" />
</form> 
</body>
</html>

test.php

<?php
include("options.php");
$chosenValue = $_POST['option'];
list($year,$colour) = $options[$chosenValue];  ---- here is the error line

echo $year;
echo $colour;

?>

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 мая 2011

Изменение способа доступа к году и цвету в test.php, list() не очень хорошо работает с нечисловыми индексами. Один из предоставленных пользователями комментариев в документации php соответствует вашим потребностям

http://www.php.net/manual/en/function.list.php#53420

Или просто перейдите на

$data = &$options[$chosenValue];
echo $data['year']; // etc
0 голосов
/ 19 мая 2011

Я думаю, это потому, что ключ в вашем массиве $options содержит пробелы.Что полностью допустимо / законно в PHP, но в HTML, когда форма отправляется, она не нравится.

Попробуйте изменить их на $options["PC1"] и т. Д. И посмотрите, исправляет ли это.

Редактировать : из руководства PHP - list() only works on numerical arrays and assumes the numerical indices start at 0.

Попробуйте изменить test.php на:

<?php
include("options.php");
$chosenValue = $_POST['option'];
$year = $options[$chosenValue]['year'];
$colour = $options[$chosenValue]['colour'];

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