Avatar billede mini97ad Nybegynder
15. april 2003 - 13:19 Der er 24 kommentarer og
1 løsning

Ny (Hvordan får man PHP til kun at afvikle kode hvis form submit)

Hej

jeg oprettede det her spørgsmål:

http://www.eksperten.dk/spm/340802

og troede at løsningen var klar (hviket den sikkert også er), men når jeg skriver:
*********
<input type="submit" name="send" valuer="Submit skidtet">

<?php
if(isset($_POST['send'])) {
// Den er submittet
}
?>
********

eller

********
if($submit)
{
kode her
}
********

så afvikler den rigtig nok ikke koden, når man kommer ind på siden, men den afvikler heller ikke koden, når formularen submittes. Hvad gør jeg galt?

mvh
michael
Avatar billede schaefner Juniormester
15. april 2003 - 13:20 #1
<form method="post" action="">
<input type="submit" name="send" value="Submit skidtet">
</form>
Avatar billede repox Seniormester
15. april 2003 - 13:21 #2
hvad er din fulde kode ?
Avatar billede avminarm Juniormester
15. april 2003 - 13:22 #3
<input type="submit" name="send" valuer="Submit skidtet">

skal være

<input type="submit" name="send" value="Submit skidtet">

dette virker hvis du benytter php 4.1.0 eller nyere
<?php
if(isset($_POST['send'])) {
// Den er submittet
}
?>

læs evt. på www.wagners.dk/php - om POST og GET
Avatar billede avminarm Juniormester
15. april 2003 - 13:23 #4
din form bør nok være:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:24 #5
hmm nu paster jeg lige hele koden 2 sec :-)
Avatar billede tipsen Nybegynder
15. april 2003 - 13:24 #6
Der er vist forskel på om formularen submittes ved at klikke på knappen med musen eller om formularen afsendes ved at trykke return på tastaturet! I sidstnævnte tilfælde er kontrollen ikke succesfuld og bliver ikke medsendt - dvs. at variablen $_POST['send'] ikke vil eksistere! Metoden er i mine øjne ikke brugbar.
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:25 #7
<?
include_once ("../functions/functions.inc.php");
include_once ("../functions/functions_db.inc.php");

//Header og basal kode kaldes
echo writeHTMLheader("Projektbørs");


echo "<center>\n";
echo "<h1>Projektbørs - opret nyt projekt</h1>\n";


//Her kommer formularen, hvor brugeren kan oprette et nyt projekt!
echo "<form method='get' action='opret_projekt.php' name='nyt_projekt'>";

echo "<table border='0' cellpadding='5' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='500' id='AutoNumber1'>";
  echo "<tr>";
    echo "<td width='191'><b>Projekttitel:</b></td>";
    echo "<td width='289'><input type='text' name='projekttitel' size='37'></td>";
  echo "</tr>";
  echo "<tr>";
    echo "<td width='191'><b>Dit navn:</b></td>";
    echo "<td width='289'><input type='text' name='navn' size='37'></td>";
  echo "</tr>";
  echo "<tr>";
    echo "<td width='191'><b>Din emailadresse:</b></td>";
    echo "<td width='289'><input type='text' name='email' size='37'></td>";
  echo "</tr>";
  echo "<tr>";
    echo "<td width='191'><b>Vælg et password:</b></td>";
    echo "<td width='289'><input type='password' name='password' size='37'></td>";
  echo "</tr>";
  echo "<tr>";
    echo "<td width='490' colspan='2'><b>Beskrivelse:</b><textarea rows='8' name='projekttekst' cols='56'></textarea>";
    echo "</td>";
  echo "</tr>";
  echo "<tr>";
    echo "<td width='490' colspan='2'>";
    echo "<p align='center'><input type='submit' value='Opret nyt projekt'></td size='20'>";
  echo "</tr>";
echo "</table>";


if($submit) {



//Validering for om der er indtastet en projekttitel
if ($projekttitel=="") {
    echo "<p>Du har ikke indtastet en projekttitel</p>\n";
    echo writeHTMLfootere ();
    exit;
    }

/*

//Validering for om der er indtastet et navn
if ($navn="") {
    echo "<p>Du har ikke indtastet et navn</p>\n";
    exit;
    }


//Validering for email er indtastet korrekt
if (isset($email) && ereg("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $email)) {
    }
        else {
          echo "<p>Du har indtastet forkert e-mail adresse.\n</p>\n";
        exit;
        }

//Validering for om der er indtastet et password
if ($password="") {
    echo "<p>Du har ikke indtastet et password</p>\n";
    exit;
    }

//Validering for om der er indtastet en tekst
if ($projektteskt="") {
    echo "<p>Du har ikke indtastet en projektbeskrivelse</p>\n";
    exit;
    }


*/


//SQL sætning til at indsætte data i tabellen brugere
$strSQL = "INSERT INTO projekter (projekttitel, projekttekst, navn, email, password)
VALUES ('$projekttitel', '$projekttekst', '$navn', '$email', '$password')";

//SQL kommandoen køres med funktion execute der er i filen functions_db.inc.php
$resultat = executeSQL($strSQL);


}


