while循环只显示第一个结果

时间:2015-03-20 13:17:36

标签: php mysql

    <div class="row">
<?php 

require 'config.php';
$query = "SELECT * FROM `posts` ORDER BY `id` DESC LIMIT 8";
$do = mysqli_query($con, $query) ;
while ($result = mysqli_fetch_array($do)){
$query="SELECT * FROM `lang` where id='$result[langid]'";
$do=mysqli_query($con,$query);
$lang=mysqli_fetch_array($do);
$query="SELECT * FROM `users` where id='$result[userid]'";
$do=mysqli_query($con,$query);
$user=mysqli_fetch_array($do);
$String=$result['titel'];
$text_length = 30; // طول الحروف المراد ظهورها
if (strlen($String) > $text_length) {
// اذا كان طول النص اكبر من النص المراد ظهورة نفذ التالي
$String = substr($String, 0, 33);
// قص من النص التالي ما بعد الرقم في المتغير الخاص بطول الحروف المراد ظهورها
$String .= " ...";
// اضف إلى النص بعد ارجاعه هذه النقاط
}
?>
<div class="col-md-3" >
<div class="panel  panel-default ">
<!-- Default panel contents -->
<div class="panel-heading" >


<?php 


echo $String;
?>
</div>
<div class="panel-body">
<p><span class="glyphicon glyphicon-user"></span><b>&nbsp;<?php echo $user['username']; ?></b> </p>
<p> <span class="glyphicon glyphicon-folder-open"></span><a href="posts?lang=<?php echo $lang['id']; ?>"><b>&nbsp;<?php echo $lang['name']; ?></b></a></p>
</div>
<a href="show<?php echo $result['id']; ?>"><div class="panel-footer text-center ">
<b>عرض التحدي</b>
</div></a>
</div>
</div>
<?php   } ?>
</div>

嗨,这是代码,它只显示while循环中的第一个结果,我想要8个结果 我有3个来自MySQL的表和3个查询我尝试了所有可能但没有改变的东西。

任何帮助?

它是PHP 5.4和mysqli类

Update: now the code works

<div class="row">
<?php 

require 'config.php';
$query = "SELECT * FROM `posts` ORDER BY `id` DESC LIMIT 8";
$do = mysqli_query($con, $query) ;
while ($result = mysqli_fetch_assoc($do)){

$query="SELECT * FROM `lang` where id='$result[langid]'";
$do1=mysqli_query($con,$query);

$query="SELECT * FROM `users` where id='$result[userid]'";
$do2=mysqli_query($con,$query);

$String=$result['titel'];
$text_length = 30; // طول الحروف المراد ظهورها
if (strlen($String) > $text_length) {
// اذا كان طول النص اكبر من النص المراد ظهورة نفذ التالي
$String = substr($String, 0, 33);
// قص من النص التالي ما بعد الرقم في المتغير الخاص بطول الحروف المراد ظهورها
$String .= " ...";
// اضف إلى النص بعد ارجاعه هذه النقاط
}
?>
<div class="col-md-3" >
<div class="panel  panel-default ">
<!-- Default panel contents -->
<div class="panel-heading" >


<?php 

while ( $user=mysqli_fetch_assoc($do2) AND    $lang=mysqli_fetch_assoc($do1) ){
echo $String;
?>
</div>
<div class="panel-body">
<p><span class="glyphicon glyphicon-user"></span><b>&nbsp;<?php echo $user['username']; ?></b> </p>
<p> <span class="glyphicon glyphicon-folder-open"></span><a href="posts?lang=<?php echo $lang['id']; ?>"><b>&nbsp;<?php echo $lang['name']; ?></b></a></p>
</div>
<a href="show<?php echo $result['id']; ?>"><div class="panel-footer text-center ">
<b>عرض التحدي</b>
</div></a>
</div>
</div>
<?php   }} ?>
</div>

1 个答案:

答案 0 :(得分:0)

您正在执行多个查询,但仅在最后一个SELECT * FROM 'users' where id='$result[userid]'上进行循环,并且听起来此查询将为您提供单个结果。 (单个用户)

您可以存储每个查询的结果,稍后在一个循环中全部使用它们,也可以连接表格以从单个查询中获取所需的所有数据。