Gå til innhold

Snu innlegg i gjestebok


Anbefalte innlegg

Hei!

 

Eg har laga ei enkel gjestebok (php/mysql). Den viser 30 innlegg per side, og eg har klart å generera lenk til [1-30], [31-60] osv.

 

Problemet er berre at dei nyaste innlegga blir viste nedst på sida. Dette ynskjer eg omvendt, slik at brukaren alltid ser det nyaste innlegget først, øvst på sida.

 

Eg prøvte å endra mysql-spørjinga, slik at postane blei viste DESC, men då kom dei nyaste postane i [1-30], deretter [31-60] osv.

 

Det eg altså må gjera er å henta ut dei tretti postane, og snu rekkjefølgja på dei. Korleis kan eg gjera dette...? :roll:

Lenke til kommentar
Videoannonse
Annonse

ASC er jo default....

 

trur ikkje du heilt har forstått problemet mitt. la meg illustrera korleis eg vil ha det:

 

[1-30] [31-60] [61-90]

 

Innlegg 1-30:

 

innlegg1

innlegg2

innlegg3

.........

 

Når eg bruker ASC, blir det slik:

 

[1-30] [31-60] [61-90]

 

Innlegg 1-30:

 

innlegg30

innlegg29

innlegg28

........

 

(innlegga kjem altså i feil rekkjefølgje...)

 

Når eg bruker DESC, blir det slik:

 

[1-30] [31-60] [61-90]

 

Innlegg 1-30:

 

Innlegg90

innlegg89

innlegg88

......

 

(dei siste innlegga blir vist, der dei første skal visast...)

 

 

Det første dømet er altså det eg er ute etter :shrug:

Lenke til kommentar
et eg altså må gjera er å henta ut dei tretti postane, og snu rekkjefølgja på dei. Korleis kan eg gjera dette...?

 

Hva med å gå igjennom resultatsettet bakfra og frem?

 


$i = mysql_num_rows($res);

for (; $i >= 0; $i--) {

 echo mysql_result($res, $i);

}

 

All rights reserved, all wrongs reversed.

Lenke til kommentar

Takk for svaret :)

 

Eg ser logikken i løkka, men får ikkje til å bruka henne.... :-?

 

Problemet mitt ligg her:

echo mysql_result($res, $i);

 

Eg har allereie denne løkka:

 

while ($gjestebok = mysql_fetch_array($gjestebok2)) {

$gjest = array_reverse($gjestebok);

$id = $gjest["ID"];

$namn = $gjest["Namn"];

$alder = $gjest["Alder"];

$bustad = $gjest["Bustad"];

$epost = $gjest["Epost"];

$heimeside = $gjest["Heimeside"];

$beskjed = $gjest["Beskjed"];

$dato = $gjest["Dato"];

$klokke = $gjest["Klokke"];

 

echo("Kvar ting for seg.....");

}

 

Korleis kan eg nytta løkka di til å sortera etter $i utan å gjera store inngrep det eg allereie har?

Lenke til kommentar

hmm... dette burde vel fungera?

 


$gjestebok2 = mysql_query(

 "SELECT ID, Namn, Alder, Bustad, Epost, Heimeside, Beskjed, DATE_FORMAT(DatoKlokke, '%e/%m/%Y') AS Dato, DATE_FORMAT(DatoKlokke, '%H:%i') AS Klokke " .

 "FROM Gjestebok ORDER BY ID LIMIT $Res1, $Res2");



$rid = mysql_num_rows($gjestebok2); 

for (; $rid >= 0; $rid--) { 



 $gjestebok = mysql_fetch_array($gjestebok2);



 $namn = mysql_result($gjestebok, $rid, 'Namn'); 

 $alder = mysql_result($gjestebok, $rid, 'Alder');

 $bustad = mysql_result($gjestebok, $rid, 'Bustad');

 $epost = mysql_result($gjestebok, $rid, 'Epost');

 $heimeside = mysql_result($gjestebok, $rid, 'Heimeside');

 $beskjed = mysql_result($gjestebok, $rid, 'Beskjed');

 $dato = mysql_result($gjestebok, $rid, 'Dato');

 $klokke = mysql_result($gjestebok, $rid, 'Klokke');



echo("kvar ting for seg");



}

 