echo "<p><a href='projekt.php'>Vend tilbage til projektoversigten</a></p>\n";
echo "<p><a href=xxx'>Vend tilbage til øvelsesforsiden</a></p>\n";

echo "</center>\n";





//Footer kaldes for at lukke html siden korrekt
echo writeHTMLfootere ();

?>
Avatar billede schaefner Juniormester
15. april 2003 - 13:25 #8
Det er slet ikke nødvendig.

<form method="post" action="">
<input type="submit" name="send" value="Submit skidtet">
</form>

<?php
if(isset($_POST['send'])) {
  // Den er submittet
}
?>
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:26 #9
hmm schaefner det - du skriver der har jeg også prøvet, men får som sagt ikke afviklet koden uanset om formen submittes eller ej :-(
Avatar billede avminarm Juniormester
15. april 2003 - 13:27 #10
schaefner>> det virker kun i IE - den gætter selv på hvilken fil det er - men det vil give probs i andre explores
Avatar billede avminarm Juniormester
15. april 2003 - 13:27 #11
hvad er din PHP version??
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:28 #12
Det skulle gerne være PHP4. Serveren plejer da at være rimlig flinkt til at afvikle kode
Avatar billede avminarm Juniormester
15. april 2003 - 13:30 #13
ja, men php 4.x.x - hvad?
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:31 #14
det ved jeg faktisk ikke helt :-(
Avatar billede avminarm Juniormester
15. april 2003 - 13:32 #15
du bør ændre valideringerne:
if ($projektteskt="") {
til:
if (empty($projektteskt)) {

måske:
if (empty($_POST['projektteskt'])) {
Avatar billede avminarm Juniormester
15. april 2003 - 13:33 #16
så lav en fil der ser sådan ud:

<?php
phpinfo();
?>

og gem den og kør den i browseren - så viser den det  ;o)
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:34 #17
ok tak :-) men det har selvfølgelig ingen indflydelse på at denne del af koden først skal afvikles, når formen submittes:

//Validering for om der er indtastet en projekttitel
if ($projekttitel=="") {
    echo "<p>Du har ikke indtastet en projekttitel</p>\n";
    echo writeHTMLfootere ();
    exit;
    }

/*

//Validering for om der er indtastet et navn
if ($navn="") {
    echo "<p>Du har ikke indtastet et navn</p>\n";
    exit;
    }


//Validering for email er indtastet korrekt
if (isset($email) && ereg("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $email)) {
    }
        else {
          echo "<p>Du har indtastet forkert e-mail adresse.\n</p>\n";
        exit;
        }

//Validering for om der er indtastet et password
if ($password="") {
    echo "<p>Du har ikke indtastet et password</p>\n";
    exit;
    }

//Validering for om der er indtastet en tekst
if ($projektteskt="") {
    echo "<p>Du har ikke indtastet en projektbeskrivelse</p>\n";
    exit;
    }


*/


//SQL sætning til at indsætte data i tabellen brugere
$strSQL = "INSERT INTO projekter (projekttitel, projekttekst, navn, email, password)
VALUES ('$projekttitel', '$projekttekst', '$navn', '$email', '$password')";

//SQL kommandoen køres med funktion execute der er i filen functions_db.inc.php
$resultat = executeSQL($strSQL);
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:35 #18
ok det er PHP Version 4.2.1
Avatar billede avminarm Juniormester
15. april 2003 - 13:42 #19
så skal alle dine valideringer rettes til $_POST['varnavn']

og prøv at smide et hidden felt ind lige før submitknappen så det ser sådan ud:

<input type='hidden' name='send' value='ok'><input type='submit' value='Opret nyt projekt'>

så ret
if($submit){
til
if($_POST['send']=="ok"){

så skulle det gerne virke
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:43 #20
ok jeg prøver lige :-)
Avatar billede tipsen Nybegynder
15. april 2003 - 13:45 #21
Hvis

if($submit){

rettes til:

if($_SERVER['REQUEST_METHOD'] == 'POST') {

slipper man for det problem jeg omtalte tidligere.
Avatar billede avminarm Juniormester
15. april 2003 - 13:52 #22
det har tipsen ret i ;o)
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:52 #23
yeps så virker det :-) :-) :-)

jeg anvendte din metode avminarm.

Jeg tror jeg ved hvorfor det ikke virkede som det første!! formularen methoden hed jo get og ikke post.

Det virkede også uden at jeg lavede om på valideringensmetoden.

en anden ting lille ting. Når formen submittes slettes input i felter. Altså hvis brugeren glemmer at udfylde et felt, skal alle felter udfyldes igen. Er det en lille ting der skal gøre for at dette ikke sker?
Avatar billede avminarm Juniormester
15. april 2003 - 13:57 #24
du kan give felterne denne tilføjelse:

value='$_POST['varnavn']'

det med validerings metoden var kun et hint for at lave det "mere" korrekt, men man kan gøre som man vil
Avatar billede mini97ad Nybegynder
15. april 2003 - 13:59 #25
ok tak avarm

Tak for hjælpen alle :-)

schaefner din metode virkede jo også - det var bare mig, der var en klovn og ikke kalde angive formular metoden til post istedet for get. Eller tjekke for om get er tom :-S
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