Toon posts:

[PHP/SQL] archief

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een soort weblog idee, hierbij moet uiteraard ook een archief komen. Alle berichten worden nu in de database gezet met een publicatie_datum, op basis hiervan moet het archief ook werken.

De database bestaat heel eenvoudig uit 1 tabel, waarin alles over het bericht staat + de publicatie datum.

Wat ik nu wil is een select query uitvoeren die bij ELKE verschillende datum, de berichten zoekt.... Dus ze zo weergeeft:

24/12/2002
- bericht 1
- bericht 2
- bericht 3

23/12/2002
- bericht 1
- bericht 2

Dit gaat opzich goed, totdat er meerdere berichten bij 1 datum horen, dan krijg ik het als volgt geoutput:

24/12/2002
- bericht 1

24/12/2002
- bericht 1

Dus 2 (in de database) verschillende berichten worden ge-output onder 2 data, en hetzelfde bericht.

Dit is de code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
    $datum_query = "SELECT PDATUM FROM bericht
                    WHERE (
                    STATUS = 2
                    )
                    ORDER BY PDATUM DESC
                    ";
    $datum_result = mysql_query($datum_query);
    while($datum = mysql_fetch_array($datum_result))
    {
?>
<tr>
    <td valign="bottom"><a href="#" class="red_link"><br><? echo "$datum[PDATUM]"; ?></a><br><span class="normal_red">
<?
        $berichten_query = "SELECT * 
                            FROM bericht
                            WHERE PDATUM = '$datum[PDATUM]'
                            AND STATUS = 2
                            ";
        $berichten_result = mysql_query($berichten_query);
        while($bericht = mysql_fetch_array($berichten_result))
        {                       
?>
    <? echo "$bericht[KOP]"; ?>
    </td>
    <td>[img]"art/shim.gif"[/img]</td>
                <td valign="bottom" class="normal_red">rating</td>
    <? } ?>
</tr>
<?
}
?>


Heb bijna alles al geprobeerd, iemand enig idee wat ik fout doe ???

Acties:
  • 0 Henk 'm!

  • DinX
  • Registratie: Februari 2002
  • Laatst online: 08-10 16:38

DinX

Motormuis

al een een for-lus gedacht, of een teller tussen de [] ?

[ Voor 41% gewijzigd door DinX op 24-12-2002 13:09 ]

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07-10 14:25

Creepy

Tactical Espionage Splatterer

Dat komt waarschijnlijk omdat je ALLE datums met status 2 ophaalt. Hier zullen uiteraard dubbelen zitten. Zoek in je SQL boek eens wat op over Distinct.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 22-09 14:35

D2k

DinX schreef op 24 december 2002 @ 13:08:
al een een for-lus gedacht, of een teller tussen de [] ?

als je nou echt helemaal geen idee hebt, bemoei je der dan svp ook niet mee. een schot voor de boeg is altijd welkom, maar dit is echt akelig ver mis
[/offtopic]

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dus met een distinct kan je dus dubbelen weg halen ?
Ik had het al met group by geprobeerd maar dat is niet echt de oplossing :D

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 22-09 14:35

D2k

Verwijderd schreef op 24 december 2002 @ 13:20:
Dus met een distinct kan je dus dubbelen weg halen ?
Ik had het al met group by geprobeerd maar dat is niet echt de oplossing :D

D2k in "SQL tutorial html topic"

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

Verwijderd

Je hoeft hier helemaal geen twee lussen voor te gebruiken. Doe gewoon binnen de lus een check of de datum bij het huidige bericht gelijk is aan die in het vorige bericht. Als dat zo is, moet je geen header afdrukken met de datum, anders wel. Het enige wat je moet doen is dus iedere keer de oude datum van de vorige iteratie van de loop opslaan en ophalen.

Succes :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MrX> hmm inderdaad, zo had ik het nog niet gezien.

D2k> oke met distinct gaat het inderdaad goed.

Weer wat geleerd :)

Acties:
  • 0 Henk 'm!

  • DinX
  • Registratie: Februari 2002
  • Laatst online: 08-10 16:38

DinX

Motormuis

D2k schreef op 24 December 2002 @ 13:16:

[...]

als je nou echt helemaal geen idee hebt, bemoei je der dan svp ook niet mee. een schot voor de boeg is altijd welkom, maar dit is echt akelig ver mis
[/offtopic]
ik bedoelde gewoon

