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:
$sqln = "SELECT cim, tartalom FROM news";    
$resultn = mysql_query($sqln);    
if (mysql_num_rows($resultn)) {   
  while ($row = mysql_fetch_assoc($resultn)) {    
        echo "<font size='6' color='red' name='Comic Sans MS'>";
		    echo $row['cim'];
			  echo "</font>";
		    echo "<br><br>";
			  echo "<font size='5' color='yellow' name='Comic Sans MS'>";
        echo $row['tartalom']; 	
		    echo "</font>";
		    echo "<br>";
        echo "<form name='comments' method='post' action='comments.php'>
<table align='center'>
<tr>
<td><textarea name='comment' rows='4' cols='40'></textarea></td>
</tr>
<tr>
<td><input type='submit' value='Küldés'></td>
</tr>
</table>
</form>";
      }  
} else {    
  print "Nincsenek hírek az archívumban!<br>";    
}    


Második ciklus:
$sqlc = "SELECT tartalom FROM comments";    
$resultc = mysql_query($sqlc);    
if (mysql_num_rows($resultc)) {   
  while ($row = mysql_fetch_assoc($resultc)) {
  echo "<font size='3' color='blue' name='Comic Sans MS'>";
  echo $row['tartalom'];
  echo "</font>"; 
  echo "<br>";
  }  
} else {    
  print "<font color='green' size='3' name='Comic Sans MS'><br>Még nem érkeztek kommentek.<br></font>";    
}    
Harmadik ciklus:
$sqla = "SELECT cim, tartalom FROM articles";    
$resulta = mysql_query($sqla);    
if (mysql_num_rows($resulta)) {   
  while ($row = mysql_fetch_assoc($resulta)) {     
        echo "<font size='6' color='red' name='Comic Sans MS'>";
		    echo $row['cim'];
			  echo "</font>";
        echo "<br><br>";
		    echo "<font size='5' color='yellow' name='Comic Sans MS'>";
        echo $row['tartalom'];  
        echo "</font>";		
        echo "<br>"; 
		    echo "<form name='comments' method='post' action='comments.php'>
<table align='center'>
<tr>
<td><textarea name='comment' rows='4' cols='40'></textarea></td>
</tr>
<tr>
<td><input type='submit' value='Küldés'></td>
</tr>
</table>
</form>";
      }  
} else {    
  print "Nincsenek bejegyzések az archivumban!<br>";    
}    
Negyedik ciklus:
$sqlc = "SELECT tartalom FROM comments";    
$resultc = mysql_query($sqlc);    
if (mysql_num_rows($resultc)) {   
  while ($row = mysql_fetch_assoc($resultc)) {
  echo "<font size='3' color='blue' name='Comic Sans MS'>";
  echo $row['tartalom'];
  echo "</font>";
  echo "<br>";
  }  
} else {    
  print"<font color='green' size='3' name='Comic Sans MS'><br>Még nem érkeztek kommentek.<br></font>";    
}    
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.