[PHP] form gegevens bewaren na check *

Pagina: 1
Acties:
  • 266 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een formuliertje, waarbij hij checkt of je je naam etc. wel ingevuld hebt, is dit niet het geval geeft hij een melding. Als je dan op terug drukt staat nog steeds je hele bericht er wat je getypt hebt, zodat je dit niet weer opnieuw hoeft te typen. Zo wil ik het dus hebben en zo heb ik het nu ook.

Maar als ik het include in m'n index.php gaat het mis en staat er niks meer. dit is mijn code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
if (isset($_POST['submit'])){
  if ($bericht == "")   
    $error="Je moet een <b>bericht</b> invullen"; 
  if ($email == "")   
    $error="Je moet je <b>e-mailadres</b> invullen"; 
  if ($naam == "")   
    $error="Je moet je <b>naam</b> invullen"; 
  if ($titel == "")   
    $error="Je moet een <b>titel</b> invullen"; 
  
  // als er geen error gekomen is plaatst hij de gevens in de database
  if (!$error) {     
    $query = "INSERT INTO nieuws (titel, naam, email, bericht, datum, datumkort) VALUES ('$titel','$naam','$email','$bericht','$datum','$datumkort')";    
    mysql_query($query) or die (mysql_error());   
        
    echo "Het nieuws is succesvol toegevoegd.";
  
  // als hij wel een error gevonden heeft geeft hij dat aan
  } elseif ($error) { 
    echo "$error | <a href='javascript:history.go(-1)'>terug</a>";
  }
} else { 
?>

<form name="admin" method='post'>
  <table width="400" cellspacing="0">
    <tr> 
      <td><b>Naam:</b></td>
      <td><input type="text" name="naam" value="KJ"></td>
    </tr>
    <tr> 
      <td><b>E-mail:</b></td>
      <td><input type="text" name="email" value="theultimate22@hotmail.com"></td>
    </tr>
    <tr> 
      <td><b>Titel:</b></td>
      <td><input type="text" name="titel"></td>
    </tr>
    <tr> 
      <td valign="top"><b>Bericht:</b></td>
      <td><textarea rows=10 cols=40 name="bericht"></textarea></td>
    </tr>
    <tr> 
      <td></td>
      <td> </td>
    </tr>
    <tr> 
      <td></td>
      <td><input type="submit" name="submit" value="Post"></td>
    </tr>
  </table>
</form>


Weet iemand hoe ik dit kan oplossen ??

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 18-09 16:24

mulder

ik spuug op het trottoir

<input type="text" name="naam" value="<?php echo $_POST['naam']; ?>" />

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • Edsger
  • Registratie: December 2000
  • Laatst online: 29-08 19:42
Dat werkt natuurlijk niet als hij op "Back" duwt.

Dat is... wat wordt er door KJT eigenlijk verstaan onder "include"?

Ik neem aan dat je de include uit de php taal bedoelt.

[ Voor 27% gewijzigd door Edsger op 26-03-2004 10:20 ]

All your quantifications are belong to me!


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Met formulieren maak je het jezelf een stuk eenvoudiger door te posten naar zichzelf. Zo hou je het formulier en de checks bij elkaar en kun je ook eenvoudig gegevens hergebruiken in je formulier.

Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 11:30

Guldan

Thee-Nerd

Als je dit idd doet via een javascript back dan werkt het idd niet. Dan gebruii je gewoon de terug knop van Intenet explorer.
Je zou wel gewoon een back knop maken die de waarden van het formulier meestuurd, maar de invul pagina en deze dan opvragen

in de trant van:

code:
1
2
3
4
5
6
7
8
<?php
 if (isset($_GET['return'])) { // er wordt op de terug knop gedrukt.Kijk of deze var geset is.

$oudewaarde1 = $_GET['formoudewaarde];
$oudewaarde2 =$_GET['formoudewaarde1];

}
?>


en dan gewoon de waarde in van $oudewaarde1 en een form field zetten.

[edit] ik vergat wat...

[ Voor 18% gewijzigd door Guldan op 26-03-2004 10:28 ]

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Edsger schreef op 26 maart 2004 @ 10:19:
Dat werkt natuurlijk niet als hij op "Back" duwt.
Met IE werkt het zelden tot nooit als je op Back duwt. Je moet dus gewoon naar jezelf posten en bij foute data het formpje opnieuw genereren met de gepostte data.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 14-09 14:42

dominic

will code for food

Waarom niet eerst gewoon een clientside check voor velden die moeten worden ingevoerd t.b.v. gebruikersnotificatie en in je PHP een final check bij submitten?

Download my music on SoundCloud


Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Nu online

DukeBox

loves wheat smoothies

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?
if ($submit)
{
  if (!$bericht)  $error="Je moet een <b>bericht</b> invullen"; 
  if (!$email)  $error="Je moet je <b>e-mailadres</b> invullen"; 
  if (!$naam)  $error="Je moet je <b>naam</b> invullen"; 
  if (!$titel)  $error="Je moet een <b>titel</b> invullen"; 
   
  if (!$error)
  {      
    $query = "INSERT INTO nieuws (titel, naam, email, bericht, datum, datumkort) VALUES ('$titel','$naam','$email','$bericht','$datum','$datumkort')";
    mysql_query($query) or die (mysql_error());    
    echo "Het nieuws is succesvol toegevoegd.";

// als hij wel een error gevonden heeft geeft hij dat aan 
  }
  else
  {
?>
fout !</html>
<?php
  }
}
else
{ 
?> 

<form name="admin" method='post'> 
  <table width="400" cellspacing="0"> 
    <tr> 
      <td><b>Naam:</b></td> 
      <td><input type="text" name="naam" value="KJ"></td> 
    </tr> 
    <tr> 
      <td><b>E-mail:</b></td> 
      <td><input type="text" name="email" value="<?php echo $email ?>"></td> 
    </tr> 
    <tr> 
      <td><b>Titel:</b></td> 
      <td><input type="text" name="titel" value="<?php echo $titel ?>></td> 
    </tr> 
    <tr> 
      <td valign="top"><b>Bericht:</b></td> 
      <td><textarea rows=10 cols=40 name="bericht"><?php echo $bericht ?></textarea></td> 
    </tr> 
    <tr> 
      <td></td> 
      <td> </td> 
    </tr> 
    <tr> 
      <td></td> 
      <td><input type="submit" name="submit" value="Post"></td> 
    </tr> 
  </table> 
</form>
?>


je kan het ook in een sessie opslaan, dan kan je de gegevens uit een (serverside)cookie ophalen.

[ Voor 148% gewijzigd door DukeBox op 26-03-2004 10:49 ]

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

Verwijderd

Formulier naar zich zelf posten, gegevens checken.
En dan bij 1 of meer verkeerd ingevulde gegevens, form opnieuw weergeven en dan kan je ook gelijk aangeven bij de invoervelden dat de waarde niet klopt.

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

DukeBox schreef op 26 maart 2004 @ 10:41:
PHP:
1
2
3
4
5
6
7
8
9
10
11
if ($submit)
{
  if (!$bericht)  $error="Je moet een <b>bericht</b> invullen"; 
  if (!$email)  $error="Je moet je <b>e-mailadres</b> invullen"; 
  if (!$naam)  $error="Je moet je <b>naam</b> invullen"; 
  if (!$titel)  $error="Je moet een <b>titel</b> invullen"; 
   
  if (!$error)
  {      
    $query = "INSERT INTO nieuws (titel, naam, email, bericht, datum, datumkort) VALUES ('$titel','$naam','$email','$bericht','$datum','$datumkort')";
...
Ga jij eens snel wat lezen over register-globals en security :X

Zoals onze lieve FAQ...

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 26 maart 2004 @ 10:42:
Formulier naar zich zelf posten, gegevens checken.
En dan bij 1 of meer verkeerd ingevulde gegevens, form opnieuw weergeven en dan kan je ook gelijk aangeven bij de invoervelden dat de waarde niet klopt.
dat heb ik nu toch ook ??? maar waarom werkt het wel gewoon zonder dat ik dit bestand include (php) in mijn index.php ?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
maar jullie bedoel dus eigenlijk zoiets ?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
....
..
.

  } elseif ($error) { 
  ?>
   <form name="admin" method='post'>
  <table width="400" cellspacing="0">
    <tr> 
      <td><b>Naam:</b></td>
      <td><input type="text" name="naam" value="$naam"></td>
    </tr>
    <tr> 
      <td><b>E-mail:</b></td>
      <td><input type="text" name="email" value="$email"></td>
    </tr>
    <tr> 
      <td><b>Titel:</b></td>
      <td><input type="text" name="titel" value="$titel"></td>
    </tr>
    <tr> 
      <td valign="top"><b>Bericht:</b></td>
      <td><textarea rows=10 cols=40 name="bericht"><? echo "$bericht"; ?></textarea></td>
    </tr>
        <tr> 
      <td></td>
      <td><input type="submit" name="submit" value="Post"></td>
    </tr>
</table>
<? echo "$error"; ?>
    <?
  }
} else { 

...
..
.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Dat checken op error in het formulier is niet nodig. Je kunt als het GOED gaat gewoon redirecten naar een resultaat pagina. Als het fout gaat krijg je dan automatisch gewoon het formulier weer.

Bij eenvoudige formulieren gebruik ik meestal een dergelijke opzet (vereenvoudigd):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$msg = '';
$naam = '';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    extract (array_map("trim", $_POST), EXTR_OVERWRITE);
    $ok = true;

    if (!strlen ($naam)) {
        $msg = "Geen naam ingevuld.";
        $ok = false;
    }

    if ($ok) {
        // doe wat
        header ('Location: resultaat.php');
    }
}
?>
<?php if ($msg) echo $msg ?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<input type="text" name="naam" value="<?php echo $naam ?>">
</form>

[ Voor 62% gewijzigd door Bosmonster op 26-03-2004 12:03 ]

Pagina: 1