14. juli 2003 - 12:20Der er
21 kommentarer og 1 løsning
Opdateret tæller i en function på sin egen side
Jeg kunne godt tænke mig at have en tæller ligende i en function, lad os kalde variablen i denne tæller for $rigtigt_svar, som selvfølgelig starter den med værdien 0, og lad os kalde function for svar()
Det som jeg så ønsker er at når function svar() bliver kaldt, så bliver der lagt 1 til variablen $rigtigt_svar og denne nye værdi skal functionen, så huske til næste gang den bliver kaldt, hvor der så bliver lagt 1 til variablen igen og så fremdeles, hver gang den kaldes.
Selve functionen skal ligge på side egen side, lad os kalde den for functioner.php og hvis jeg ønsker at hente værdien af variablen $rigtigt_svar, skal jeg kunne gøre det fra en hvilken som helst side hvor jeg lægger dette tag
Ja det gør jeg, men jeg ønsker ikke at benytte den metode hertil, men derimod arrays, som ligger på siden functioner.php, men før jeg når dertil skal jeg lære det trick der gør at en function kan huske en given værdi og opdatere den, når jeg ønsker det. :-)
Har du overvejet at oprette en tekstfil eks. count.txt, som har variablen liggende. Herefter kan du indlæse variabelværdien og øge den og skrive resultatet tilbage på tekstfilen.
Hej Tballe Ja den er med i mine overvejelser, og jeg vil klart overveje at bruge den vis det her ikke kan lade sig gøre, men det mener jeg, at det kan.
Jeg læse for en del tid siden at det var noget med en kommando der hed static som kunne få PHP til at huske en variabel inde i en funktion, men hvordan det funker, kan jeg ikke finde ud af.
Hvis du siger det var noget med "static", selvom jeg da må indrømme, at jeg aldrig har hørt om det, kunne du jo tage et kig her: http://dk.php.net/language.variables.scope
Hvis data skal overføres til andre sider er der 4 muligheder:
1. At gemme det i en database eller en tekstfil. 2. At gemme det i en cookie. 3. At gemme det i en PHP session. 4. At gemme det i query string (GET) eller måske en form (POST).
Til Raz0 Selve dit svar fra 17.04 kan jeg ikke bruge, da det stort set hvad jeg skrev 22.29 i går aftes, eneste rigtige forskel er at jeg bruger kommandoen static og du bruger global.
Men det svar du først kommer med er jeg meget begejstret for nemlig den med tekstfilen.
Kan du udvide den til f.eks 5 forskellige tællere i samme txt fil og samtidig lave det så den automatisk nulstiller, når den første gang tages i brug?
Flere tællere i en fil.. tjae, så bliver det jo straks mere kompliceret. Prøv med den følgende kode, og ja, jeg har afprøvet den her ;) Funktionen hent_svar() returnerer et array over de gemte tællere, gem_svar() tager et array som parameter og gemmer det. Arrayet skal indeholde tællerne. Sig til hvis du ikke forstår det :)
Hej raz0 Det er meget simpelt, det forstår jeg ikke :-| så jeg har brug for noget hjælpetekst til denne kode, så jeg forstår hvad jeg skal gøre og ligeledes hvordan jeg skal lægge taellerne ind, for dem kan jeg ikke se i dette script. Jeg venter spændt :-)
Okay... det der står nedenunder var egenligt for at forklare hvordan det virkede. Sådan som det er lavet nu tæller den ikke automatisk op, det gør den her derimod. Skulle være nemmere nu :)
Okay, det var så funktionerne. Nu til forklaringen ;) Hvis vi f.eks. siger du vil have en tæller der hedder "abe1", gør du følgende:
taeller("abe1");
Nu vil du have en tæller der hedder "abe1", med værdien 1. Hvis du bagefter skriver...
print taeller("abe1");
... skulle der gerne komme til at stå 2. Tælleren startede jo på 1 og det er anden gang du kører den nu. Prøv eventuelt at trykke opdater et par gange for at se at tælleren tæller opad.
Hvis du så vil have en anden tæller der hedder "tæller1", kan du f.eks. skrive...
print taeller("tæller1");
Der skulle gerne stå 1 nu. Prøv igen at trykke opdater et par gange og se at tælleren igen tæller opad. Du har nu 2 tæller, en der hedder "abe1" og en der hedder "tæller1". Check eventuelt taeller.txt filen.
Hej raz0 Tak for dit meget flotte svar, som jeg har nogle spørgsmål til. Las os sige at jeg har to tællere 1 = rigtigt_svar og 2 forkert_svar. Skal navne på disse to tællere så skrives ned i txt filen af mig eller skal de lægges ind $array = array(); i function hent_taellere() og hvis de skal det skal de så lægge ind med 'rigtigt_svar' => 0, 'forkert_svar' => 0,
Jeg prøver igen, hvor er det nemt at ramme udfør knappen når man skal rette teksten i den nederste linje :-(
Skal de lægges ind $array = array(); i function hent_taellere() og hvis de skal det skal de så lægge ind med $array = array('rigtigt_svar' => 0, 'forkert_svar' => 0); eller med $array = array('rigtigt_svar', 'forkert_svar'); ?
Hvis du gider ville det være dejligt hvis du ville prøve at retuner et eksempel med de to taellere i kodeform, for jo jeg har læst hvad du skriver, men jeg har det som en andengrads ligning med mange ubekendte jeg ikke kender til og derfor forstår jeg ikke fuldt ud det du skriver, som jo burde være indlysende når man kender alle de ubekendte.
Den eneste funktion du skal bruge er taeller() Når du kører taeller("rigtigt_svar"), checker scriptet først om der findes en tæller ved navn "rigtigt_svar" i tekst filen. Hvis der gør det lægges der 1 til tælleren. Hvis tælleren ikke findes endnu laver scriptet selv en tæller med det navn og sætter den til 1. Lige meget hvad retunerer funktionen værdien på tælleren til sidst. Den kan du så f.eks. vælge at print'e. Se følgende script:
Scriptet skulle gerne skrive '3' hvis tælleren da ikke findes i forvejen. Prøv så at opdater. Nu skulle den gerne sige '6'. Der bliver lagt 1 til tælleren 3 gange.
Hmm ja, der er du helt galt på den hehe. Du skulle ikke lave om i funktionen overhovedet, og du skulle selvfølgelig også have de andre funktioner med. Her er et fuldt eksempel *suk* :)
Ja ja nok er galt på den, men ikke så galt på den at jeg ikke havde de andre funktioner med - nix du, men det er indrømmet at jeg ikke var klar over hvor smart et script jeg var oppe imod og jeg i virkeligheden bare kunne læne mig tilbage og se dig køre med klatten. Du ved de er lisom hvis man ser en dejlig sild, så er det svært ikke at pille :-)
Tak for din tålmodighed her i sommervarmen, der er 60 velfortjente point afsted til dig. //xbobby
Til Raz0 Her på falderebet har du en smart function, som nulstiller tællerne i txt filen?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.