多个选择框甚至不显示多个属性

时间:2014-06-09 18:50:31

标签: php

<?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>

但还是不行!! 请提出任何建议!

2 个答案:

答案 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