Gullars Skrevet 25. september 2003 Del Skrevet 25. september 2003 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...? Lenke til kommentar
toer Skrevet 25. september 2003 Del Skrevet 25. september 2003 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.. Lenke til kommentar
Gullars Skrevet 25. september 2003 Forfatter Del Skrevet 25. september 2003 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 Lenke til kommentar
toer Skrevet 25. september 2003 Del Skrevet 25. september 2003 Prøv og bytt DESC med ASC da Lenke til kommentar
Gullars Skrevet 25. september 2003 Forfatter Del Skrevet 25. september 2003 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 Lenke til kommentar
Gullars Skrevet 28. september 2003 Forfatter Del Skrevet 28. september 2003 *bump*... Lenke til kommentar
diskvask Skrevet 28. september 2003 Del Skrevet 28. september 2003 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
Gullars Skrevet 28. september 2003 Forfatter Del Skrevet 28. september 2003 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
diskvask Skrevet 28. september 2003 Del Skrevet 28. september 2003 Hvis du sjekker ut mysql_result() i manualen, så ser du at funksjonen tar et tredje argument. $i = mysql_num_rows($res); for (; $i >= 0; $i--) { $id = mysql_result($res, $i, 'ID'); $namn = mysql_result($res, $i, 'Namn'); } Lenke til kommentar
Gullars Skrevet 29. september 2003 Forfatter Del Skrevet 29. september 2003 okey så då treng eg altså ikkje bruka mysql_fetch_array()? Lenke til kommentar
Gullars Skrevet 29. september 2003 Forfatter Del Skrevet 29. september 2003 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
diskvask Skrevet 29. september 2003 Del Skrevet 29. september 2003 Prøv å fjern mysql_fetch_array(), da mysql_result() brukes i stedet. Lenke til kommentar
Gullars Skrevet 29. september 2003 Forfatter Del Skrevet 29. september 2003 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
diskvask Skrevet 29. september 2003 Del Skrevet 29. september 2003 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
Gullars Skrevet 29. september 2003 Forfatter Del Skrevet 29. september 2003 No fungerer det betre ja 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
Gullars Skrevet 1. oktober 2003 Forfatter Del Skrevet 1. oktober 2003 *bump*...... Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå