ugrás a tartalomhoz

Két ciklus egyesítése

mauladam · 2011. Feb. 27. (V), 13.41
Sziasztok!

Az előzőleg nyitott témámban, volt egy gondom amit nem tudtam hogy oldjak meg.

van 4 ciklusom.
ezekből 2-t kéne csinálni(szerintem)
Mert az volt a gond, utólag rájöttem hogy azért nem íródott k mindegyiknél a kiírandó szöveg, mert az második és a negyedik ciklus csak akkor futott le, ha az elsőnek és a harmadiknak vége volt.
Ezért szerintem az lenne a megoldás hogy az első-második, illetve a harmadik-negyedik ciklust eggyesíteném.
Csak az a gond hogy nem tudom hogy ezt hogy valósítsam meg.

A kódrészletek:

Első ciklus:
  1. $sqln = "SELECT cim, tartalom FROM news";      
  2. $resultn = mysql_query($sqln);      
  3. if (mysql_num_rows($resultn)) {     
  4.   while ($row = mysql_fetch_assoc($resultn)) {      
  5.         echo "<font size='6' color='red' name='Comic Sans MS'>";  
  6.             echo $row['cim'];  
  7.               echo "</font>";  
  8.             echo "<br><br>";  
  9.               echo "<font size='5' color='yellow' name='Comic Sans MS'>";  
  10.         echo $row['tartalom'];    
  11.             echo "</font>";  
  12.             echo "<br>";  
  13.         echo "<form name='comments' method='post' action='comments.php'>  
  14. <table align='center'>  
  15. <tr>  
  16. <td><textarea name='comment' rows='4' cols='40'></textarea></td>  
  17. </tr>  
  18. <tr>  
  19. <td><input type='submit' value='KĂĽldĂ©s'></td>  
  20. </tr>  
  21. </table>  
  22. </form>";  
  23.       }    
  24. else {      
  25.   print "Nincsenek hírek az archívumban!<br>";      
  26. }      


Második ciklus:
  1. $sqlc = "SELECT tartalom FROM comments";      
  2. $resultc = mysql_query($sqlc);      
  3. if (mysql_num_rows($resultc)) {     
  4.   while ($row = mysql_fetch_assoc($resultc)) {  
  5.   echo "<font size='3' color='blue' name='Comic Sans MS'>";  
  6.   echo $row['tartalom'];  
  7.   echo "</font>";   
  8.   echo "<br>";  
  9.   }    
  10. else {      
  11.   print "<font color='green' size='3' name='Comic Sans MS'><br>Még nem érkeztek kommentek.<br></font>";      
  12. }      
Harmadik ciklus:
  1. $sqla = "SELECT cim, tartalom FROM articles";      
  2. $resulta = mysql_query($sqla);      
  3. if (mysql_num_rows($resulta)) {     
  4.   while ($row = mysql_fetch_assoc($resulta)) {       
  5.         echo "<font size='6' color='red' name='Comic Sans MS'>";  
  6.             echo $row['cim'];  
  7.               echo "</font>";  
  8.         echo "<br><br>";  
  9.             echo "<font size='5' color='yellow' name='Comic Sans MS'>";  
  10.         echo $row['tartalom'];    
  11.         echo "</font>";         
  12.         echo "<br>";   
  13.             echo "<form name='comments' method='post' action='comments.php'>  
  14. <table align='center'>  
  15. <tr>  
  16. <td><textarea name='comment' rows='4' cols='40'></textarea></td>  
  17. </tr>  
  18. <tr>  
  19. <td><input type='submit' value='KĂĽldĂ©s'></td>  
  20. </tr>  
  21. </table>  
  22. </form>";  
  23.       }    
  24. else {      
  25.   print "Nincsenek bejegyzések az archivumban!<br>";      
  26. }      
Negyedik ciklus:
  1. $sqlc = "SELECT tartalom FROM comments";      
  2. $resultc = mysql_query($sqlc);      
  3. if (mysql_num_rows($resultc)) {     
  4.   while ($row = mysql_fetch_assoc($resultc)) {  
  5.   echo "<font size='3' color='blue' name='Comic Sans MS'>";  
  6.   echo $row['tartalom'];  
  7.   echo "</font>";  
  8.   echo "<br>";  
  9.   }    
  10. else {      
  11.   print"<font color='green' size='3' name='Comic Sans MS'><br>Még nem érkeztek kommentek.<br></font>";      
  12. }      
A második és a negyedik ciklus ugyan az.
ELvileg az is jó megoldás lenne ha az első-második ill. a harmadik negyedik ciklusok felváltva futnának le.
Ezért gondoltam az egyesítésre, nem látok más megoldást.

Kösz a segítséget.
 
1

Mert az volt a gond, utólag

ironwill · 2011. Feb. 27. (V), 14.17
Mert az volt a gond, utólag rájöttem hogy azért nem íródott k mindegyiknél a kiírandó szöveg, mert az második és a negyedik ciklus csak akkor futott le, ha az elsőnek és a harmadiknak vége volt.


Nekem még mindig zavaros.
A szekvenciális kód végrehajtás így működik.. nem tudom ezen mi a meglepő..?
Miért ne írta volna ki, még ha később is történt meg..? Vagy, akkor más miatt nem írta ki.

..az első-második, illetve a harmadik-negyedik ciklust eggyesíteném..


Ennek így nincs sok értelme. A második és negyedik teljesen azonos, így azt miért nem elég egyetlen egyszer végrehajtani, mondjuk a legvégén? Az első és a harmadik más táblákból listáz, azért nem lehet azokat összevonni.. (bár ha nincs a két tábla között kapcsolat, akkor lehet értelme, de ez nem látszik a kódodból)

Első ciklus -> 1. >> Második ciklus -> 3. >> Harmadik ciklus <- 2.
Én a helyedben elhagynám a negyedik ciklust és a harmadikat az első és a második közé helyezném át.

De mindezeknek semmi köze ahhoz a hibához, amiről beszéltél. Ha még mindig fenn áll a hiba, akkor nézd meg az adatbázisodban az értékeket, futtasd le az sql szkripteket, amit php-ben használsz. Ha az sql rendben van, akkor vizsgálhatod tovább a php kódot, hogy hol lehet a hiba.
2

join+group_by amivel meg

inf · 2011. Feb. 28. (H), 07.32
join+group_by amivel meg lehet oldani, hogy a comment-ek egyben jöjjenek le a tartalommal, de ha bármit írhatnak comment-be, akkor nehéz lesz megfelelő határolót találni a string összefűzéshez a group_by-nál. Ciklus így sem lesz kevesebb, mert külön végig kell menni a comment-eken, viszont sql kérésből kevesebb lesz, így gyorsulhat az oldal.

A két comment-es ciklus ugyanaz, szóval nyugodtan be lehet tenni őket egy függvénybe.