Kan ik via PHP een submit doen die je normaal via een button zou doen ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Davy Carmans

Davy Carmans

30/05/2013 11:19:37
Quote Anchor link
Hallo allemaal,

in een PHP pagina heb ik 2 forms zitten.

De eerste form heeft ADD/UPDATE/DELETE buttons en de submit ervan roept PHP_Self op als pagina om de actie uit te voeren en gebruikt de URL "?..." items om data door te geven.

M.a.w. een "Update" roept de pagina op met "?update" in de url en de actie staat dan in de PHP code (met een "switch" selectie).

De tweede form heeft 1 button, die doet enkel een submit en heeft als actie de volgende pagina te openen met method="post".

De gegevens worden bijgehouden in een $_SESSION['cart']; Dus als ik een ADD doe, wordt het item toegevoegd, een update gaat kijken of het "aantal" veld is geupdate en gaat de cart updaten.

Ik merk nu echter dat als je een item toevoegt of de teller voor een item aanpast, maar niet eerst de UPDATE knop drukt, dat de LAATSTE aanpassing (toevoegen, remove of teller veranderen), de cart in de volgende pagina die laatste aanpassing niet bevat.

Mijn vraag is dus hoe ik dit moet aanpakken ?

Kan ik in de 2de form bv de PHP_SELF aanroepen met een "final update before submission" code en dan verder gaan met de POST van de hele pagina ? Is er m.a.w. een functie in PHP die de volgende pagina gewoon kan aanroepen ? Misschien is dit iets heel simpel, maar op het moment vind ik even geen oplossing.

Vriendelijke groeten en alvast bedankt voor alle hulp.

Davy

Toevoeging op 31/05/2013 09:12:10:

Ik dacht zelf een oplossing gevonden te hebben als volgt :

Dit is de 2de form :
Quote:

<div id="footer">
<form action="berekening_stap3.php" method="post" id="cart">
<button value="Submit" type="submit">Verder...</button>
<input type="submit" name="formSubmit" value="Verder..." />
</form>
</div>


De button is wat ik had voordien, nu heb ik er de "input" bij gezet (om te testen).

De code die ik dan heb toegevoegd is :

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
        foreach ($_POST as $key=>$value) {
            if (stristr($key,'qty')) {
                $id = str_replace('qty','',$key);
            
                $_SESSION['cart'][$id]= $value;
            }
        }

        
    ?>


Dit is de zelfde code die ik gebruik in het aanroepen van de pagina om te updaten.

Maar, ik merk nu dat dit wel eens proberen kan geven omdat ik de button in de 2de form heb zitten...

Daarom dacht ik , ik zet deze code bij in de eerste form, maar aangezien daar al een SUBMIT button staat die de pagina opnieuw aanroept met een variabele (?action=add, update, delete) kan ik geen 2de submit button zetten.

Dus ik ben nog niks verder. Niemand een idee hoe ik dit kan oplossen ?

Groetjes,

Davy
 
PHP hulp

PHP hulp

22/12/2024 15:20:29
 
Davy Carmans

Davy Carmans

11/06/2013 13:30:11
Quote Anchor link
Niemand die me hier mee kan helpen ?
 
Chris PHP

Chris PHP

11/06/2013 13:43:25
Quote Anchor link
Als je eens kort en duidelijk uitlegd wat je nu precies wil, dan komen we misschien al een stuk verder.

Andwoord op je titel "Kan ik via PHP een submit doen die je normaal via een button zou doen ?"

Nee, PHP is een scripting taal die op de server draait en dus niet in de browser terecht komt. Submit doe je altijd vial cient-side scripting zoals HTML, JS, etc.
 
Roy -

Roy -

11/06/2013 13:44:14
Quote Anchor link
Misschien even wat duidelijker proberen uit te leggen? Ik snap namelijk niet wat je wilt.
 
Davy Carmans

Davy Carmans

