Avatar billede f-bs Nybegynder
06. april 2010 - 20:28 Der er 8 kommentarer

POST metoder

Hej,

Jeg er nok lidt af en newbie til PHP (stadigvæk) og jeg har efterhånden ikke rørt det længe.
Men - når jeg har en formular med data som jeg ønsker at indsætte i en mysql database, har jeg tidligere gjort noget ala:

index.php (med formularen)

<form method="post" action="indsaet_i_db.php">
blah blah blah...
</form>

og i min indsaet_i_db.php har jeg så "gettet" dataene fra formularen og indsat i databasen.

... er der ikke en nemmere måde at gøre det på, således jeg kommer uden om indsaet_i_db.php?
Jeg har været ved at studere lidt på PHP_SELF, men synes ikke jeg helt kan få det til at gi mening?
Er der nogen som kan hjælpe mig lidt på vej, med at få en lidt renere struktur? :)
Gerne et par eksempler.
Avatar billede arne_v Ekspert
06. april 2010 - 20:44 #1
Hvis du undlader action attributten saa submitter den til sig selv per default.

Men jeg er ikke sikkert paa at det er den paeneste maade at goere det paa.
Avatar billede f-bs Nybegynder
06. april 2010 - 20:50 #2
Hmm det lader ikke lige til at kunne gøre det.

Jeg har fx. en side som hedder add.php hvor jeg har en formular. Men efter jeg har indsat min kode til at kunne insætte i databasen direkte i add.php får jeg bare en blank side, så jeg tror ikke det er rigtigt, med mindre jeg gør noget forkert - det vil jeg ikke udelukke :)
Avatar billede nemlig Professor
06. april 2010 - 21:06 #3
Hvis du bruger den samme fil, kan du styre det med if-statements.

Din submit-knap kunne være defineret således:

<button name='mySubmit' value='1' type='submit'>Gem</button>

Så kunne du lave det afsnit, hvor du gemmer i mysql inde i en if-statement. Fx. sådan her:

if(isset($_POST['mySubmit'])) {
// Valideringer af input
// GEM i MySQL
}
Avatar billede afischer Nybegynder
06. april 2010 - 21:56 #4
Du skriver, at du har "gettet" data fra din <form>.
Mener du i så fald, at du har brugt $_GET til at hente dem? Da du poster via din form, skal du bruge $_POST til at hente dem :=)
Avatar billede jokerper Nybegynder
06. april 2010 - 23:57 #5
Jeg vil mene at du skal bruge den sådan her:

dinside.php med formen med $_POST.



if(isset($_POST['mySubmit'])) {
// Valideringer af input
// GEM i MySQL

header("location:dinside.php");

}

Så undgår du den blanke side.
Avatar billede Diload Nybegynder
11. april 2010 - 21:36 #6
Du kan sagtens bare putte formen på en side og lave din form åbnings tag således:
<FORM method="post" action="<? echo $_SERVER['PHP_SELF']; ?>" >

og så bare tjekke inden at du viser formen om den er sendt med Fx.

if(isset($_post['submitted'])):
//Validering og indsætning af data til database
else:
//visning af form
endif;

Vis du bruger denne metode så skal du huske at sætte din Submit knaps name atribute til "submitted" eller hvad du ellers vil kalde den.
Avatar billede nemlig Professor
22. april 2010 - 08:29 #7
Jeg synes, at trådstarter er blevet lidt stille?

Hvad er status - har du fået den forventede hjælp?
Husk at lukke spørgsmålet.
Avatar billede arne_v Ekspert
13. juni 2010 - 04:56 #8
f-bs?
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

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