beginnersvraag over formulieren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Ellen P

Ellen P

28/12/2010 18:25:11
Quote Anchor link
Ik krijg de indruk dat het niet mogelijk is goed te werken met 2 forms in één PHP-programma.
Ik wil graag de mogelijkheid tot een ja,nee vraag voor bevestigen in mijn programmaatjes hebben.
Ik had die in een extra form geprogrammeerd.
Maar wanneer ik die run lijkt het alsof de waarden van de POSTs van het eerste formulier niet onthouden worden, Kan dat kloppen? (omdat ik dan weer in de input mogelijkheid van het eerste form kom.)

Vooral voor bij het wijzigen of verwijderen van gegevens leek het me wel handig om eerst de gegevens te tonen, en daarna om bevestiging vragen met ja/nee vraag.
Ik hoop dat ik duidelijk ben in mijn uitleg.

En ik heb op dit moment even geen idee hoe ik het probleem met eerst gegevens tonen en daarna bevestigen zou kunnen oplossen.
Zijn er andere manieren om daar mee om te gaan?

Hieronder voorbeeld code :
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
26
27
28
<?php
if($_POST["knop"] != "Verzenden") {
    ?>


    <form method="POST" >
      Naam : <input type="text" name="naam" "></p>
      <p>
      <input type="submit" value="Verzenden" name="knop"></p>
    </form>
    <?php
} else {
    echo $_POST["naam"];
    
    if( !$_POST["keuze"] ){
        ?>


        <form method="POST" >
          Naam wijzigen ?  
          <input type="submit" value="Ja" name="keuze">
          <input type="submit" value="Nee" name="keuze">
        </form>
    
        <?php
    } else {
        echo $_POST["keuze"];
    }
}

?>
Gewijzigd op 29/12/2010 09:29:49 door Ellen P
 
PHP hulp

PHP hulp

29/03/2024 08:48:33
 
Vincent Huisman

Vincent Huisman

28/12/2010 18:27:51
Quote Anchor link
waarom maak je er dan niet een grote <form> van?
 
Ellen P

Ellen P

28/12/2010 18:29:52
Quote Anchor link
Omdat ik eerst b.v. een naam wil laten invoeren, en daarna tonen. En daarna wil vragen of de gebruiker zeker weet dat hij deze wil wijzigen, of verwijderen.

Maar ik wel sowieso graag weten hoe je iets dergelijks aanpakt. Want dit soort dingen in 2 stappen heb je toch wel vaker behoefte aan lijkt me.
Gewijzigd op 28/12/2010 18:30:42 door Ellen P
 
- Ariën  -
Beheerder

- Ariën -

28/12/2010 18:34:57
Quote Anchor link
Overigens controleer je of een formulier is verstuurd op deze manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
?>
Gewijzigd op 28/12/2010 21:02:08 door - Ariën -
 
Mike Smit

Mike Smit

28/12/2010 18:50:14
Quote Anchor link
- Aar - op 28/12/2010 18:34:57:
Overigens controleer je of een formulier is ingevuld op deze manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
?>


Soieso controleer je niet of een formulier is ingevuld maar of het formulier is gesubmit.

Bovendien zou je het inderdaad zo kunnen doen maar mijn voorkeur gaat uit naar de manier waarop ik het hieronder laat zien. Als er namelijk twee submit's aanwezig zijn op dezelfde pagina en je submit een van de twee dan worden ze allebij uitgevoerd.

Het is naar mijn mening beter om het zo te doen.

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
<?php
    
    if(isset($_POST['ja']))
    {

    
        echo 'Submit ja.';
    
    }

    elseif(isset($_POST['nee']))
    {

    
        echo 'Submit nee.';
    
    }

    
?>


<form action="" method="post">
<input type="submit" name="ja" value="Ja" />
<input type="submit" name="nee" value="Nee" />
</form>
Gewijzigd op 28/12/2010 18:55:38 door Mike Smit
 
Ellen P

Ellen P

28/12/2010 18:59:32
Quote Anchor link
@Mike Smit
Even een vraag. Je zegt, je controleert of een formulier is gesubmit. Is dat wat jij doet in je voorbeeld met isset(), dus of die variabelen gezet zijn?.


Bedankt voor de reacties.
Maar jammer genoeg gaan die voorbij aan mijn probleem.
Mijn probleem heeft er mee te maken dat ik binnen 1 php-programma om input in een formulier, en daarna een bevestiging wil vragen.

Stel je wilt een item verwijderen. Je vraagt de id van dat item. Zoekt item op in de database. Toont gekoppelde gegevens. En stelt de Janee vraag of dit item verwijderd moet worden.

Hoe doe je dat dan in PHP?
Voorzover ik zie kan in alleen input van gebruikers krijgen via formulieren. Dus ook voor een JA/Nee vraag. Maar blijkbaar kan binnen een php programma maar 1 formulier posten in plaats van 2 of meer.
Hoe moet ik dat dan doen. Want ik had ook al de input en post van het ID.

Of is er een andere manier om dit te hanteren die mij volkomen ontgaat misschien?
Gewijzigd op 28/12/2010 19:08:20 door Ellen P
 
Mike Smit

Mike Smit

28/12/2010 19:14:37
Quote Anchor link
In reactie op jouw vraag: Je kunt een submit een naam geven. Door vervolgens de submit te submitten bestaat $_POST['ja/nee'] en kun je dus inderdaad aan de hand van if(isset($_POST['ja/nee'])) {} controleren of deze bestaat.

Overige toelichting/mogelijkheden:
-----------------------------------------------------------------

Je waarschuwt de gebruiker allereerst dat hij of zij op het punt staat om een record uit de database te verwijderen.

Je plaats onder de waarschuwing een checkbox welke moet worden aangevinkt voordat de submit om het record te verwijderen word enabled (de submit moet disabled zijn).

Wanneer de gebruiker de checkbox aanvinkt kun je met javascript de button enabled maken. Vervolgens kan de gebruiker klikken op verwijderen.

Een andere optie is het plaatsen van twee links onder de waarschuwing:

- Ik weet het zeker
- Annuleren

Wanneer de gebruiker op "Ik weet het zeker" klikt stuur je hemd oor naar een pagina welke aan de hand van de meegestuurde $_GET het record gaat verwijderen (verwijder.php?id=[ID]).

Wanneer de gebruiker op "Annuleren" klikt stuur je hem of haar terug naar de vorige pagina.

Ik hoop je zo voldoende te hebben geholpen, wanneer er nog vragen zijn kun je deze uiteraard stellen.

Mike Smit
Gewijzigd op 28/12/2010 19:17:04 door Mike Smit
 
Ellen P

Ellen P

28/12/2010 19:26:21
Quote Anchor link
Bedankt Mike,
Javascript ken ik niet. En PHP ben ik dus net mee bezig. Laat ik het daar maar bij houden. PHP vind ik op dit moment al moeilijk genoeg.
Misschien een heel domme vraag. Maar hoe stuur je hem terug naar vorige pagina?

Ik snap hoe ik via een formulier submit door kan sturen. En de optie die je aangeeft om de gebruiker zelf op een link te laten klikken. Had ik nog niet aan gedacht dus dat geeft een mogelijkheid.
 
Mike Smit

Mike Smit

28/12/2010 19:42:01
Quote Anchor link
Het terug sturen naar een vorige pagina kan op twee manieren. Als je eigenlijk al weet vanaf welke pagina de bezoeker komt kun je hem gewoon laten klikken op een link met de locatie van de vorige pagina.

Wanneer je niet weet waar de bezoeker vandaan komt kun je hem door middel van een van deze scripts terugsturen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="javascript:history.back();">Annuleren</a>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '<a href="'. $_SERVER['HTTP_REFERER'] .'">Annuleren</a>'; ?>
Gewijzigd op 28/12/2010 19:44:15 door Mike Smit
 
Niels K

Niels K

28/12/2010 19:44:05
Quote Anchor link
En als javascript uit staat? ;)
 
Mike Smit

Mike Smit

28/12/2010 19:44:34
Quote Anchor link
Daar dacht ik net ook aan ik heb mijn post al gewijzigd. :)
 
Niels K

Niels K

28/12/2010 19:52:11
Quote Anchor link
Jouw opties kunnen, maar je kan hem ook gewoon hardcoded erin zetten.
 
Mike Smit

Mike Smit

28/12/2010 19:53:45
Quote Anchor link
Hoe bedoel je hardcoded? Heb ik dat al niet als optie aangediend?
 
Milo S

Milo S

29/12/2010 09:12:06
Quote Anchor link
Niels bedoelt dat je de letterlijke URL in de link gaat zetten, en dus niet HTTP_REFERER.

Zet je script tussen code tags: [code.] [/code.] <- zonder de puntjes.

Kijken of een formulier word verzonden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{

    # Foutafhandeling
}
else
{
    # Formulier
}
?>