11/06/2013 14:04:55
Quote Anchor link
Hey,

sorry als ik onduidelijk was. Ik d8 dat ik netjes alles had beschreven.
Hoe dan ook, tweede poging :

Ik heb een PHP pagina waarin ik in een form de gebruiker een aantal velden toon, samen met een spinner veld om een getal te verhogen of verlagen. Deze form biedt ook een mogelijkheid om gegevens toe te voegen (ADD), t updaten (UPDATE) en te verwijderen (DELETE).

Elke actie hierboven beschreven, roept deze pagina opnieuw op met in de url de uit te voeren actie (dus URL?action=xxxxx). De PHP code checkt de actie en voert deze uit. De gegevens worden bijgehouden in een cart.

Quote:
case 'add':
if (isset($_SESSION['cart'][$_GET['id']])) {
$val = $_SESSION['cart'][$_GET['id']];
$_SESSION['cart'][$_GET['id']]= $val + 1;
}
else {
$_SESSION['cart'][$_GET['id']]=0;
}
break;

case 'delete':
unset($_SESSION['cart'][$_GET['id']]);
break;

case 'update':
foreach ($_POST as $key=>$value) {
if (stristr($key,'qty')) {
$id = str_replace('qty','',$key);
$_SESSION['cart'][$id]= $value;
}
}
break;


Ik heb een tweede form gemaakt die ENKEL een knop "Verder..." heeft.

Quote:
<div id="content_footer">
<form action="berekening_stap3.php" method="post">
<button type="submit">Verder...</button>
</form>
</div>


Zoals je ziet doet deze button enkel een submit en gaat naar de volgende pagina.

Ik merk nu echter dat als je een item toevoegt of de teller voor een item aanpast, maar niet eerst de UPDATE knop drukt, dat de LAATSTE aanpassing (toevoegen, remove of teller veranderen), de cart in de volgende pagina die laatste aanpassing niet bevat.

Wat verwacht ik ? Dat de SUBMIT knop eigenlijk nog een laatste keer een UPDATE doet van de CART vooraleer hem te posten naar de volgende pagina zodat daar ook ALLE laatste aanpassingen zichtbaar zijn.

Ik kan proberen de code te zippen en ergens te zetten, maar ik hoop dat ik nu toch al wat duidelijker was ?

Vriendelijke groeten en alvast bedankt voor alle hulp.

Davy
 
- SanThe -

- SanThe -

11/06/2013 14:13:07
Quote Anchor link
Je vult 2 formulieren in maar er wordt er altijd maar 1 gepost. Maak er dus 1 formulier van.
 
Davy Carmans

Davy Carmans

11/06/2013 14:19:23
Quote Anchor link
Probleem is dat ik rechts van de eerste form nog een andere heb staan, waar de "toevoeg" items van komen. Was ik even vergeten te zeggen...

De linkerform toont eigenlijk de items die in mijn cart zitten, de rechterform toont ALLE mogelijke data in de selectie tabel (die ze kunnen toevoegen aan de linker cart pagina).

De button "Verder" hoort niet echt bij één van de twee forms...

Zelfs met 1 formulier vrees ik er voor dat hij geen update doet van de gegevens ?

Toevoeging op 11/06/2013 14:25:58:

Afbeelding
 
Donny Wie weet

Donny Wie weet

11/06/2013 14:47:50
Quote Anchor link
Je kan eventueel 2 submit buttons maken. Als je ze allebij een verschillende name="" geeft, kan je in je PHP code gebruik maken van isset:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (isset($_POST['button_name_1'])){
//Hier alles van button 1
} elseif(isset($_POST['button_name_2'])){
//Hier alles van button 2
}
?>
 
Chris PHP

Chris PHP

11/06/2013 14:59:22
Quote Anchor link
Waarom maak je niet gewoon een multi-part formulier?
 
Davy Carmans

Davy Carmans

