login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Cursor verder in array (Opgelost)

Offline AgentX - 10/04/2012 07:25 (laatste wijziging 10/04/2012 07:26)
Avatar van AgentXHTML beginner Hallo luitjes,

Ik ben bezig met een scriptje die gegevens uit een MySQL DB haalt en die verwerkt in een nieuwsbrief. Zo zijn er artikelen die over de gehele breedte in op de pagina komen te staan, en artikelen die de helft innemen, zodat er twee teksten naast elkaar op één regel kunnen komen te staan.

De nieuwsbrief zit heel simpel in elkaar in een table:
  1. <tr>
  2. <td colspan=2>
  3. Tekst 100% breedte
  4. </td>
  5. </tr>
  6. <tr>
  7. <td width=50%>
  8. Tekst half artikel
  9. </td>
  10. <td width=50%>
  11. Tekst half artikel
  12. </td>
  13. </tr>


Normaal gesproken gebruik ik mysql_fetch_assoc() om de gegevens uit de DB te halen en in te vullen in de tabel. Punt is dat bij een artikel wat in een cel met 50% breedte geplaatst moet worden (en dus de volgende ook), de layout verschilt t.o.v. de artikelen met 100% breedte. Dit kan verwerkt worden in de while() loop die ik gebruik.

  1. <?php
  2. $q = mysql_query("SELECT * FROM `artikelen`");
  3. while($f = mysql_fetch_assoc($q)){
  4. if($f["size"] == full){ // 100% breedte
  5. // layout artikel 100% breedte
  6. }
  7. if($f["size"] == half){ // 50% breedte
  8. // layout artikel 50% breedte
  9. // layout volgende artikel 50% breedte
  10. }
  11. }
  12. ?>


Nu rest mijn vraag: hoe kan ik binnen de loop naar de volgende regel in mijn query-result gaan? Ik ben al een beetje aan het prutsen geweest met next(); en mysql_data_seek(); maar ik heb 'm nog niet helemaal door. Kan iemand mij een eindje op weg helpen?  

MVG,
Koen

6 antwoorden

Gesponsorde links
Offline qubus - 10/04/2012 19:32 (laatste wijziging 10/04/2012 19:32)
Avatar van qubus Lid Gewoon een
toevoegen op de regel waar je de volgende wilt ophalen...
Bedankt door: AgentX
Offline AgentX - 10/04/2012 19:34
Avatar van AgentX HTML beginner In de loop bedoel je? Volgens mij krijg je dan bij de volgende loop het artikel wat je al gehad hebt. Dus dan moet je er een over zien te slaan.
Offline qubus - 10/04/2012 19:42
Avatar van qubus Lid Nee hoor, probeer maar...
Offline AgentX - 10/04/2012 19:44
Avatar van AgentX HTML beginner We gaan er even mee aan de gang, thanks! ;)
Offline Martijn - 11/04/2012 19:50
Avatar van Martijn Crew PHP de while is helemaal prima zoals je m hebt, het enige wat je nodig hebt is in je while iets als dit:

  1. //Dit vóór je while
  2. $item100 = file_get_contents("item_100.html");
  3. $item50 = file_get_contents("item_50.html");
  4. $itemDefault = file_get_contents("item_100.html");
  5.  
  6. // Dit ín je while
  7. if($f["size"] == full){ // 100% breedte
  8. $template = $item_100;
  9. }
  10. elseif($f["size"] == half){ // 50% breedte
  11. $template = $item_50;
  12. }
  13. else{
  14. $template = $item_default;
  15. }

Per item wordt er even gekeken wat er moet worden gekozen
Bedankt door: AgentX
Offline AgentX - 11/04/2012 19:55
Avatar van AgentX HTML beginner Inmiddels heb ik het inderdaad op een soortgelijke manier gedaan.

In de while wordt gecheckt namens een veld in de DB of de breedte "full" of "half" is. Dan komt in een variabele de breedte te staan en een var $notr (van <tr>) krijgt 1. Met een if-statement aan het begin van de while wordt gecheckt of $notr = 1. Als dat zo is, komt er geen </tr> en komt hij dus in de cel op dezelfde regel. Om er voor te zorgen dat de volgende dan wel op een nieuwe regel komt, wordt (in dit geval) aan het eind een $notr = 0 geforceerd waardoor de volgende sowieso in een nieuwe tabel-rij komt.

Beetje omslachtig wellicht, maar het werkt! ;)
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.188s