ايجاد حلقه

mona.joon

Member
سلام
يك كوئري نوشتم كه ميخوام بعد از هر 3 باري كه حلقه while جواب و چاپ ميكنه يك بار هم <li> چاپ بشه
از اين كد استفاده كردم ولي نشد
PHP:
$num = 1;
while($rows = mysql_fetch_array($sql)){
switch ($num) {
                                case 1:
                                $num = $num++;
                                
                                case 2:
                                $num = $num++;
                                
                                case 3:
                                $num = 1;
                                $li = '<li>';
                                $li1 = '</li>';
                                
                            }
if(isset($li)) echo $li;
.
.
.
.
.
if(isset($li1)) echo $li1;
}
وقتي از صفحه view source ميگيرم بعد از هر بار چاپ خروجي كوئري يكبار هم تگ <li> چاپ شده در صورتي كه بايد بعد از 3 بار اجرا چاپ بشه.
لطفا راهنمائي كنيد
مرسي
 

BehrouzPc

پــــادشــاه فــلــــش
شما می بایست در اون دو حالت دیگر مقدار های $li و$li1را مساوی با null قرار دهید یا مقدار خالی
بعد در زمان چک کردن
PHP:
if ( $li !="") {

echo $li;
}
همین

در کد شما در اولین باری که $li مقدار می گیرد در مراحل بعدی هم همان مقدار در آن باقی می ماند و باعث تکرار چاپ شدن و در واقع true شدن شرط می شود

موفق و پیروز باشید
 

mona.joon

Member
كاري كه شما گفتيد و انجام دادم و كد و به اين شكل تغيير دادم ولي هم چنان بعد از هر بار چاپ كوئري تگ هاي li باز و بسته ميشن :sad:
PHP:
switch ($num) {
                                case 1:
                                $num = $num++;
                                $li = NULL;
                                $li1 = NULL;
                                break;
                                case 2:
                                $num = $num++;
                                $li = NULL;
                                $li1 = NULL;
                                break;
                                case 3:
                                $num = 1;
                                $li = '<li>';
                                $li1 = '</li>';
                                break;
                            }
                                 if ( $li != NULL) {
                echo $li;
                }  
if ( $li1 != NULL) {
                        echo $li1;
                        }
 

Masoud1365

مدیر انجمن
PHP:
$i = 0;
while(conditions){
    if($i % 3 == 0){
        echo '<li>Li Test</li>';
    }
    $i++;
    //some code here
}
 

mona.joon

Member
PHP:
$i = 0;
while(conditions){
    if($i % 3 == 0){
        echo '<li>Li Test</li>';
    }
    $i++;
    //some code here
}
اينجوري كه نميشه
فرضا من يك كوئري رو اجرا ميكنم
قبل از اولين باري كه كوئري اجرا ميشه تگ <li> چاپ ميشه و بعد از سومين خروجي كه از كوئري چاپ ميشه هم تگ </li> بسته ميشه
حالا ممكنه اون كوئري كه من گرفتم شامل 9 تا جواب باشه كه 3 بار تگ <li> باز و بسته ميشه
اين كه شما نوشتين همزمان هم تگ و باز ميكنه هم ميبنده !
 

sharktech

کاربر فعال
البته اگه منظورتون رو درست متوجه شده باشم!

PHP:
$i = 0;
while(mysql_fetch_array($sql)){
    if($i % 3 == 0){
        echo '<li>';
    }
    
    //echo you'r content here
    
    if($i % 3 == 0){
        echo '</li>';
    }
    $i++;
}
 

mona.joon

Member
مرسي از همه كه وقت گذاشتيد راهنمائي كرديد .:rose:
خودم حلش كردم درست شد.
 
آخرین ویرایش:

Masoud1365

مدیر انجمن
اينجوري كه نميشه
فرضا من يك كوئري رو اجرا ميكنم
قبل از اولين باري كه كوئري اجرا ميشه تگ <li> چاپ ميشه و بعد از سومين خروجي كه از كوئري چاپ ميشه هم تگ </li> بسته ميشه
حالا ممكنه اون كوئري كه من گرفتم شامل 9 تا جواب باشه كه 3 بار تگ <li> باز و بسته ميشه
اين كه شما نوشتين همزمان هم تگ و باز ميكنه هم ميبنده !

اینو که من مثال زدم که شما ببینی خودت چطوریه :wink:
 

MMSHFE

Active Member
با سلام، همون كدي كه خودتون اول نوشتين درسته فقط break نگذاشته بودين واسه caseهاي اول و دوم.
خلاصه كد ميشه اين:
PHP:
$count=0;
while($row=mysql_fetch_assoc($sql))
{
    $count++;
    //Do whatever you want
    if($count==3)
    {
        echo '<LI></LI>';
        $count=0;
    }
}
موفق باشيد.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا