shagg0r Skrevet 10. juni 2005 Del Skrevet 10. juni 2005 (endret) Er det en funksjon i php som gjør at man kan hente ut forrige rad og neste rad i forhold til den raden man har etterspurt? Eksempel: $sp_eksempel = mysql_query("SELECT * FROM tabell WHERE id = '2' ;"); Forrige rad ville da blitt id = 1, og neste rad id = 3, jeg understreker at dette er et meget enkelt eksempel. Problemet ble løst ved kreativ scripting ;-) Fant ikke ut om det finnes en slik funksjon, mest sannsynlig er det en enklere måte å gjøre dette på. Jeg løste det ved 2 spørringer og sorterte etter DESC og ASC Endret 10. juni 2005 av shagg0r Lenke til kommentar
Vial Skrevet 10. juni 2005 Del Skrevet 10. juni 2005 min første tanke ville vært å lage to nye sql kall som kjører samme setning men dekrementere og inkrementere id variabelen. Fins nok en SQL måte å gjøre dette på. Lenke til kommentar
shagg0r Skrevet 10. juni 2005 Forfatter Del Skrevet 10. juni 2005 Forutsetningen er da at id er et tall og det er det ikke Lenke til kommentar
Vial Skrevet 10. juni 2005 Del Skrevet 10. juni 2005 hva med å sette id'ene i en array? Lenke til kommentar
Zoxc Skrevet 10. juni 2005 Del Skrevet 10. juni 2005 Du kan kansje bruke dette: $sp_eksempel = mysql_query("SELECT * FROM tabell WHERE ( (id = '2') and (id = '1') and (id = '3') );"); Trur ikkje det finst noko sant funksjon Lenke til kommentar
shagg0r Skrevet 10. juni 2005 Forfatter Del Skrevet 10. juni 2005 (endret) Prøver å lage noe kreativt selv nå kommer tilbake når jeg har løsningen Ok da er jeg ferdig, skal teste det ut nå tror det kommer til å fungere fint. Løsningen ble kort sagt å sortere etter DESC og ASC, ettersom min modell er litt spesiell tror jeg det blir vrient for de fleste å forstå dette scriptet <?php //Navigering $avsnittnr = $_GET["avsnittnr"]; $kapittelnr = $_GET["kapittelnr"]; if ($kapittelnr) { //Brukeren har valgt å se et kapittel if ($kapittelnr > 2) { $nav_forrige = $kapittelnr - 1.0; } if ($kapittelnr < 19) { $nav_neste = $kapittelnr + 1.0; } } else { //Brukeren har valgt å se et avsnitt $sp_navkapittelnr = mysql_query("SELECT kapittelnr, underavsnitt FROM tabell_avsnitt WHERE avsnittnr = '$avsnittnr' LIMIT 1;"); $navkapittelnr = mysql_fetch_array($sp_navkapittelnr); $sp_avsnittplus = mysql_query("SELECT avsnittnr, underavsnitt, avsnittnavn FROM tabell_avsnitt WHERE kapittelnr = '{$navkapittelnr["kapittelnr"]}' ORDER BY nr ASC;"); $sp_avsnittminus = mysql_query("SELECT avsnittnr, underavsnitt, avsnittnavn FROM tabell_avsnitt WHERE kapittelnr = '{$navkapittelnr["kapittelnr"]}' ORDER BY nr DESC;"); //Finn neste avnsitt while ($avsnittplus = mysql_fetch_array($sp_avsnittplus)) { if ($avsnittplus["avsnittnr"] == $avsnittnr) { $plus = 1; //Seter variabelen til Sann $plusnr = $navkapittelnr["underavsnitt"]; } else { if ($plus) { $plus = 1; $plusnr = $navkapittelnr["underavsnitt"];}//Holder liv i variabelene } if ($plus) { if ($plusnr == $avsnittplus["underavsnitt"]) { if ($avsnittnr != $avsnittplus["avsnittnr"]) { //Nytt avsnitt begynner lagre avsnittnr $nav_neste = $avsnittplus["avsnittnr"]; $nav_nestenavn = $avsnittplus["avsnittnavn"]; break; } } if ($avsnittplus["underavsnitt"] > $plusnr) { //Nytt avsnitt begynner lagre avsnittnr $nav_neste = $avsnittplus["avsnittnr"]; $nav_nestenavn = $avsnittplus["avsnittnavn"]; break; } } } //Finn forrige avsnitt while ($avsnittminus = mysql_fetch_array($sp_avsnittminus)) { if ($avsnittminus["avsnittnr"] == $avsnittnr) { $minus = 1; //Seter variabelen til Sann $minusnr = $navkapittelnr["underavsnitt"]; } else { if ($minus) { $minus = 1; $minusnr = $navkapittelnr["underavsnitt"];}//Holder liv i variabelene } if ($minus) { if ($minusnr == $avsnittminus["underavsnitt"]) { if ($avsnittnr != $avsnittminus["avsnittnr"]) { //Nytt avsnitt begynner lagre avsnittnr $nav_forrige = $avsnittminus["avsnittnr"]; $nav_forrigenavn = $avsnittminus["avsnittnavn"]; break; } } if ($avsnittminus["underavsnitt"] > $minusnr) { //Nytt avsnitt begynner lagre avsnittnr $nav_forrige= $avsnittminus["avsnittnr"]; $nav_forrigenavn = $avsnittminus["avsnittnavn"]; break; } } } } ?> Endret 10. juni 2005 av shagg0r Lenke til kommentar
RiniaShqipetare Skrevet 10. juni 2005 Del Skrevet 10. juni 2005 Er det en funksjon i php som gjør at man kan hente ut forrige rad og neste rad i forhold til den raden man har etterspurt? Eksempel: $sp_eksempel = mysql_query("SELECT * FROM tabell WHERE id = '2' ;"); Forrige rad ville da blitt id = 1, og neste rad id = 3, jeg understreker at dette er et meget enkelt eksempel. Her er en forslag: $id= '2'; $sp_eksempel = mysql_query("SELECT * FROM tabell WHERE (ID='$id' AND ID=($id - 1) AND ID=($id + 1))"); Har ikke testet spørringen men tror det skal fungere 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å