det gjer det altså ikkje....

 

feilmelding:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/sveio/demo.sveioskulekorps.no/gjestebok/les.php on line 51

 

og deretter på linje 52, 53 osv...

 

  $gjestebok = mysql_fetch_array($gjestebok2); 

 

denne la eg til for å testa om det fungerte då.... tidlegare kalla eg mysql_query() for $gjestebok, og fann mysql_num_rows() utifrå den

Lenke til kommentar

det gjorde inga nytte, men eg endra koden til dette:

$rid = mysql_num_rows($gjestebok); 

for (; $rid >= 0; ) { 

$rid--;



 $namn = mysql_result($gjestebok, $rid, 'Namn'); 

 $alder = mysql_result($gjestebok, $rid, 'Alder');

 $bustad = mysql_result($gjestebok, $rid, 'Bustad');

 $epost = mysql_result($gjestebok, $rid, 'Epost');

 $heimeside = mysql_result($gjestebok, $rid, 'Heimeside');

 $beskjed = mysql_result($gjestebok, $rid, 'Beskjed');

 $dato = mysql_result($gjestebok, $rid, 'Dato');

 $klokke = mysql_result($gjestebok, $rid, 'Klokke');

echo("innlegg.....");

}

 

denne viser innlegga slik eg vil ha dei. Problemet er at eg på slutten får denne feilmeldinga:

 

Warning: mysql_result() [function.mysql-result]: Unable to jump to row -1 on MySQL result index 15 in /hsphere/local/home/sveio/demo.sveioskulekorps.no/gjestebok/les.php on line 50

 

...og deretter line 51, 52 osv. fram til og med line 57...

Lenke til kommentar
det gjorde inga nytte, men eg endra koden til dette:

$rid = mysql_num_rows($gjestebok); 

for (; $rid >= 0; ) { 

$rid--;



 $namn = mysql_result($gjestebok, $rid, 'Namn'); 

 $alder = mysql_result($gjestebok, $rid, 'Alder');

 $bustad = mysql_result($gjestebok, $rid, 'Bustad');

 $epost = mysql_result($gjestebok, $rid, 'Epost');

 $heimeside = mysql_result($gjestebok, $rid, 'Heimeside');

 $beskjed = mysql_result($gjestebok, $rid, 'Beskjed');

 $dato = mysql_result($gjestebok, $rid, 'Dato');

 $klokke = mysql_result($gjestebok, $rid, 'Klokke');

echo("innlegg.....");

}

 

denne viser innlegga slik eg vil ha dei. Problemet er at eg på slutten får denne feilmeldinga:

 

Warning: mysql_result() [function.mysql-result]: Unable to jump to row -1 on MySQL result index 15 in /hsphere/local/home/sveio/demo.sveioskulekorps.no/gjestebok/les.php on line 50

 

...og deretter line 51, 52 osv. fram til og med line 57...

 

Ah, selvsagt. mysql_num_rows() gir jo antall rader, og for å få tak i den siste raden må man trekke fra en pga at mysql_result begynner på 0 og ikke 1.

 


$rid = mysql_num_rows($gjestebok) - 1; 

for (; $rid >= 0; $rid-- ) { 

 $namn = mysql_result($gjestebok, $rid, 'Namn'); 

 $alder = mysql_result($gjestebok, $rid, 'Alder');

 $bustad = mysql_result($gjestebok, $rid, 'Bustad');

 $epost = mysql_result($gjestebok, $rid, 'Epost');

 $heimeside = mysql_result($gjestebok, $rid, 'Heimeside');

 $beskjed = mysql_result($gjestebok, $rid, 'Beskjed');

 $dato = mysql_result($gjestebok, $rid, 'Dato');

 $klokke = mysql_result($gjestebok, $rid, 'Klokke');

echo("innlegg.....");

}

 

All rights reserved, all wrongs reversed.

Lenke til kommentar

No fungerer det betre ja :p

 

Men eit nytt problem har jo sjølvsagt oppstått...

 

Når eg skal visa alle innlegga frå 60-90 (LIMIT 60, 90), så blir alle innlegga frå 60 og heilt til endes viste... veit ikkje kvifor...

 

henter num_rows() ut alle radene i tabellen kanskje, eller er det ein annan feil?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...