login  Naam:   Wachtwoord: 
Registreer je!
 Forum

loop problemen: bepaalde dingen laten herhalen AND andere dingen niet

Offline the_unknown - 04/05/2005 21:43 (laatste wijziging 04/05/2005 21:44)
Avatar van the_unknownNieuw lid Hallo

Ik ben net begonnen met m'n eigen website. Maar ik zit met een probleem: ik wil nl dat er nieuws gepost wordt op de site, maar dat dit gerangschikt wordt op datum.
Dus zoiets:
  1. -----------------------
  2. Datum
  3. -----------------------
  4. headline 1
  5. headline 2
  6. -----------------------
  7. volgende Datum
  8. -----------------------
  9. headline 1
  10. headline 2

en dat hij zo verder doet, totdat hij 30 headlines heeft. Nu is het me wel al gelukt om die 30 headlines weer te geven, maar nog niet de datum. Iemand een idee?
m'n code:
  1. <?php
  2. $selecteren="SELECT * FROM news";
  3. $uitvoeren=mysql_query ("$selecteren");
  4. $total= mysql_num_rows($uitvoeren);
  5. if($total>="30"){
  6. $total2 = $total-"30";
  7. }else{
  8. $total2 = "0";
  9. }
  10. $statement="SELECT * FROM news ORDER BY id DESC LIMIT $total2,$total";
  11. $exec= mysql_query($statement);
  12. echo "<img src='layout/images/modding.jpg' title='modding'> Modding || <img src='layout/images/weaken.jpg' title='tweaking'> Tweaking || <img src='layout/images/gadgets.jpg' title='gadgets'> Gadgets || <img src='layout/images/overige.jpg' title='overige'> Overige || <img src='layout/images/hardware.jpg' title='hardware'> Hardware<br><br>";
  13. $i="0";
  14. echo "<table valign=top>";
  15. while($i<=$total){
  16. $gegevens = mysql_fetch_array($exec, MYSQL_ASSOC);
  17. $categorie="$gegevens[cat]";
  18. echo "<tr><td>$categorie</td><td align=left valign=top style='border-bottom: 1px solid #7D7D7D' width='490'><a href=index.php?id=1&newsid=$gegevens[id]>$gegevens[title]</a></td></tr>";
  19. $i++;
  20. }
  21. echo "</table>";


mvg, the unknown

6 antwoorden

Gesponsorde links
Offline Thomas - 04/05/2005 23:35 (laatste wijziging 04/05/2005 23:36)
Avatar van Thomas Moderator Je zou dit gewoon in PHP kunnen oplossen (bij het afdrukken), door bij je query-resultaat te kijken bij welke dag een headline hoort. Controleer elke keer het "dag-deel" van de datum.
Is het dag-deel hetzelfde als de vorige of eerst opgehaalde datum -> druk het bericht gewoon af.
Verschilt het dag-deel van de vorige, maak dan een nieuw dag-kopje (en houd ergens bij bij welke dag je bent gebleven zeg maar), en druk hierna het bericht af.

De volgorde van id's houdt ook de volgorde van headlines op verschillende dagen aan, lijkt mij (berichten die later in de tijd zijn gepost hebben een hoger id).
Offline Legolas - 05/05/2005 07:35
Avatar van Legolas Onbekend Gewoon in je MySQL een veld datum maken, met type DATETIME, en bij elk geposte bericht NOW() inserten. en dan als je ze ophaalt op je nieuwspagina, moet je dus ergens $gegevens['datum'] hebben, om het op te halen:D
Offline the_unknown - 05/05/2005 12:38 (laatste wijziging 05/05/2005 12:41)
Avatar van the_unknown Nieuw lid ok na wat te prutsen ed heb ik dit al gevonden:

  1. <?
  2. while($row = mysql_fetch_object($temp2)) {
  3. if($temp2->datum != $today) {
  4. echo $row->datum."<br>";
  5. $today = $temp2->datum;
  6. }
  7. echo $row->titel."<br>";
  8. }
  9. ?>


Maar hier geeft hij slechts 1 datum weer. Moet ik deze loop enkele keren laten herhalen met een andere datum of is er een betere oplossing?
Offline Thomas - 05/05/2005 13:25
Avatar van Thomas Moderator De volgende snippet laat zien hoe je het aan zou kunnen pakken - hierbij is gebruik gemaakt van wat "abstracte code" omdat ik niet weet hoe jij datums en dergelijke hebt opgeslagen:

  1. $huidige_dag = ""; // of 0 als je UNIXTIMES gebruikt
  2.  
  3. // zolang er queryresultaten zijn
  4. while($row = mysql_fetch_assoc($query_result)) {
  5. // bepaal hier met "dag_deel()" - dit kan bijvoorbeeld date() zijn -
  6. // of de dag van je query-resultaat-rij $row hetzelfde is als het "dag-blok" waar je al in zit
  7. if(dag_deel($row['datum_veld']) != $huidige_dag) {
  8. // nieuwe dag
  9. echo "nieuwe dag: ".$row['datum_veld']."<hr />";
  10. }
  11. // druk hier je headline af
  12. ...
  13. }
Offline the_unknown - 05/05/2005 16:08
Avatar van the_unknown Nieuw lid Nope, die werkt niet aangezien dat ik m'n data opsla als bvb donderdag 5 mei 2005 etc. Daarom dat ik die vorige moeten gebruiken heb
Citaat:
[..code..]
Offline the_unknown - 06/05/2005 13:50
Avatar van the_unknown Nieuw lid ok, 'tis opgelost. alles in de while loop van $temp2 - $row & query zitten bewerken. mag op slot . allemaal bedankt he ...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.217s