11/06/2013 15:01:01
Quote Anchor link
Hoi Donny,

ik had het al op die manier geprobeerd.
MAAR, hoe kan ik dan in stukje "Button 2" met een $_POST naar mijn "berekening_stap3" pagina gaan ?

Groetjes,

Davy

Toevoeging op 11/06/2013 15:01:28:

Chris, sorry, wat is dat ? :-)
Ben nog niet echt gevorderd op PHP gebied...

Toevoeging op 11/06/2013 15:08:51:

Met een grote kans hier mega uitgelachen te worden, plaats ik even de bestanden waarover ik spreek...

Bestanden
 
Donny Wie weet

Donny Wie weet

11/06/2013 15:09:06
Quote Anchor link
Zodra je op submit klikt gaat ie al naar die berkening_stap3 toe. Wat je nog als alternatief kan doen als je 2 aparte pagina's wil:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if (isset($_POST['button_name_1'])){
//Hier alles van button 1
include('hier_je_pagina');
}
elseif(isset($_POST['button_name_2'])){
//Hier alles van button 2
include('hier_je_pagina');
}

?>
 
Chris PHP

Chris PHP

11/06/2013 15:09:41
Quote Anchor link
Een multi-part formulier is een formulier die uit meerdere formulieren kan bestaan. Via Google zijn er redelijk wat tutorials te vinden hoe je dit gebruikt.
 
Davy Carmans

Davy Carmans

11/06/2013 15:12:14
Quote Anchor link
@Donny : is het stukje dat je plaatst te zetten op berekening_stap2 of 3 ?
@Chris : ik vind enkel pagina's die spreken over file upload pagina's (als je zoekt op "PHP multi-part formulier").
 
Donny Wie weet

Donny Wie weet

11/06/2013 15:35:49
Quote Anchor link
Ja, je kan op die manier de bepaalde pagina oproepen bij de juist submit knop.

Ik zou ook zeker even kijken naar Chris NVT zn oplossing
 
Chris PHP

Chris PHP

11/06/2013 16:20:04
Quote Anchor link
Ik bedoel ook niet multipart/form-data wat verplicht is wanneer je een bestand upload middels een formulier, vandaar ook het streepje tussen multi en part ;-)

Kijk deze link eens als tutorial hoe je meerdere formulieren op 1 pagina kunt krijgen.
Tutorial
 
Donny Wie weet

Donny Wie weet

11/06/2013 17:25:07
Quote Anchor link
Even een vraag die niet helemaal relevant is aan dit topic: Ik zag in de tutorial dit:
<OPTION SELECTED>Learning the UNIX Operating System
<OPTION>Learning the Korn Shell
<OPTION>UNIX Power Tools
<OPTION>Learning Perl
<OPTION>Programming Perl
<OPTION>Learning the GNU Emacs

Er is geen afsluiting van de option. Is dit niet meer verplicht of iets? Is het wel semantisch?
 
Chris PHP

Chris PHP

11/06/2013 17:28:20
Quote Anchor link
@Donny,

Het is niet verlpicht, daar bedoel ik mee dat het ook werkt zonder </option> erachter. Echter is het volgens mij wel volgens de standaard dat je </option> erachter moet zetten.
 
Dennis Kottier

Dennis Kottier

11/06/2013 19:26:46
Quote Anchor link
Als ik meerdere buttons gebruik in een formulier, gebruik ik de input-tags en geef ik ze een naam.
Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<input type='submit' name='button1' value='Button 1!'>
<input type='submit' name='button2' value='Button 2!'> etc.

Deze vraag ik dan verderop in het script op met $_REQUEST - en dan meestal in een if-statement.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<form action='' method='post'>
<input type='submit' name='button1' value='Button 1!' />
<input type='submit' name='button2' value='Button 2!  />
</form>

if($_REQUEST['button1'])
{
 // Doe iets als op knop 1 is gedrukt
}
if($_REQUEST['button2'])
{
 // Doe iets als op knop 2 is gedrukt
}

