<?php
$tab=$_GET['liste'];
$max=sizeof($tab);
echo$max;
echo$_GET['type'];
if ($_GET['type']='multiple')
{
?>
<form name='form'>
<select size=<?php $max ?> multiple>
<?php
for($i=0;$i<$max;$i++){
echo"<option value=$i>$tab[$i]</option>";
}
echo"</select>";
echo"</form>";
}
else{
?>
<form name='form'>
<select size=<?php $max ?>>
<?php
for($i=0;$i<$max;$i++){
echo"<option value=$i>$tab[$i]</option>";
}
echo"</select>";
echo"</form>";
}
?>
在两种情况下,它只显示下拉列表宽度单选,即使$ _GET [&#39; type&#39;] =&#39; multiple&#39; 。 我试过了
<select size=<?php $max ?> <?php echo$_GET['type']; ?>>
而不是
<select size=<?php $max ?> multiple>
但还是不行!! 请提出任何建议!
答案 0 :(得分:2)
更改
<select name='ville' size="$max" multiple>
到
<select name='ville' size="<?=$max?>" multiple>
答案 1 :(得分:0)
有很多需要在这里修复(没有冒犯),所以让我们从
开始if($_GET['type']='multiple')
所有这一切都是为$ _GET ['type']变量赋值'倍',所以这总是会命中。接下来,如前所述,您需要更改
<?php $max ?>
因为它目前什么也没做。接下来是
echo"<option value=$i>$tab[$i]</option>";
在字符串中使用数组元素时,必须包裹{
和}
让我们看看一些清理过的代码,因为这里有太多的错误来查明真正的问题:
<?php
$tab = $_GET['liste'];
$max = sizeof($tab);
#echo $max;
#echo $_GET['type'];
$multiple = '';
if($_GET['type'] == 'multiple')
{
$multiple = ' multiple="multiple"';
}
?>
<form name='form'>
<select size="<?php echo $max ?>" <?php echo $multiple; ?>>
<?php
foreach($tab as $key => $value)
echo "<option value='{$key}'>{$value}</option>";
?>
</select>
</form>
编辑:刚刚验证过 - 如果字符串中的变量引用了数组元素,那么它必须始终包含在{
和}
中(毕竟这不适用于对象) ):
$a = array('foo' => 'bar');
$o = new stdclass;
$o->foo = 'bar';
$o->baz = array('foo' => 'bar');
echo "$a['foo']"; // Syntax error
echo "$o->foo"; // echos "bar"
echo "{$a['foo']}"; // echos "bar"
echo "$o->baz['foo']"; // Syntax error
一般来说,总是用{
和}
将变量包装在字符串中是一个好主意,即使它是合法允许的:
echo "Something {$here}"; // Obvious variable is obvious