-1

我正在制作一个函数,其中我以逗号分隔的单词形式从 mysql 表中获取结果。我使用 explode 将它们分开,然后尝试在 for 循环的 if 和 else 语句中进行条件检查。但是条件检查不起作用我试图回显来自数据库的结果,结果是V并且在我的函数中有条件检查V但它在这里不起作用是我的代码

    function partner_diet($page,$user_id)
    {
        $getrow=mysql_query("SELECT * from partner_prefrences where uid='$user_id'");
        $results=mysql_fetch_array($getrow);
        $string=$results['diet'];
        $string = preg_replace('/\.$/', '', $string); //Remove dot at end if exists                                                       
        $array = explode(',', $string); //split string into array seperated by ', '
         //loop over values

        ?>
        <select name="mipdiet" class="mipdiet" multiple="multiple"> 
        <option  <?php foreach($array as $value) { if($value=='V') {?> checked <?php } } ?> name="pdiet" value="V"> Vegetarian </option>
        <option  <?php foreach($array as $value) { if($value=='N') {?> checked <?php } } ?> name="pdiet" value="N"> Non Vegetarian </option>
        <option  <?php foreach($array as $value) { if($value=='J') {?> checked <?php } } ?> name="pdiet" value="J"> Jain </option>
        <option  <?php foreach($array as $value) { if($value=='E') {?> checked <?php } } ?> name="pdiet" value="E"> Eggetarian </option>
        </select>
        <?php
    }
4

2 回答 2

3

几个提示。

  • 不要*在您的查询中使用,特别是如果您只想使用一个字段。在您的选择语句中指定字段。
  • 我建议你使用mysql_fetch_assoc()
  • 您正在循环一个数组四 (4) 次。有一个函数可以在数组中搜索元素。利用in_array()
  • 调试时,您可以使用var_dump()查看每个变量的内容,无论其类型如何。我建议你从上到下。

祝你好运,希望这会有帮助。干杯!

于 2013-06-04T00:04:51.063 回答
1

我不是 php 专家,但 $string 是数据库中列的数组,你不需要循环吗???因为正确知道您有一个数组,并且您尝试删除数组末尾的点。

同样在您的 html 中,您的选择我不记得该选项的属性检查更像 selected=selected。

于 2013-06-04T00:21:31.267 回答