PHP:
1
2
3
4
5
$i = 0;
while($bericht = mysql_fetch_array($berichten_result)) 
        {                         
           echo "$bericht[$i]";
           $i++;


Zal wel wegblijven in PW in't vervolg :{

[ Voor 6% gewijzigd door DinX op 24-12-2002 13:30 ]

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


Acties:
  • 0 Henk 'm!

Verwijderd

.... which proves D2k's point!
/me lol

Edit:
Je bedoelde het waarschijnlijk goed, maar beide antwoorden raken kant noch wal, en zorgen daarom alleen maar voor verwarring ipv dat ze de topicstarter helpen.

Edit 2:
Overigens is het totaal niet mijn bedoeling geweest iemand voor het hoofd te stoten, dus als dat is gebeurd, mijn excuses. Verder wil ik ook even opmerken dat DinX zijn conclusie om weg te blijven al had getrokken voor mijn post.

[ Voor 106% gewijzigd door Verwijderd op 24-12-2002 13:43 . Reden: Aanvullingen (2 nu al) ]


Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
DinX schreef op 24 december 2002 @ 13:29:
ik bedoelde gewoon

PHP:
1
2
3
4
5
$i = 0;
while($bericht = mysql_fetch_array($berichten_result)) 
        {                         
           echo "$bericht[$i]";
           $i++;
En ik zie toch echt niet in, hoe dat een oplossing van het probleem kan bewerkstellingen :) Kun je dat uitleggen?
Zal wel wegblijven in PW in't vervolg :{
Da's toch helemaal niet nodig?
hoor :/
Verwijderd schreef op 24 December 2002 @ 13:31:
.... which proves D2k's point!
/me lol
Mjah, mensen wegjagen is niet echt de bedoeling
Edit:
Je bedoelde het waarschijnlijk goed, maar beide antwoorden raken kant noch wal, en zorgen daarom alleen maar voor verwarring ipv dat ze de topicstarter helpen.

Edit 2:
Overigens is het totaal niet mijn bedoeling geweest iemand voor het hoofd te stoten, dus als dat is gebeurd, mijn excuses. Verder wil ik ook even opmerken dat DinX zijn conclusie om weg te blijven al had getrokken voor mijn post.
Als jij gaat nuanceren, dan doe ik dat ook maar :)
Het ging mij erom dat je al kon zien dat DinX boos ( terecht of niet laat ik in het midden ) was. Door zo'n opmerking als bovenstaand escaleert de boel alleen maar verder :) en komen er alleen maar meer mensen op GoT met 'die kut devschuur met die arro koppen' mening. Ik vond dat niet in de lijn van het nieuwe modbeleid, dus vandaar mijn opmerking :)

Sidenote: Geenzinds ben ik boos op iemand of iets wat hier gezegd is. Ik plaats alleen opmerkingen waarmee ik hoop mensen te overtuigen van mijn gedachtes. Om me boos te krijgen moet je beter je best doen ;)

[ Voor 43% gewijzigd door Glimi op 24-12-2002 13:56 ]


Acties:
  • 0 Henk 'm!

  • DinX
  • Registratie: Februari 2002
  • Laatst online: 08-10 16:38

DinX

Motormuis

Verwijderd schreef op 24 december 2002 @ 13:31:
.... which proves D2k's point!
/me lol
ok, das duidelijk ...

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07-10 14:25

Creepy

Tactical Espionage Splatterer

DinX schreef op 24 december 2002 @ 13:29:
[...]


ik bedoelde gewoon

PHP:
1
2
3
4
5
$i = 0;
while($bericht = mysql_fetch_array($berichten_result)) 
        {                         
           echo "$bericht[$i]";
           $i++;
Ook dit zal niet werken, want bericht is dan wel een array, maar gevuld met alle KOLOM namen van de tabel, terwijl i nu alle ROWS telt ;)

[ Voor 7% gewijzigd door Creepy op 24-12-2002 13:52 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 27-08 11:32
Zulke dingen moet je bij de bron aanpakken.
Bij de query dus en niet door PHP laten aanpakken.
Als het goed is, staat in elk SQL document wel iets over welke statements waar voor zijn. (DISTINCT, ORDER BY, GROUP BY)
Pagina: 1