我的php循环有什么问题?

时间:2016-02-20 02:56:47

标签: php for-loop foreach

我有一个名为pages的表,在名为Page的列中有两个带有相同单词'about'的条目。我想根据具有相同页面名称的条目数创建div

这应该很容易,但它无法看出它出错的地方。

我有一个名为page的变量,我回显到它看起来像这样的索引页面:

$page = pageDivs($dbc, $path['call_parts'][0])

在这种情况下,$path变量将等于字符串'about'。

函数pageDivs($dbc, about)看起来像这样:

function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
for ($i=1; $i<count($data); $i++) {
    echo '<div id="Content'.$i.'">'.$data['Content'].'</div>';
    }
}

或者这个:

function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
$i=1;
foreach ($data AS $value){
    if ($i>count($data)){
    echo '<div id="Content'.$i.'">'.$value['Content'].'</div>';
    $i++;
        }
    }

或者这个:

function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$data=mysqli_fetch_assoc($r);
$i=1;
foreach ($data AS $key=>$value){
    if ($i>count($data)){
    echo '<div id="Content'.$i.'">'.$data[$i]['Content'].'</div>';
    $i++;
        }
    }
}

我已尝试过fetch_assocfetch_array以及除$k => $v之外的所有组合,我将数据放在任何地方或$key到处或$value无处不在。这让我疯了。

我显然遗漏了一些基本的东西,所以有人请你开导我。如果我使用for循环或foreach循环,我真的不在乎。结果应该是一样的。有时我会得到7次迭代,1次其他我根本没有得到任何东西。明确有2个具有相同名称的条目,因此在这种情况下,最大div s应为2,但我希望它保持动态。

2 个答案:

答案 0 :(得分:0)

虽然Loop是那个:

function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
$i=1;
while ($data=mysqli_fetch_assoc($r)){?> 
    <div id="Content<?php echo $i; ?>">
        <?php echo $data['Content']?>
    </div>
    <?php $i++;
    }
}

答案 1 :(得分:0)

$data变量中只有一个结果,最好使用mysqli_num_rows($r);来计算您有多少结果。

<?php 
function pageDivs($dbc, $id){
$q="SELECT * FROM pages WHERE Page='$id'";
$r = mysqli_query($dbc, $q);
//$data=mysqli_fetch_assoc($r);
$numofrowresult=mysqli_num_rows($r); //Count how many result you have
echo $numofrowresult;
$i = 1; //initalize counter for  the unique id

foreach($r as $values)
{
      echo '<div id="Content'.$i.'">'.$values['Content'].'</div>';
      $i++;
}
}

?>