代码之家  ›  专栏  ›  技术社区  ›  Avi E. Koenig

用数组创建的select元素上的PHP If语句

  •  1
  • Avi E. Koenig  · 技术社区  · 8 年前

    假设我们有:

    <select name="car">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>
    

    我的php是:

    if (isset($_POST['car']) && $_POST['car'] == "Audi") {
        echo 'Please select a better car.';
    }
    

    这是可行的。 但是,我对数组进行了生成选择:

    <select name="q1" value="<?php echo $q1 ?>">
            <?php foreach ($toppings as $key => $value) { ?>
                <option <?php if ($q1 == $key) { ?>selected="true" <?php }; ?>value="<?php echo $key ?>"><?php echo $value ?></option>
            <?php } ?>
        </select>
    

    <?php
    $toppings = array(1 => "Anchovie", 2 => "Tomato", 3 => "Corn", 4 => "Bulgarian", 5 => "Pineapple", 6 => "Pepperoni", 7 => "Green Olives", 8 => "Ground Beef", 9 => "Red Peppers", 10 => "Tuna", 11 => "Cheese");
    
    if (isset($_POST['q1']) && $_POST['q1'] == "Cheese") {
        echo 'you selected cheese!.';
    }
    ?>
    

    这不起作用,我自己也不知道为什么。 请帮忙, 非常感谢。

    5 回复  |  直到 8 年前
        1
  •  5
  •   Ondra Koupil    8 年前

    $_POST['q1'] .

    在里面 $\u POST['q1'] <option> ,而不是其文本内容。当生成 <select> ,您使用$key作为值属性,因此将有“1”、“2”、“3”而不是“Anchovie”、“Tomato”atd。

    所以,要么改变 if (isset($_POST['q1']) && $_POST['q1'] == "Cheese") if (isset($_POST['q1']) && $_POST['q1'] == "11") value="<?php echo $key ?>" value="<?php echo $value ?>" .

        2
  •  0
  •   lalithkumar    8 年前

    <?php
    $toppings = array(1 => "Anchovie", 2 => "Tomato", 3 => "Corn", 4 => "Bulgarian", 5 => "Pineapple", 6 => "Pepperoni", 7 => "Green Olives", 8 => "Ground Beef", 9 => "Red Peppers", 10 => "Tuna", 11 => "Cheese");
    
    if (isset($_POST['q1']) && $toppings[$_POST['q1']] == "Cheese") {
        echo 'you selected cheese!.';
    }
    ?>
    

    <select name="q1" value="<?php echo $q1 ?>">
            <?php foreach ($toppings as $key => $value) { ?>
                <option <?php if ($q1 == $key) { ?>selected="true" <?php }; ?>value="<?php echo $value ?>"><?php echo $value ?></option>
            <?php } ?>
    
        </select>
    if (isset($_POST['q1']) && $_POST['q1'] == "Cheese") {
            echo 'you selected cheese!.';
        }
    
        3
  •  0
  •   Murad Hasan    8 年前

    你的问题有几个错误-

    1. if (isset($_POST['car']) && $_POST['car'] == "Audi") { 你在比较 Audi audi
    2. selected="true" 这不是有效的语法,您需要使用 selected='selected'
    3. 比较 $_POST['q1'] == "Cheese" "Cheese" 或使用数组值的selectbox值。
        4
  •  0
  •   Avi E. Koenig    8 年前

    我看到的所有错误都将与键而不是值进行比较:)

    if (isset($_POST['q1']) && $_POST['q1'] == "11") {
        echo 'you selected cheese!.';
    }
    

    <3.

        5
  •  0
  •   Virendra Jadeja    8 年前

    $_POST['q1'] '11' 。您将在中获得所选选项的值 未选择选项文本。 因此,您的工作代码是:

    if (isset($_POST['q1']) && $_POST['q1'] == "11") {
    

    只要改变它,它就会起作用。