Gå til innhold

Hente ut forige rad og neste rad fra mysql [LØST]


Anbefalte innlegg

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 av shagg0r
Lenke til kommentar
Videoannonse
Annonse

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 :yes:

 

<?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 av shagg0r
Lenke til kommentar
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

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