while循环if if语句不起作用

时间:2014-04-21 23:22:31

标签: php mysql

我有这个代码片段无法正常工作,不知道出错了什么,从MYSQL数据库获取内容并使用带有if else循环的while语句来回显内容。< / p>

<?php 

                if ($row_item['cat_item_id'] == ''){
                        echo '<div class="col-sm-6 col-md-3"">

                        </p>
                        <p>
                          No Item To Show
                        </p>
                      </div>
                  </div>';
                    }

                else  {                       
                  while ($row_item = mysql_fetch_assoc($item)){
                      echo
                  '
                <div class="col-sm-6 col-md-3" style="'.$row_item['display'].'">
                      <div class="thumbnail">
                        <img src="myaccount/user_data/'.$row_item['file_name'].'" />
                      </div>
                      <div class="caption">
                        <h3>'.$row_item['item_name'].'</h3>
                                             <p>
                          <a href="item_detail.php?item='.$row_item['cat_item_id'].'" class="btn btn-primary" role="button">
                           View Item
                          </a> 
                          <a href="contact_seller.php?contact='.$row_item['cat_item_id'].'" class="btn btn-default" role="button">
                          Contact Owner
                          </a>
                        </p>
                      </div>
                  </div>';
                  }

                }

                    ?>

帮我弄清楚哪些方法做得不对。

3 个答案:

答案 0 :(得分:1)

您正在检查是否

if ($row_item['cat_item_id'] == ''){
在你实际打电话之前

while ($row_item = mysql_fetch_assoc($item)){

获取$row_item


尝试将其更改为以下内容:

while ($row_item = mysql_fetch_assoc($item)){
    if ($row_item['cat_item_id'] == ''){

        echo '<div class="col-sm-6 col-md-3"">
              </p>
              <p>No Item To Show</p></div></div>';

    }else  {

        echo
                  '
                <div class="col-sm-6 col-md-3" style="'.$row_item['display'].'">
                      <div class="thumbnail">
                        <img src="myaccount/user_data/'.$row_item['file_name'].'" />
                      </div>
                      <div class="caption">
                        <h3>'.$row_item['item_name'].'</h3>
                                             <p>
                          <a href="item_detail.php?item='.$row_item['cat_item_id'].'" class="btn btn-primary" role="button">
                           View Item
                          </a> 
                          <a href="contact_seller.php?contact='.$row_item['cat_item_id'].'" class="btn btn-default" role="button">
                          Contact Owner
                          </a>
                        </p>
                      </div>
                  </div>';
    }
}

答案 1 :(得分:1)

你必须打电话时($ row_item = mysql_fetch_assoc($ item)) 第一名。

否则$ row_items无法正确初始化。

所以你把所有内容都放在里面

 while ($row_item = mysql_fetch_assoc($item))

并检查while内的if-else条件:

if ($row_item['cat_item_id'] == '') // this goes inside the while. Otherwise $row_item is not initialized properly

答案 2 :(得分:0)

尝试 mysql_fetch_array

while ($row_item = mysql_fetch_array($item)){
                  echo
              '
            <div class="col-sm-6 col-md-3" style="'.$row_item['display'].'">
                  <div class="thumbnail">
                    <img src="myaccount/user_data/'.$row_item['file_name'].'" />
                  </div>
                  <div class="caption">
                    <h3>'.$row_item['item_name'].'</h3>
                                         <p>
                      <a href="item_detail.php?item='.$row_item['cat_item_id'].'" class="btn btn-primary" role="button">
                       View Item
                      </a> 
                      <a href="contact_seller.php?contact='.$row_item['cat_item_id'].'" class="btn btn-default" role="button">
                      Contact Owner
                      </a>
                    </p>
                  </div>
              </div>';
              }