02. juli 2010 - 23:33 Der er 14 kommentarer og
1 løsning

INITIALISERING..

Hej,

Når et HTML-script / (-program ?) starter kan scriptet/programmet initialisere en masse variable ved at kalde en (sub-)rutine i JavaScript ved at bruge funktionen onLoad

<BODY OnLoad= 'java script:Init()';    a' la dette .

Jeg har brug for en tilsvarende funktion i PHP .

Har prøvet:

<body onload='init()'>

hvot init() er en PHP function...  Men det virker ikke..

Hvad gør jeg.

Mit Php / HTML program kører i en uendelig sløjfe (det skal gøre det), hvor hvor brugerens valg starter forskellige funktioner / sub-loops.

De forskellige variable bliver initialiseret ved hver ENESTE gennemløb (start) og jeg har en STRING variabel, som IKKE må initialiseres HVER ENESTE gang.

Så hvad gør jeg.. ?

Tak

Kristian

PS: Har søgt på php.net, men det blev jeg ikke meget kloger af...
Avatar billede majbom Novice
02. juli 2010 - 23:44 #1
php er et serverside-sprog og udføres derfor inden siden sendes til browseren, så derfor virker det du prøver ikke.

jeg forstår dog ikke hvad det er du gerne vil..
03. juli 2010 - 00:47 #2
Hej,

Det jeg helt konkret skal bruge er at kunne nulstille/tømme en fil EEN gang ved opstarten af programmet. En del af programmet skriver værdier ind i denne fil, som programmet læser i en anden del af programmet (og tager aktion på).

Jeg har overvejet om jeg skulle bruge en MYSQL-løsning til dette, men valgte en fil-løsning, da problemet uagtet er det samme. ALtså nulstiller alt ved initialisering og det vil det i så fald også gøre med SQL basen.

Så jeg ved ikke hvordan det her løses..

KRISTIAN
Avatar billede ggxdg Nybegynder
03. juli 2010 - 01:20 #3
Den bedste løsning ville nok være at kode det i Java, men det skulle være ret besværligt at kode, og det kræver en ofte noget dyrere server.

Ellers skal du konstant refreshe din side (entan med en JS timer, eller manuelt), for at få opdateret PHP scriptet, så det kan opdatere dit JavaScript, men det er noget bøvl og irriterende.

Jeg syntes stadig ikke det er helt tydeligt hvad du gerne vil opnå.
Kunne du ikke lige så godt sende variabler mellem JS og PHP frem for at have en fil liggende, hvis den alligevel nustilles ved start, eller bliver det store mængder data i løbet af køretiden?
Ikke at variablerne vil hjælpe på dit problem, da du har brug for et eller andet sprog der kan komunikere begge veje med sockets, hviis du vil have en "live"-datastrøm...
Avatar billede ggxdg Nybegynder
03. juli 2010 - 01:32 #4
Hmm...
Du kan nok lave en usynlig <iframe> som du loader dit PHP script i, så kan du lave et timed refresh af den, eller refresh den hver gang dit javascript har kørt (hvilket nok vil gøre det hele lidt sløvt), og så hent data fra den side.

Men dine data er fuldstændigt ubeskyttede, ligemeget hvordan du gør det, med mindre du vælger noget der kan kommunikere direkte.
Avatar billede arne_v Ekspert
03. juli 2010 - 02:07 #5
Hvis du bruger PHP som generelt programmering sprog og har en app som kører i længere tid, så kan du jo bare kalde din init funktion helt normalt som det første.

Hvis du som man normalt bruger PHP til er en web app, så er det igen nemt at køre en init funktion ved starten af hver request. At køre den ved start af web app er derimod et problem. Bl.a. fordi at nogle af PHP's eksekverings modeller ikke har et sådan begreb.
Avatar billede arne_v Ekspert
03. juli 2010 - 02:08 #6
Om det er fil eller database har vist kun betydning for hvordan der cleares/skrives/læses ikke for hvordan man trigger clearing på det rigtige tidspunkt.
Avatar billede arne_v Ekspert
03. juli 2010 - 02:10 #7
Både ASP, ASP.NET og Java EE har et veldefineret web app start begereb som man kan hooke sig ind på, fordi de bruger en anden ekskverings model end PHP.

Java web apps kan iøvrigts hostes gratis (op til et vist forbrug) hos Google.
Avatar billede erikjacobsen Ekspert
03. juli 2010 - 23:35 #8
I PHP styrer du med sessionsvariabler om brugeren kommer til applikationen første gang, hvor du skal initialisere dine variabler.
Avatar billede arne_v Ekspert
03. juli 2010 - 23:44 #9
session start er så et helt tredie koncept forskelligt fra app start og request start
06. juli 2010 - 11:15 #10
HEJ,

