Form input onthouden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Dennis WhoCares

Dennis WhoCares

20/12/2012 14:38:02
Quote Anchor link
Dag mensen, ik ben op zoek naar een simpele manier voor het onthouden van een form input.
Bijv ik vul allemaal gegevens in, van naam adres telefoon enz. Maar ik vergeet mijn email.
In mijn php script wordt gekeken of alles ingevuld is. Is dit niet het geval dan geeft ie een melding en verwijst ie me met een <META HTTP-EQUIV=Refresh CONTENT='2; URL=index.php?register'> terug.
Maar dan is alle input weg. Hoe kan ik dit voorkomen?

Groetjes
 
PHP hulp

PHP hulp

17/11/2024 23:24:12
 
No One

No One

20/12/2012 14:42:18
Quote Anchor link
door $_POST te plaatsen in je form dus value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$_POST['formName']?>
"

maar zoals ik je tekst begrijp heb je dus een html pagina en een php script dat het vervolgens afhandeld? je kunt beter script boven je html zetten of includen zodat je 1 pagina hebt
 
Dennis WhoCares

Dennis WhoCares

20/12/2012 14:48:50
Quote Anchor link
Ja maar natuurlijk het is 1 pagina.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
 if(!isset($_POST['register'])) {
 echo "<form method='post' action='index.php'>".
      "<input type='hidden' name='register'>" .
      "Uw naam: <input type='text' name='reg_naam'><br>" .
      "Uw email: <input type='text' name='reg_email'>" .
      "<input type='reset' value='Legen'> <input type='submit' value='Registeren'>" .
      "</form>";
 }
else {
  $error = "";
  if($_POST['reg_naam']<>"") {
   $naam = $_POST['reg_naam'];
  }
else {
   $error = $error . "<li>Naam niet ingevuld!</li>";
  }

  if($_POST['reg_mail']<>"") {
   $mail = $_POST['mail'];
  }
else {
   $error = $error . "<li>Mail niet ingevuld!</li>";
  }

  if($error<>"") {
   echo $error . "Een moment geduld aub. U wordt automatisch terug verwzen...<META HTTP-EQUIV=Refresh CONTENT='2; URL=index.php'>";
  }
 }

?>


Maar zodra die terug is gestuurd naar index.php zijn de _POST waardes verdwenen neem ik aan?
Gewijzigd op 20/12/2012 14:51:36 door Dennis WhoCares
 
- Mark -

- Mark -

20/12/2012 14:59:56
Quote Anchor link
Het je al eens gewerkt met sessions?
 
LEDfan nvt

LEDfan nvt

20/12/2012 15:01:16
Quote Anchor link
Enkele tips die je kan opnemen in je code, deze zorgen voor minder schrijfwerk, en meer leesbaarheid. Maar beschouw het als richtlijnen, niet als de beste code.

  • Kijk eens naar empty(). Zo kan je makkelijker kijken of een variabel leeg is. Bv:
  • Waarom kopieer je de varible'en op lijn 7, 12 enz? Veel makkelijker is om gewoon de $_POST variabelen te behouden.
  • Een waarde toevoegen aan een variabelen gaat zoals jij dat doet, maar kan ook simpel door .= te gebruiken.
  • Je manier van errors laten zien in een <li> is netjes, maar vergeet <ul> en </ul> niet. (Waarschijnlijk gebruik je deze wel, maar is het op de code niet te zien)
  • Waarom gebruik je een HTML meta refresh? Kijk eens naar header(). (location)
 
Dennis WhoCares

Dennis WhoCares

20/12/2012 15:04:11
Quote Anchor link
- Mark - op 20/12/2012 14:59:56:
Het je al eens gewerkt met sessions?

En hoe stel je dat dan voor?
Dat ik elke form input opsla in een sessie ? En op de formulier alle values een sessie waarde opgeef?
Wat als de sessie nog niet bestaat? Dan gaat ie toch foutmeldingen geven?
 
Chris PHP

Chris PHP

20/12/2012 15:04:30
Quote Anchor link
@Dennis,

Kijk eens naar de jQuery validate form mogelijkheden. Wellicht dat dit je probleem oplost.

Hier een aantal tutorials.
 
Dennis WhoCares

Dennis WhoCares

