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

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

Startzero.net 06-07-07 01:28

עזרה בעיצוב לולאת PHP
 
שלום לכולם,
יש לי לולאה שקוראת מכלשהי טבלה 4 דברים.
PHP קוד:

<?php
                          
?>
                            
<table width="100%" border="0" align="center" cellpadding="3" cellspacing="3" class="forumsg">
                            
<?
                            
$select_comments 
mysql_query("SELECT * FROM `topics` order by tid desc LIMIT 4");
while(
$row mysql_fetch_array($select_comments)){
                          
$title $row['title'];
$poster $row['last_poster_name'];
$views $row['views']; 
$tid $row['tid'];
$lpid $row['last_poster_id'];
                          
                         
?>    
<tr>
<td align="left"><?=$views?></td>
<td>|</td>
<td align="right"><a href="http://www.startzero.net/scary/forum/index.php?showtopic=<?=$tid?>" target="_blank"><u><b><font color="#bb1111"><?=$title?></font></b></u></a><br /><a href="http://www.startzero.net/scary/forum/index.php?showuser=<?=$lpid?>" target="_blank"><font size="1" color="white" style="text-decoration:none;"><?=$poster?></font></a></td>
</tr>
<?
                          
                          
                          
}
                          
?>
</table>
<?

?>

עכשיו אני רוצה שזה יחליף צבע בכל סיום לולאה
זאת אומרת:

פלט שחור
פלט אדום
פלט שחור
פלט אדום

תודה רבה לעוזרים.

tbm 06-07-07 01:31

תגדיר משתנה חדש ותשווה אותו ל0 עכשיו תעשה תנגיד והמשתנה שלך הוא $X אז
if($X&#37;2==0)
echo "<font color="red">";
else
echo "<font color="black">";

Level-Serv 06-07-07 01:32

יש הרבה דרכים לעשות זאת.
אחת הדרכים היא לעשות מונה, שכאשר הוא זוגי זה ידפיס בצבע אדום ואם זה אי זוגי זה ידפיס בצבע שחור.
לדוגמא:
PHP קוד:

<?php
 $i 
1;
 while(
$i<=10) {
  if(
$i == 0) { //אם המונה זוגי
   //הדפס נתון בצבע שחור
  
} else {
   
//הדפס נתון בצבע אדום
  
}
  
$i++;
 }
?>


Startzero.net 06-07-07 01:52

ציטוט:

נכתב במקור על ידי Level-Serv (פרסם 515015)
יש הרבה דרכים לעשות זאת.
אחת הדרכים היא לעשות מונה, שכאשר הוא זוגי זה ידפיס בצבע אדום ואם זה אי זוגי זה ידפיס בצבע שחור.
לדוגמא:
PHP קוד:

<?php
 $i 
1;
 while(
$i<=10) {
  if(
$i == 0) { //אם המונה זוגי
   //הדפס נתון בצבע שחור
  
} else {
   
//הדפס נתון בצבע אדום
  
}
  
$i++;
 }
?>



ניר התותח תודה רבה לך.
אפשר לנעול(:

BlueNosE 06-07-07 02:24

יקח פחות זמן ישר להשוות: if ($i == 2)
זה חוסך את הפעולה החשבונית.

Eran-s 06-07-07 03:07

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 515025)
יקח פחות זמן ישר להשוות: if ($i == 2)
זה חוסך את הפעולה החשבונית.

מיליונית השנייה? ובכל אופן צריך לאפס אותו כל פעם.

חיים 06-07-07 08:03

ותר פשוט לעשות את זה ב-JS זה יהיה לך קוד בהרבה יותר קצר...

BlueNosE 06-07-07 11:47

ציטוט:

נכתב במקור על ידי masterpl (פרסם 515047)
ותר פשוט לעשות את זה ב-JS זה יהיה לך קוד בהרבה יותר קצר...

כן? ותסביר לי, איך אתה עושה את זה בJS בדיוק?
---
ערן
PHP קוד:

$i 0
   
while ($bla)
   {
   
$i++;
      if (
$i == 2)
      {
      
$i 0;
      
$bgColor "#dfkjddfk";
      }
      else
      
$bgColor "#fdgddg";
   } 

יותר יעיל, ומה שיותר יעיל יותר טוב, לא משנה בכלל אם זה מיליונית שניה או 3 שניות.

Eran-s 06-07-07 16:01

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 515134)
כן? ותסביר לי, איך אתה עושה את זה בJS בדיוק?
---
ערן
PHP קוד:

