PHP+AJAX --> forms submitten
Ik zit met een klein probleempje. Ik heb, als voorbeeld, het volgende scripje:
<html>
<form id="banking">
<input name="waardeform1" type="text">
<input name="waardeform1" type="text">
<input name="waardeform2" type="text">
<input name="waardeform1" type="text" value="30" >
<input name="knopform1" type="button" value="Verstuur1" onClick="send('versturen','terugDIV','verwerkbestand.php');">
<input name="knopform2" type="button" value="Verstuur2" onClick="send('versturen','terugDIV','verwerkbestand.php');">
</form>
</html>
het zijn eigenlijk 2 formulieren door elkaar. Het staat door elkaar, omdat het in het 'echte' script met een tabel náást elkaar gezet wordt, en omdat HTML van links naar rechts leest, komen de formulieren door elkaar heen te staan.
Normaal, als je door middel van PHP de formulieren Submit, kun je in je verwerkbestand het volgende doen:
Code (php)
waarbij je in de verwerkcode kies welke velden je controleer, bij knopform2 controleer je alleen de velden die bij formulier2 horen. Maar omdat ik gebruik maak van AJAX (met prototype-1.3.1) en de volgende functie:
function send(form, div, pagina){
var params = Form.serialize($(form));
new Ajax.Updater(div, pagina, {asynchronous:true, parameters:params});
}
kan ik in het verwerkbestand niet zien op welke knop er nou geklikt is. Hij verwerkt bij het klikken ook ALLE velden die in het formulier zitten, maar er is geen verschil. Ik kan enkel, in de 'verwerk URL' in de onClick-event achter de link een $_GET ding maken, maar dat is niet erg hack-veilig. Nu is mijn vraag: Is er een manier om de velden een ID of iets dergelijks mee te geven waardoor ik ze in het verwerkbestand kan onderschijden? Het is ook goed als ik in het verwerkbestand kan zien op wélke knop er geklikt is....
Ik hoop dat iemand mij kan helpen, want ik kom er niet uit...
Sam
Dit is echt het makkelijkste probleem ever!
onclick="send(form, div, pagina, WELK_FORMULIER);"
en WELK_FORMULIER is dan 1 of 2 en dus kan je de waarden ophalen met id's "waardeform" + WELK_FORMULIER
Tadaam :) Of niet?
async hoef je trouwens niet mee tegeven als true, die is standaard true ;)
1) ingewikkeld gaan doen met javascript
2) maak 2 aparte formulieren, en zet ze via CSS en 'float' naast elkaar. Even zoeken op Google naar css float levert al aardig wat op. En anders kunnen er aardig wat mensen op dit forum je daar wel mee helpen.
(stille hint: kies manier 2! kies manier 2!)
@cervetti: probleem 1: formulieren zijn eigenlijk 1 (wat dus al kut is) formulier nu voor Javascript. probleem 2: jouw toon, ik mis de :D :D om te benadrukken dat dit positieve opwinding is in plaats van een soort van woede, en probleem 3: je hebt het edit-knopje over het hoofd gezien :D
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Jan: probleem met de (oude) prototype-lib is dat deze niet weet op welke knop er is gedrukt. Nadeel van Javascript gebruiken. Alle native functies vallen dan weg...
Oke, dan inderdaad gewoon manier twee uit je eerdere reply.
ik wil eigenlijk geen verschillende events, omdat ik dit soort dingen vaker tegen kom, en als ik voor elk formulier een eigen event ga maken, kost dit een hoop meer code, dit probeer ik dus te vermijden.
@Jelmer:
ik zal morgen eens kijken naar dat CSS float, heb nu teveel drank op om dit te leren :P
@Jan Koehoorn:
als je de value verander, veranderd toch alleen de tekst op de knop zelf? wat heeft dit met AJAX te maken??
Ik ga morgen dus even zoeken. dat CSS float lijkt mij de beste oplossing. Dus ik zal dat even gaan bekijken, en anders horen jullie het wel weer!
<table>
<tr>
<td><form id="1">
<table>
<tr><td><formulier1></td></tr>
</table>
</form></td>
<td><form id="2">
<table>
<tr><td><formulier2></td></tr>
</table>
</form></td>
</tr>
</table>
hiermee is het toch veel gemakkelijker om precies aan te geven waar het formulier komen moet? aangezien je met CSS-float enkel kan kiezen tussen left, right en center.
Wie kan mij uitleggen waarom CSS-float beter zou zijn??
waarom geen table
Ow, en trouwens, id's mogen niet alleen maar nummers zijn. Volgens mij moeten ze beginnen met een [a-z] en daarna mogen ze pas nummers hebben.
Ow, en trouwens, id's mogen niet alleen maar nummers zijn. Volgens mij moeten ze beginnen met een [a-z] en daarna mogen ze pas nummers hebben.
:s waar slaat jouw reactie op? die link tenminste?