Gå til innhold

Snu innlegg i gjestebok


Anbefalte innlegg

Skrevet

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:

Videoannonse
Annonse
Skrevet

mysql_query("SELECT * FROM gjestebok ORDER BY id DESC LIMIT 1 , 30")

 

vis du har unik id, vis ikke kan du bruke det på datoen de er posta vil eg tro..

:D

Skrevet

Dette fungerer ikkje.

 

Det som då skjer er at 1-30 viser dei 30 siste osv, medan 1-30 eigentleg skal visa dei 30 første.

 

Eg må nok gjera noko med det resultatet eg får av spørjinga

Skrevet

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:

Skrevet
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.

Skrevet

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?

Skrevet

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

Skrevet

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...

Skrevet
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.

Skrevet

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?

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...