Gå til innhold

index, array, og en for meg uknekkelig nøtt...LØST


Anbefalte innlegg

Hmmm... Sitter her i natten og prøver å finne ut følgende: (Dette er vel kanskje en gjenganger for noen her inne, men jeg lar det stå til...)

 

Jeg har en tabell i MySQL med et felt som heter brukerindeks. Postene i dette feltet består av tall, som øker med én for hver gang en bruker registrerer en post i tabellen. Kort fortalt ser det slik ut:

TABELL
Navn    Innhold     Brukerindeks
arne    hei hei     1
siri    javel       1
siri    neivel      2
siri    tralala     3
arne    tamtara     2

 

Dette feltet bruker jeg til å lage neste/forrige muligheter. Når Siri er inne og ser på http://...php?brukerindeks=2 kan hun klikke på nesteknappen og se post nr 3, eller forrigeknappen og se sin post nr 1. Dette fungerer utmerket! -Helt inntil en post slettes. Da skjærer det fine opplegget mitt seg...

 

Det jeg ser for meg at jeg må gjøre for å få det til å virke er følgende:

  • Hente alle postene av brukerindeks som er knyttet til Siri
  • Bruke array til å indeksere postene
  • Finne ut hvilken index den gjeldende posten har (I tilfellet over skal jeg finne arrayindexen til ?brukerindeks=2)
  • Når nesteknappen trykkes er det ikke (som i dag) verdien av $array[brukerindeks] som skal økes med én, men indexen.
  • MEN, jeg vil jo ikke at det er det nye indexnummeret som skal sendes med $_GET når hun trykker på nesteknappen. Jeg må få tilbake brukerindeks-verdien til det nye indexnummeret, slik at det er det som sendes med $_GET...

Er det noen her inne som forstår hvor jeg vil? Er jeg på bærtur med hvordan jeg ønsker å løse problemet? Er det noen som kan (gidder) hjelpe meg litt i gang? Jeg må innrømme at arrays er noe av det vanskeligste for meg når det gjelder PHP...

 

Takk for at dette forumet finnes! :)

Endret av primaxx
Lenke til kommentar
Videoannonse
Annonse

Ein while setning som finner det neste posten vil jo virke. I.e. du lager ein while setning, som sjekker først nummeret som er inkludert i urlen ($_GET['brukerindeks']) vist queryen du kjører returnerer eit tomt resultat, så finnes ikkje den posten lengre. Då legger du til ein på verdien ($variable++;) og while setningen kjøres igjen dette skjer heilt til den enten finner neste post, eller at brukeren ikkje har meir poster.

 

Eit raskt døme: (Er seint og er trøtt, vist du trenger meir info kan eg poste meir inngående i morgon kveld)

$result = mysql_query(SELECT brukerindeks FROM database WHERE username='denne brukeren' ORDER BY brukerindeks DESC) //Finn det siste post nummeret til denne brukeren her
$sistepost = //her legger du verdien fra sist query

$brukerindex = verdien fra url;

while (!isset($foundit)) {

$result = mysql_query(SELECT * FROM database WHERE username='denne brukeren' && brukerindeks='$brukerindeks') //Se om du finner ein post med den brukerindexen
$id = verdien fra queryen

if (!empty($id)) {
kjør resten av informasjonen du vil ha fra queryen her (ikkje vits å kjøre den før vist queryen er tom)
$foundit = 1;
break;
}
if ($brukerindex > $sistepost) {
$errormsg = "du har ikkje meir poster";
$foundit = 1;
break;
}
$brukerindex++;
}
Kjør resten av siden her

 

Deretter legger du til det $brukerindex + 1 til "neste post" knappen. Husk at dette fungerer fint vist bruker går tilbake i postene og, bare skriv om while setningen slik at den tar av 1 kvar gang isteden for å legge til.

 

Håper du forstår kva eg meiner :)

Endret av The Red Devil
Lenke til kommentar

Problemet er løst! Takk for all hjelp! For spesielt interesserte kan jeg jo fortelle hvordan jeg gjorde det til slutt:

 

Filen viktigedetalj.php viser innholdet i en eller annen post i tabellen tab5, og her har jeg også neste (vis neste post i tabellen som denne respektive brukeren har registrert) og forrigeknapper, med hyperlenker som ser slik ut:

           <li><?php echo "<a href=http:/inter.net/viktigenestesql.php?brukerindeks=".$arr["brukerindeks"].">Neste</a>";?>
           </li>
           <li><?php echo "<a href=http://inter.net/viktigeforrigesql.php?brukerindeks=".$arr["brukerindeks"].">Forrige</a>";?>
           </li>

 

Under vises eksemplet på viktigenestesql.php

viktigeforrigesql.php er identisk, bortsett fra at den finner den laveste verdien i tabellen først, i stedet for den høyeste som her. I tillegg teller den selvfølgelig nedover.

<?php
session_start(); //Session-scriptet til SirIce (http://www.misinterpreted.net/indexarticlephp-1.htm)
if ($_SESSION["login"] != "true"){

header("Location: http://inter.net/registrer.php");

$_SESSION["error"] = "<font color=red>Beklager...</font>";
exit;
}

$brukernavn=($_SESSION ['brukernavn']);
include ("kobletilbase.php");

//Sjekk hva høyeste verdi av brukerindeks er
$sql = "SELECT brukerindeks
       FROM tab5
       WHERE brukernavn='{$_SESSION['brukernavn']}'
       ORDER BY brukerindeks desc
       LIMIT 1";
$sql_resultat = mysql_query($sql);
while ($arr=mysql_fetch_array($sql_resultat)){
   $hoyeste = ($arr['brukerindeks']);
   
   //Hvis GET-brukerindeksverdien er lavere enn høyeste i tabellen økes brukerindeks med 1
   if ($_GET['brukerindeks'] < $hoyeste){
       $buindeks = ($_GET['brukerindeks']);
       $nybuindeks = ($buindeks +1);
       $sql1 = "SELECT brukerindeks
               FROM tab5
               WHERE brukernavn='{$_SESSION['brukernavn']}' AND brukerindeks=$nybuindeks
               LIMIT 1";
       $sql_resultat1 = mysql_query($sql1);
       $ant_rekker = mysql_num_rows($sql_resultat1);
   
       //Denne sjekker om spørringen over returnerte noen post, og sender bruker tilbake til viktigedetalj.php med ny verdi på brukerindeks hvis ja
       if($ant_rekker > 0){
           while ($arr=mysql_fetch_array($sql_resultat1)){
               $bindeks= ($arr['brukerindeks']);
               header('Location: http://inter.net/viktigedetalj.php?brukerindeks='.$bindeks);
           }
       }

       //Hvis spørringen over ikke returnerte noen post kjøres denne siden på nytt.    
       else {
               header('Location: http://inter.net/viktigenestesql.php?brukerindeks='.$nybuindeks);       
       }
   }

   //Hvis siste post i tabellen er nådd får brukeren beskjed om det...   
   else {
       header('Location: http://inter.net/viktigesiste.php?brukerindeks='.$hoyeste);       
   }
}    
?>

 

Jeg laget til slutt også to filer til, nemlig viktigesiste.php og viktigeforste.php

Disse filene er identiske med viktigedetalj.php, med unntak av at de har fått tilleggstekst som informerer om at du ikke kan bla deg lenger bakover eller forover...

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

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