20. juli 2005 - 13:20Der er
11 kommentarer og 1 løsning
Rækkefølge - 2 queries lige efter hinanden
Hejsa,
Har et problem med en funktion jeg har brokket sammen. Jeg har en side, kaldet comment.php, jeg bruger til at kommentere nyheder.
Alle funktioner er i samme fil, derfor tjekker jeg først om der skal skrives en ny entry i db'en ved $tilfoej. Er der ikke, skrives nyheden og formularen til kommentaren.
Alt virker umiddelbart godt, men når man tilføjer en kommentar, og aktiverer if(isset($_POST['tilfoej'])) så kommer kun form'en. Man skal selvfølgelig se hele siden, nyheden og alle kommentarer, inkl. den man lige har indtastet.
Det er som om, den springer over quiery'en efter if-løkken - hvad kan det skyldes?
Slamkode: (de fleste styles og formattering er fjernet)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Heh, nej det er lidt tåget kan jeg godt se, sorry.
Altså, funktionen skal være således: Går man ind på siden, UDEN at have skrevet noget i formen, er variablen $tilfoej ikke sat. Så vises nyheden og alle kommentarer i db'en.
Skriver man noget i formen og trykker submit, reloades siden med $tilfoej sat, og formens indhold skrives i db'en.
MEN når den har skrevet i db'en, springer den over den næste query, og viser bare formen igen. Det optimale er at efter INSERT tingen, reloader den siden helt fra bunden af - det er i virkeligheden det jeg vil :) Undskyld tågesnakken..
Du skal dog kun have _en_ af de 2 linier... Men hvorfor så ikke bare smide det over i contact.php og så blive sendt tilbage? Som det er nu tror jeg, at hvis brugeren trykker F5 (refresh) vil hans kommentar blive indsat flere gange, ik?! Det vil du slippe for ved at smide den lille kodestump i en separat fil.
Ah, det prøver jeg lige af. Nej det er selvfølgelig ikke pratisk hvis data bliver skrevet flere gange - men jeg ville nemlig gerne ha' alt i samme fil.. Keep it simple ;)
Tjoh, det er så hvad man mener med "simpelt". Jeg synes bestemt det er simpelt, at have forskellige filer til forskellige opgaver. Men sådan er der jo så meget :) F.eks. have index.php og så en mappe der hedder \news der indeholder delete.php, update.php, insert.php afhængig hvordan man skal bearbejde sine nyheder :)
Ja, det har du selvfølgelig ret i. Jeg synes det er lettere og mere overskueligt at rette og tilpasse én fil end flere. Især når man navngiver variable ligeså tilfældigt som jeg gør :)
Men: Header-tingen kommer med denne fejl: Warning: Cannot modify header information - headers already sent by (output started at... bla bla bla.
Yes, det er fordi du har noget html-output (måske bare et linieskift eller et mellemrum?) før du kører dit script. Scriptet skal stå aller øverst i filen...
Argh, ja det har jeg - selve comment.php er en større del af noget include, så reelt ser man altid index siden, bare med en variabel der hedder $page.. Damn :/
Jep, netop det er også et godt argument for at have sine scripts i separate filer. Så ville jeg f.eks. gøre således: <? echo" <form action='./news/insert.php' method='post'> <input type='hidden' name='page' value='".$_GET['page']."'> //alle andre felter "; ?>
I insert.php: <? //scriptet og hvad der ellers skal ske header("Location: index.php?page=".$_POST['page']); ?>
Arh ja, det var lidt snedigt :) Det er vel GET begge steder?
Om det bliver sådan, eller jeg må kapitulere og skrive til db'en i en anden fil, ved jeg ikke.. men tak for synspunkter, idéer og eksempler - smid et svar og du får points.
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.