20/12/2012 15:14:45
Quote Anchor link
LEDfan nvt op 20/12/2012 15:01:16:
Enkele tips die je kan opnemen in je code, deze zorgen voor minder schrijfwerk, en meer leesbaarheid. Maar beschouw het als richtlijnen, niet als de beste code.

  • Kijk eens naar empty(). Zo kan je makkelijker kijken of een variabel leeg is. Bv:
  • Waarom kopieer je de varible'en op lijn 7, 12 enz? Veel makkelijker is om gewoon de $_POST variabelen te behouden.
  • Een waarde toevoegen aan een variabelen gaat zoals jij dat doet, maar kan ook simpel door .= te gebruiken.
  • Je manier van errors laten zien in een <li> is netjes, maar vergeet <ul> en </ul> niet. (Waarschijnlijk gebruik je deze wel, maar is het op de code niet te zien)
  • Waarom gebruik je een HTML meta refresh? Kijk eens naar header(). (location)



Deze code is niet exact wat in mijn script komt.
De formulier wordt uit een andere class gehaald, en aangeroepen vanuit een ander bestand dat vanuit de index wordt aangeroepen
Eigenlijk heeft het betrekking tot een beheerders pagina waar ik mijn pagina's wil beheren. Maar moet er wel een wachtwoord zijn ingevoerd (huidige wachtwoord)
Mocht deze onjuist zijn gaat hij terug naar de pagina, index.php?page=beheer&act=editpage&id - huidige id

De header optie heb ik eerder weleens gebruikt maar sinds ik het in het gehele concept heb gezet kreeg ik headers already sent foutmelding, en ben ik terug op de meta refresh tag gegaan. Deze ken ik op elk willekeurig moment terug laten komen.

Toevoeging op 20/12/2012 15:18:21:

Chris NVT op 20/12/2012 15:04:30:
@Dennis,

Kijk eens naar de jQuery validate form mogelijkheden. Wellicht dat dit je probleem oplost.

Hier een aantal tutorials.


De jQuery is wel strak, alleen moet ik zoveel meer schrijfwerk doen.
Ik denk dat ik het toch maar op de sessie's houdt wat -Mark- zegt.
Gewijzigd op 20/12/2012 15:15:40 door Dennis WhoCares
 
- Mark -

- Mark -

20/12/2012 15:20:06
Quote Anchor link
Dennis WhoCares op 20/12/2012 15:04:11:
- Mark - op 20/12/2012 14:59:56:
Het je al eens gewerkt met sessions?

En hoe stel je dat dan voor?
Dat ik elke form input opsla in een sessie ? En op de formulier alle values een sessie waarde opgeef?
Wat als de sessie nog niet bestaat? Dan gaat ie toch foutmeldingen geven?


Dan gaat hij inderdaad foutmeldingen weergeven ja maar die moet je dan ook afhandelen net zoals je doet met $_POST. Het voordeel is dat je de gegevens voor langere tijd kunt bewaren indien gewenst.
 
Chris PHP

Chris PHP

20/12/2012 15:22:21
Quote Anchor link
@Dennis,

Veel werk? Het zit in jQuery, zoveel werk is het niet om te gebruiken.
 
Dennis WhoCares

Dennis WhoCares

20/12/2012 15:23:00
Quote Anchor link
- Mark - op 20/12/2012 15:20:06:
Dan gaat hij inderdaad foutmeldingen weergeven ja maar die moet je dan ook afhandelen net zoals je doet met $_POST. Het voordeel is dat je de gegevens voor langere tijd kunt bewaren indien gewenst.


De foutmeldingen doe ik wel verbergen als t helemaal klaar is.
Ik wil ze eigenlijk niet langer bewaren dus doe ik als het formulier afgehandeld is zonder fouten, session_destroy
Alleen jammer dat ik dan weer opnieuw moet inloggen..
 
No One

No One

20/12/2012 15:24:31
Quote Anchor link
die validate in jQuery is leuk clientside..maar je moet nog steeds de gegevens controleren serverside...alles wat clientside gebeurt kan je niet vertrouwen...
 
Chris PHP

Chris PHP

20/12/2012 15:25:00
Quote Anchor link
@Dennis,

Gebruik dan gewoon session_unset() em unset de waardes die je voor je form gebruikt.

Toevoeging op 20/12/2012 15:27:05:

Henze Berkheij op 20/12/2012 15:24:31:
die validate in jQuery is leuk clientside..maar je moet nog steeds de gegevens controleren serverside...alles wat clientside gebeurt kan je niet vertrouwen...


Als je het linkje had bekeken, zag je dat er ook een both side validation voorbeeld in staat.
 
- Mark -

- Mark -

20/12/2012 15:29:08
Quote Anchor link
Foutmeldingen verbergen is niet echt netjes. Gewoon er voor zorgen dat ze niet voorkomen of netjes afhandelen. Je hoeft niet de gehele session weg te gooien als je alleen de formulier gegevens wilt weggooien. Gewoon met unset() datgene verwijderen wat je niet meer nodig hebt of gewoon overschrijven met een lege waarde. Je kunt gewoon de gehele $_POST in een session zetten en als je hem niet meer nodig hebt dan doe je gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php unset($_SESSION['weet_ik_veel']); ?>
of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $_SESSION['weet_ik_veel'] = array(); ?>
 
Dennis WhoCares

Dennis WhoCares

20/12/2012 15:32:45
Quote Anchor link
Deze topic was weer heilig *praise all*
Ik gaat een functie maken, waar ik waardes aan meegeef,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
checkForm($formvalues) {
 $values=explode(",",$formvalues)
 foreach ($values as $value) {
  if($_POST[$value]<>"") {
   $_SESSION[$value] = $_POST[$value];
  } else {
   $error = "<li>" . $value . " is niet ingevuld.</li>";
  }
 }
 if($error<>"") {
  return "Het formulier is niet juist ingevuld!" . $error;
 } else {
  foreach($values) {
   session_unset($_SESSION[$value]);
  }
  return "success";
 }
}


Wat vinden jullie hiervan? (Niet getest, maar het gaat om het idee)

@-Mark-
Ik kan niet goed overweg met array's in php.. *bloost*
Gewijzigd op 20/12/2012 15:35:33 door Dennis WhoCares
 
No One

No One

20/12/2012 15:36:29
Quote Anchor link
@Chris...ja en dan komen we nog steeds terug op de originele vraag van de poster...want als client side failed, moet dat nog steeds correct worden afgehandeld :)

Ik vind nog steeds dat de html en de php code gescheiden moeten zijn.
dus:
[phpcode]
hier handel je binnenkomende post requests af
[htmlcode]
hier kun je dan de $_POST values printen in de value attribute van de formulier elementen

Hiervoor moet je sessies niet gebruiken...
Gewijzigd op 20/12/2012 15:37:13 door No One
 
Dennis WhoCares

Dennis WhoCares

20/12/2012 15:53:38
Quote Anchor link
Trouwens, ik heb een formulier om in te loggen als beheerder, vreemd genoeg is dit het enige formulier dat niet wil verzenden als ik op ENTER druk. Tenminste, het verzend wel, maar wordt niet gepost. Ik kom direct terug op de inlog pagina zonder dat er iets gebeurt is.
Hierin tegen, doet de shoutbox het wel als ik op ENTER druk, en alle andere formulier op mijn site ook.
 
No One

No One

20/12/2012 15:55:49
Quote Anchor link
kan je oplossen in jQuery

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$('#idOfElement').keypress(function(event){

    if (event.keyCode == 10 || event.keyCode == 13)
        event.preventDefault();

  });
 
Dennis WhoCares

Dennis WhoCares

20/12/2012 15:59:17
Quote Anchor link
Komt ie weer met z'n jQuery.
Niet dat ik je commentaar niet waardeer hoor, nou heb ik een goed beeld voor jQuery formulieren, dank u vriendelijk.

Ik vind het gewoon vreemd dat het formulier niet doet zoals alle andere.
Het is ook echt alleen m'n login formulier en de rest doet het wel met ENTER.
 
Kris Peeters

Kris Peeters

20/12/2012 15:59:18
Quote Anchor link
Dennis WhoCares op 20/12/2012 15:53:38:
... niet wil verzenden als ik op ENTER druk. ...


Dat ligt hier aan:

if(isset($_POST['register'])) {

Hier controleer je of de gebruiker op de knop heeft gedrukt.

Wat beter is, is dit:
if($_SERVER['REQUEST_METHOD'] === 'POST') {

Daarmee controleer je of het verzoek POST is, ongeacht wat de gebruiker met de knop heeft gedaan.
(Juist oppassen dat jij !isset gebruikte, omgekeerde logica)
Gewijzigd op 20/12/2012 16:00:05 door Kris Peeters
 
Dennis WhoCares

Dennis WhoCares

20/12/2012 16:04:55
Quote Anchor link
@Kris
Lol ik begrijp wat je bedoel met isset($_POST['register'])
Mijn knop het login
(deze wordt alleen gezet ($_POST['login']) Als daadwerkelijk op de knop is gedrukt.
Nou staat het if(isset($_POST['login_user'])
En nou doet ie het wel als ik op ENTER druk :D

----

Verder trouwens geen commentaar op mijn checkForm functie?
Het werkt wel :) Na een paar puntcomma's en haakjes en return aanpassingen
Gewijzigd op 20/12/2012 16:05:59 door Dennis WhoCares
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.