2009-11-27 16 views
6

È il loro modo in un ciclo while di assegnare una variabile a una classe in un div, per ogni terzo elemento di un ciclo while. Sto usando la struttura blueprint e il terzo div è alla fine e ho bisogno di allegare un nome di classe "last" ad ogni terzo div quindi 3a div 6a div 9th div e così via?php while variabile loop per ogni terzo div

/* LOOP THROUGH SHOEDATA TABLE */ 

$results = mysql_query("SELECT * FROM shoeData"); 


while($row = mysql_fetch_array($results)){ 

$name = $row['name']; 
$about = $row['about']; 
$company = $row['company']; 
$buy = $row['buy']; 
$tags = $row['tags']; 
$id = $row['id']; 
$image = $row['image']; 


/* ECHO THE SHOEDATA RESULTS */  

    echo "<div class='imageBorder span-8 column'>"; 
     echo "<div id='imageHeight'>"; 
     echo "<img src='thumbs/$image'>"; 
     echo "</div>"; 

     echo "<ul>"; 

      echo "<li>$name</l1>"; 
      echo "<li>$about</l1>"; 
      echo "<li>$company</l1>"; 
      echo "<li><a href='$buy'>BUY</a></l1>"; 
      echo "<li>$tags</l1>"; 
     echo "</ul>"; 
    echo "</div>"; 


}/*SHOEDATA WHILE LOOP ENDS */ 

risposta

27
for ($i = 0; $i < $numRecords; $i++) 
{ 
$className = ""; 
if (($i % 3) == 0) 
{ 
    $className = "last" 
} 

.... 
} 

La parte chiave qui è la ($i % 3) == 0.

MODIFICA: Quanto segue è in risposta al tuo commento.

/* LOOP THROUGH SHOEDATA TABLE */ 

$results = mysql_query("SELECT * FROM shoeData"); 

$i = 0; 
while($row = mysql_fetch_array($results)){ 
$i++; 
$name = $row['name']; 
$about = $row['about']; 
$company = $row['company']; 
$buy = $row['buy']; 
$tags = $row['tags']; 
$id = $row['id']; 
$image = $row['image']; 


/* ECHO THE SHOEDATA RESULTS */   
    $additionalClass = ($i % 3) == 0 ? " last" : ""; 
    echo "<div class='imageBorder span-8 column" . $additionalClass . "'>"; 
     echo "<div id='imageHeight'>"; 
     echo "<img src='thumbs/$image'>"; 
     echo "</div>"; 

     echo "<ul>"; 

       echo "<li>$name</l1>"; 
       echo "<li>$about</l1>"; 
       echo "<li>$company</l1>"; 
       echo "<li><a href='$buy'>BUY</a></l1>"; 
       echo "<li>$tags</l1>"; 
     echo "</ul>"; 
    echo "</div>"; 


}/*SHOEDATA WHILE LOOP ENDS */ 
+0

Hey Sono abbastanza nuovo in questo, come potrei implementarlo sopra, ho aggiunto il mio codice sopra –

+0

Impressionante Totalmente funzionante –

1
$sql = "SELECT * FROM shoeData"; 
$results = mysql_query($sql); 
while($row = mysql_fetch_array($results)) { 

    // whatever code here 

} 

Non sembra che MySQL è abbastanza intelligente eseguire operazioni durante il confronto al vero valore è necessario specificare $sql, $result perché sembra $row = mysql_fetch_array($results) è TRUE in modo che si blocca sul vero carico del primo fila di dati per sempre.

2

Se si desidera eseguire questa operazione sul lato client, è possibile farlo con CSS3 (aggiungere JS per i browser più vecchi [DOMAssistant + Selectivizr]).

CSS: div.imageBorder:nth-child(3n) { /* style attributes will be applied to every 3rd div */ }

0

Se l'intenzione è quella di fare qualcosa ogni X uso oggetto modulo. modulo è il resto della divisione e diventa zero se la divisione è esatta un numero intero.

if(!($counter%3)) { 
    // this is 3 6 9 etc. 
} 
$counter++; 

Naturalmente puoi farlo con qualsiasi numero.