Nu heb jij het probleem dat je meerdere formulieren hebt. Dan zou ik er zoiets van maken (regel 2 vorige code vervangen):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['form'] == 'Formulier_1' )
?>


Je kan ook een if else statement tusen regel 3 en 5 maken zoals dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if( $_POST['form'] == 'Formulier_1' )
{

    # Formulier 1
    # Fountafhandeling

}
else
{
    # Formulier 2
    # Foutafhandeling

}
?>


Als je dan weet hoe die velden heten kunnen ze zo afgehandeld worden:
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
<?php
# Veld 1
if( empty( $_POST['veldnaam1'] ) )
{

    $formErrors[] = 'U heeft veldnaam1 niet ingevuld';    
}


# Veld 2
if( empty( $_POST['veldnaam2'] ) )
{

    $formErrors[] = 'U heeft veldnaam2 niet ingevuld';    
}


# Veld 3
if( empty( $_POST['veldnaam3'] ) )
{

    $formErrors[] = 'U heeft veldnaam3 niet ingevuld';    
}

?>


Bij dit laatste kan je dan later door middel van een foreach loop doorheen lopen om de errors weer te geven.
Gewijzigd op 29/12/2010 09:12:36 door Milo S
 
Ellen P

Ellen P

29/12/2010 11:04:29
Quote Anchor link
- Aar - op 28/12/2010 18:34:57:
Overigens controleer je of een formulier is verstuurd op deze manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
?>


Ik wil graag weten waarom dit beter is.
Graag motiveren, want bij mijn script werkt het in principe. En het idee van testen van de POST komt uit het leerboek PHP5 van Arjan Burger en Wouter Tengeler. Is dat dan niet een kwestie van smaak misschien?
 
- Ariën  -
Beheerder

- Ariën -

29/12/2010 11:23:28
Quote Anchor link
Je wilt controleren of het gelukt is, niet wat er ingevuld is.

Een kwestie van de juiste opbouw.
 
Obelix Idefix

Obelix Idefix

29/12/2010 11:42:36
Quote Anchor link
Ellen P op 29/12/2010 11:04:29:
Graag motiveren, want bij mijn script werkt het in principe. En het idee van testen van de POST komt uit het leerboek PHP5 van Arjan Burger en Wouter Tengeler. Is dat dan niet een kwestie van smaak misschien?


Die (leer)boeken ken ik; ben er ook mee begonnen om php te leren. Achteraf blijken ze leuk/interessant als een soort 1e inleiding, want naar mijn idee staat er veel onjuiste/onvolledige informatie in. Zo werken ze bij query's doorgaans met select * en die() ipv het selecteren van benodigde velden en een nette foutafhandeling. Zelfde voor het controleren of een formulier 'gepost' is.

Overigens: iets kan (in principe) wel werken, maar daarmee is niet gezegd dat het goed is. Mogelijk een toevalstreffer dat het nu goed gaat, maar als je later verder gaat/uitbreid, is er een kans dat het dan niet (meer) goed gaat.
 
Wouter J

Wouter J

29/12/2010 11:48:55
Quote Anchor link
Ellen P:
Graag motiveren, want bij mijn script werkt het in principe. En het idee van testen van de POST komt uit het leerboek PHP5 van Arjan Burger en Wouter Tengeler. Is dat dan niet een kwestie van smaak misschien?

Het werkt misschien wel maar dat zegt niet dat het goed is. PHP heeft 1 heel groot nadeel: Het grijpt in om een script toch goed te laten werken.

En waarom request_method beter is dan isset is omdat sommige versie's van browsers geen waarde van de submit knop meesturen. Dan zal die isset dus nooit werken.
 
- SanThe -

- SanThe -

29/12/2010 12:11:52
Quote Anchor link
Wouter J op 29/12/2010 11:48:55:
.. omdat sommige versie's van browsers geen waarde van de submit knop meesturen ..


Er hoeft niet altijd op submit geklikt te worden. Veel eenvoudige formulieren verzenden ook bij een 'enter'. En als dat gebeurt werkt het testen op de submitknop niet. En if($_SERVER['REQUEST_METHOD']=="POST") werkt altijd.
 
Ellen P

Ellen P

29/12/2010 16:55:52
Quote Anchor link
Bedankt iedereen voor het reageren.
Blijkbaar is het leerboek dat ik gebruik niet zo goed. Weet iemand leerboeken voor een beginner die wel goed zijn.
Het is wel handig dat in een dergelijk boek, ook dit soort zaken gemotiveerd wordt.
Want alleen als ik het begrijp onthoud ik het.
 

29/12/2010 16:59:25
 

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.