Tak til alle kommentarer, forslag og muligheder.

Jeg tror det er lidt nødvendigt at fortælle hvad jeg prøver at lave:

Jeg skal lave en web-baseret salgsside for strikvarer og diverse
andre hjemmeproducerede ting.

Siden: www.kjerringrommet.com

( MEN DEN ER STÆRK PRÆMATUR OG UNDER OPBYGNING.. !)


Det er meningen at de ting/varer, som kunden vil købe skal vises i indkøbskurven (som er placeret oppe til højre på siden). Til det formål opretter jeg en (dynamisk) fil, som indeholder de ting/varer, som kunden foreløbig har valgt ved at klikke på den pgl. vare.

Jeg har arbejdet noget videre og er også kommet noget videre:

1: Fil-løsningen:

Hvis filen ikke ( if (file_exists($filename)) --> returkode 0  (kan være 1 husker det ikke her ) )eksisterer,  åbner jeg filen i 'w' modus  ($handle = fopen($filename,'w'); og da bliver filen automatisk nulstillet (dvs. tom, filepointeren sættes på NUL ( = 00) og jeg kan skrive til den som jeg ønsker.

Eksisterer filen springer jeg ovenstående over og kan arbejde med den som jeg ønsker. Mens programmet kører bliver filen IKKE slettet (muligvis ikke overhovedet- men det har jeg ikke testet) og senere når ordren ar afgivet vil jeg slette "ordrefilen".

(Hvis brugeren afbryder midt i forløbet er der et problem, men det løser jeg senere, jeg har et par ideer herom, hvordan dette skal løses.)

Indlæggelse af varer i filen var et problem tidligere. Nu kan jeg lægge varer ind i filen og de "bliver i filen". Da det er meningen, når bruger/køber afslutter ordreafgivelsen, at denne ordreliste skal sendes som kopi til bruger/køber og sælger, skal den være på serveren.

Indlæggelse af varer sker ved at jeg med et <a href=filepage.php?var1=varenavn&var2=varepris>Indlæg i indkøbskurv</A> åbner ordrefilen (fopen(filnavn, 'a') ) fwriter(de 2 variable var1 og var2) (Indkøbskurven på hovedsiden håndterer de data ud fra dette) og redirecter til hovedsiden igen.


min filepage.php?var1=var1 --> --- ser sådan ud:
 

<?php

    $string = '1x;Lille Lampe;DKK;30,00;\n'; 

(*  $string er selvfølgelig sammensat af $var1 og $var2 , valuta og '1 x'-teksten, og 'imploderet' til korrekte format.

Men 'nettoresultatet' er som $string;  *)


    $ordrefil = "ordrefil.txt";
    $handle = fopen($ordrefil,'a');
    fwrite($handle,$string);
    fclose($handle);

    location ( --  index.php  );

?>

Det fungerer tilsyneladende, men $string skrives som 2 efterfølgende ENS linier.

eksempel:

<ordrefilen>
<antal><varenavn><valuta><pris>

1 x ; Lille lampe ; DKK ; 30,00 ; <cr>
1 x ; Lille lampe ; DKK ; 30,00 ; <cr>


(Space'rne mellem semikolon er mine og er kun med for at øge læseligheden )

Hvorfor den skriver 2 ens linier ved jeg ikke ?

KRISTIAN
Avatar billede majbom Novice
06. juli 2010 - 18:31 #11
er der er en grund til at du bruger en fil til din kurv, frem for sessions?

så er du over problemet med at den ikke sletter filen, når kunden afbryder handlen midt i forløbet
06. juli 2010 - 19:13 #12
HEJ,

Ups, der fik du mig.. 

Årsagen til at jeg anvender en fil er fordi jeg kender den metode.

Da jeg i sin tid lærte PHP (og HTML - for den sags skyld) 3--6 år siden fik vi ikke gennemgået SESSIONS, så for at være ærlig -- Jeg aner ikke hvad det er, og det er ikke så meget jeg programmerer PHP (primært HTML(og CSS og JS )) og skal jeg lave noget på en PC anvender jeg Delphi 7 Enterprise.

Men hvis du mener at SESSIONS er vejen frem "er der ikke noget at rafle om"  ( citat fra Cæsar iflg. Asterix og Obelix (he he)), så kan du anvise et sted hvor jeg kan lære noget mere om det ?

Kristian
Avatar billede majbom Novice
06. juli 2010 - 19:27 #13
hehe så er det på tide du får det lært :)

du kan læse det mest grundlæggende her: http://www.tizag.com/phpT/phpsessions.php

jeg går ud fra at du kender til arrays osv.?
Avatar billede majbom Novice
04. november 2010 - 14:15 #14
lukketid?
04. november 2010 - 16:07 #15
Ja da,

Takker og lukker...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester