הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   ירידת שורה בלולאה (https://hosts.co.il/forums/showthread.php?t=20471)

-VladK- 22-04-06 20:13

ירידת שורה בלולאה
 
שלום.
נגיד יש לי לולאה מסוימת....איך אני יכול לעשות שאחרי כול 3 פעמים של הצגת נתונים הוא ירד שורה?
נגיד הלולאה לוקחת נתונים מהמסד...
אז איך אני יעשה שאחרי 3 שורות הוא ירד שורה?

meshuga 22-04-06 20:46

ציטוט:

נכתב במקור על ידי VLAD-K
שלום.
נגיד יש לי לולאה מסוימת....איך אני יכול לעשות שאחרי כול 3 פעמים של הצגת נתונים הוא ירד שורה?
נגיד הלולאה לוקחת נתונים מהמסד...
אז איך אני יעשה שאחרי 3 שורות הוא ירד שורה?

2 אפשרויות שיפעלו אותו דבר:
1.לקחת משתנה לשים בו 0 ולהתחיל להעלות אותו ב1 (++) ואז לבדוק אם הוא מתחלק ב3 ללא שארית..ואם כן לבצע פעולה כלשהיא...
2.לקחת משתנה לשים בו 0 ולהתחיל להעלות אותו ב1 (++) ואז לבדוק אם הוא מתחלק ב3 ללא שארית..ואם כן לבצע פעולה כלשהיא ולאפס אותו חזרה (שלדעתי ככה זה יותר טוב כי בצורה הראשונה הוא יכול להגיע למספרים גדולים ולקחת הרבה זיכרון...תלוי כמה יש לך בלולאה..)...

-VladK- 23-04-06 05:45

אההההם...לצערי לא ממש הבנתי אותך....אהההם אתה יכול להביא לי דוגמה?

eXtaZa 23-04-06 06:10

אתה עושה משתנה שנקרא לו פה לדוגמא x.
נאתחל את המשתנה ל0 כך:
PHP קוד:

$x=0

ועכשיו נוציא את הנתונים מהמסד ונגדיל כל פעם את המשתנה ב1:
PHP קוד:

$x=0;
while(
$a_row mysql_fetch_row($Result)){
    if(
$x==3){
        echo 
"<BR>";
        foreach(
$a_row as $value)
            echo 
"$value";
    }
    else
    foreach(
$a_row as $value)
    echo 
"$value";
$x++;


אז... איתחלנו את המשתנה שלנו (x) ל0, ואחרי זה עשינו לולאה שתעבור בין כל השורות במסד נתונים. בדקנו אם x שווה ל-3 . אם כן אז שירד לנו שורה קודם כל ואז ידפיס כל אחד מן האיברים במערך, ואם הוא לא שווה ל3 אז שידפיס לנו כל אחד מן האיברים במערך, ללא ירידת שורה.

הבנת?

Itay 23-04-06 06:41

אפשר פשוט ככה, בתוך הלולאה אתה שם את זה:
PHP קוד:

if($x == 0)
   echo 
"<br />"

לפני הלולאה כמובן צריך לאפס את $x, ובתחילת הלולאה אתה מעלה את הערך של $x ב-1 ($x++)

לא יהרוג את השרת גם אם המשתנה יכיל מספר של כמה מאות.. זה לא באמת לוקח לו יותר מידי זמן.. ואני מניח שאתה לא שולף כ"כ הרבה תוצאות כל פעם

Rom 23-04-06 12:06

הדרך של eXtaZa טובה
אבל יש עוד דרך כמעט אותו הדבר

קוד:

$i = "0";
while($result = mysql_fetch_row($query)){
$id = $result["id"];
echo $id;
if ($i == "3") {
echo "<br />";
$i = "0";
}
else {
$i++
}
}

בהתחלה עשינו לולאה וקראנו את המידע של ID מהמסד
וכל פעם זה ירשום את הID אחרי זה זה בודק אם i שווה ל3 אם כן אז שירד שורה ויאפס את I אם לא שיעלה את i באחד.

BlueNosE 23-04-06 12:10

ציטוט:

נכתב במקור על ידי Itay
אפשר פשוט ככה, בתוך הלולאה אתה שם את זה:
PHP קוד:

if($x == 0)
   echo 
"<br />"

לפני הלולאה כמובן צריך לאפס את $x, ובתחילת הלולאה אתה מעלה את הערך של $x ב-1 ($x++)

לא יהרוג את השרת גם אם המשתנה יכיל מספר של כמה מאות.. זה לא באמת לוקח לו יותר מידי זמן.. ואני מניח שאתה לא שולף כ"כ הרבה תוצאות כל פעם

PHP קוד:

if($x == 0){
   echo 
"<br />";$x 0;} 

יצרוך פחות זמן..

-VladK- 24-04-06 05:49

תודה רבה עזרתם לי מאוד!

Morishani 24-04-06 15:58

RE
 
ציטוט:

נכתב במקור על ידי BlueNosE
PHP קוד:

if($x == 0){
   echo 
"<br />";$x 0;} 

יצרוך פחות זמן..

אם כבר אז השוואה ולא mod, חבל על זמן החישוב ;)
PHP קוד:

if($x==3)
{
echo 
"<br />";$x=0;




כל הזמנים הם GMT +2. הזמן כעת הוא 07:13.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