$i 0
   
while ($bla)
   {
   
$i++;
      if (
$i == 2)
      {
      
$i 0;
      
$bgColor "#dfkjddfk";
      }
      else
      
$bgColor "#fdgddg";
   } 

יותר יעיל, ומה שיותר יעיל יותר טוב, לא משנה בכלל אם זה מיליונית שניה או 3 שניות.

ובתור קומפיילר מאיפה אתה יודע מה יותר מהיר?

BlueNosE 06-07-07 17:36

בתור קומפיילר תבדוק בעצמך.

Eran-s 06-07-07 18:09

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 515460)
בתור קומפיילר תבדוק בעצמך.

אני לא קומפיילר, חשבתי אולי אתה.
תבדוק עם MIRCOTIME במשך 1000 פעמים ונעשה ממוצע.
אי אפשר לקבוע דברים בלי לבדוק אותם,
לך תדע איך בדיוק מתבצע החישוב הקטן הזה.

BlueNosE 06-07-07 18:58

אם לא הבנת באמת בדקתי את זה (לא עם 1000 אבל עם 100 כן).

Eran-s 06-07-07 19:02

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 515517)
אם לא הבנת באמת בדקתי את זה (לא עם 1000 אבל עם 100 כן).

עשית ממוצע? תביא תוצאות

BlueNosE 06-07-07 19:14

השיטה שלי:

0.00074100494384766
0.00080394744873047
0.000885009765625

PHP קוד:

<?php
list ($usec$sec) = explode (" "microtime());
$Start = ((float)$usec + (float)$sec);


$i 0;
$r 0;
    while (
$r <= 1000)
    {
    
$i++;
    
$r++;
        if (
$i == 2)
        {
        
$i 0;
        
$bgColor "#dfkjddfk";
        }
        else
        
$bgColor "#fdgddg";
    }


list (
$usec$sec) = explode (" "microtime());
$End = ((float)$usec + (float)$sec);

echo 
$End $Start;
?>


השיטה השניה:

0.013705015182495
0.0012309551239014
0.00081014633178711

PHP קוד:

<?php
list ($usec$sec) = explode (" "microtime());
$Start = ((float)$usec + (float)$sec);


$i 1;
$r 0;
    while (
$r <= 1000)
    {
    
$i++;
    
$r++;
        if (
$i &#37; 2 == 0)
        
$bgColor "#dfkjddfk";
        else
        
$bgColor "#fdgddg";
    }


list (
$usec$sec) = explode (" "microtime());
$End = ((float)$usec + (float)$sec);

echo 
$End $Start;
?>

בתוצאה האחרונה אין הבדל, ב2 הראשונות? ההבדל משמעותי.


שכחתי לציין, PHP 5.2.0, על סביבת Windows.

RS324 06-07-07 19:18

סתם לידע כללי
לחשב את הזמן יהיה הרבה יותר טוב לעשות ככה :

PHP קוד:

$start array_sum(explode(' ',microtime())); 

לגבי מה שאמרתם ה %2 הוא יותר טוב כי עם ה == אתה כל פעם צריך לאפס את I

Eran-s 06-07-07 19:31

ציטוט:

נכתב במקור על ידי RS324 (פרסם 515532)
סתם לידע כללי
לחשב את הזמן יהיה הרבה יותר טוב לעשות ככה :

PHP קוד:

$start array_sum(explode(' ',microtime())); 

לגבי מה שאמרתם ה %2 הוא יותר טוב כי עם ה == אתה כל פעם צריך לאפס את I

זה בדיוק מה שניסיתי להגיד...

BlueNosE 06-07-07 19:45

אבל עובדה שלא O.ם


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

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