Op deze manier kun je elke button afzonderlijk iets laten doen, zonder dat daar aparte constructies voor nodig zijn. (Ik gebruik hier trouwens de POST-methode om data te versturen, maar de GET-methode zou ook gewoon moeten werken. De POST-methode is alleen iets veiliger, omdat die niet in de URL af te lezen is. Wil je toch dingen versturen, die niet zichtbaar zijn in de URL, maar die niet ingevuld horen te worden door de gebruikers, kun je ook een <input type='hidden'> toevoegen, waarin je dan de waarde stopt die je mee wil laten verzenden. Deze zal niet zichtbaar zijn.

Ook is de form action-tag leeg, dit voorkomt gebruik van PHP_SELF. Het herlaadt namelijk de pagina uit zichzelf.)
Gewijzigd op 13/06/2013 16:22:45 door Dennis Kottier
 
Davy Carmans

Davy Carmans

11/06/2013 20:58:25
Quote Anchor link
Hey Dennis,

duidelijke uitleg. Maar ik blijf zitten met de vraag hoe ik dan wel naar de berekening_stap3 pagina spring als ik op de Verder knop druk ?

Groetjes,

Davy
 
Dennis Kottier

Dennis Kottier

13/06/2013 16:21:19
Quote Anchor link
Hoi Davy,

Als je niks wilt versturen, en toch automatisch doorgestuurd wil worden, kun je gewoon een stuk javascript printen via PHP:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if($_REQUEST['Verder'])
{
 print("<script language='javascript'>
 window.location='VolledigeURLVanWebsite';
 </script>");
}

Als je toch iets mee wilt sturen, doe ik meestal ook een combinatie van PHP en Javascript. Je kunt namelijk via javascript automatisch formulieren verzenden d.m.v. document.[formnaam].submit();.

In een voorbeeld: we hebben een formulier met naam formulier_1. Hier zitten 2 verborgen inputs in, allebei met een apart ID en aparte naam. Dan gaat de PHP-file als volgt: (dit kan in 1 .php-bestand)
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
<html>
<head>
<script language="javascript">
window.onload=function(){
document.getElementById('input1').value = 'blabla';
document.getElementById('input2').value = 'bla';
};
</script>
</head>
<body>
<form name='verder' method='post' action='berekening_stap3.php'>
 <input type='hidden' id='input1' name='input1'>
 <input type='hidden' id='input2' name='input2'>
 <input type='submit' value='Verder' name='verder'>
<?php
if($_REQUEST['verder'])
{

 print("<script language='javascript'>
 document.verder.submit();
 </script>"
);
}

?>

</form>
</body>
</html>

Dit laatste stuk code zal in de verborgen input 1 'blabla' invoegen, en in input 2 'bla'. Dit kunnen natuurlijk ook gewone tekstvelden zijn, maar dan moet het bovenste stuk javascript aangepast worden, zodat daar niks meer ingevuld wordt.

Als er dan op de knop 'verder' gedrukt wordt, gaat de PHP zijn werk doen. Als er een verzoek binnen komt met naam 'verder', zal het wat javascript printen, die meteen uitgevoerd wordt. Zoals je kunt zien is het stukje code dat wat ik eerder in deze reactie verteld heb. Hier zoekt de javascript een formulier met naam 'verder', en verzend dat formulier naar de pagina in het action-stuk van de form-tag.
Gewijzigd op 13/06/2013 16:21:53 door Dennis Kottier
 
Chris PHP

Chris PHP

13/06/2013 16:53:45
Quote Anchor link
@Dennis,

Waarom zou je dat oplossen met JS, wanneer je ook gewoon de header() kunt gebruiken?

Dus dan zou je dit krijgen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_REQUEST['Verder'])
{

header ("Location: het/pad/naar/je/pagina.php");
}

?>
 

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.