[PHP] Duwtje in de goede richting. FORM info parsen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xzenor
  • Registratie: Maart 2001
  • Laatst online: 14-10-2022

xzenor

Ja doe maar. 1 klontje suiker.

Topicstarter
Hi,

Ik probeer steeds wijzigende data uit een FORM te parsen..
Ik weet wel hoe ik dat aan moet pakken met $_POST[variable] om de waarde van een variable er uit te plukken..
Maar de inhoud van het FORM veranderd regelmatig (komen regels bij, gaan regels af)..

Hoe los ik zoiets op?
De opmaak is opzich hetzelfde voor elke regel..
het is een vinkje en een text vakje.. maar vinkje, aan vinkje uit en wat voor text dat veranderd voor iedere regel.
Er hangt nog een ID aan (dat is de name + een vaste Letter voor ieder object in het FORM).

Ik heb niet het gevoel dat ik veel verder kom op deze manier...
Ik google me scheel maar ik vind alleen maar FORM voorbeelden die statisch zijn....

Ik hoef niet zo zeer alles in hapklare brokken aangeleverd te hebben.. maar ik heb gewoon een duwtje in de goede richting nodig of een linkje ofzo want ik loop echt vast..

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
PHP:
1
2
3
foreach($_POST AS $key => $value) {
...
}

;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat TS bedoelt hoe hij de verschillende regels (in de zin van 'regels uit een tabel') uit zijn formulier kan herkennen. Je kan dit bijvoorbeeld doen door het unieke ID van zo'n regel in elk form-element te verwerken; bijvoorbeeld door elke naam van formelement te beginnen met 'ID_'. Hieraan kun je met bovenstaande loop van Roblll de regels weer terugherkennen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 09 maart 2009 @ 14:45:
Ik denk dat TS bedoelt hoe hij de verschillende regels (in de zin van 'regels uit een tabel') uit zijn formulier kan herkennen.
Ah ja, dat haal ik er nu, bij de 2e keer lezen, ook meer uit :) In dat geval is jouw post zinniger idd :)

[ Voor 6% gewijzigd door RobIII op 09-03-2009 14:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Je kunt ook array's maken in je formulier:

HTML:
1
<input type="text" name="text[]" />


Dan doe je daarna in je PHP:

PHP:
1
2
3
foreach ($_POST['text'] as $text) :
  // iets met $text
endforeach;

Acties:
  • 0 Henk 'm!

  • xzenor
  • Registratie: Maart 2001
  • Laatst online: 14-10-2022

xzenor

Ja doe maar. 1 klontje suiker.

Topicstarter
ja
code:
1
2
3
foreach ($_POST as $key => $value) {
echo $key.' is '.$value.'<br>';
}


Dat is wel ongeveer wat ik moet hebben eigenlijk.....
Nu nog effe zoeken hoe ik de verschillende dingen moet gaan onderscheiden...

Wat wel lastig is, is dat ik van de checkmarks eigenlijk alleen een response krijg als er eentje gecheckt is..
maar het invulveld krijg ik eigenlijk altijd terug.. of ie nou leeg is of niet..
Ik denk dat ik NULL waardes er uit zal moeten filteren nog.....

Ik denk dat ik hier wel iets mee kan...ik had al wel met dat foreach gestoeid, maar dat $key=>$value had ik niet geprobeerd..
geen idee wat het doet ook, vandaar
maar zolang het werkt, vind ik het prima

Acties:
  • 0 Henk 'm!

  • xzenor
  • Registratie: Maart 2001
  • Laatst online: 14-10-2022

xzenor

Ja doe maar. 1 klontje suiker.

Topicstarter
HuHu schreef op maandag 09 maart 2009 @ 14:51:
Je kunt ook array's maken in je formulier:

HTML:
1
<input type="text" name="text[]" />


Dan doe je daarna in je PHP:

PHP:
1
2
3
foreach ($_POST['text'] as $text) :
  // iets met $text
endforeach;
Hmmm da's misschien wel een handige optie, daar ga ik even verder naar kijken..

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

possamai schreef op maandag 09 maart 2009 @ 15:00:
geen idee wat het doet ook, vandaar
maar zolang het werkt, vind ik het prima
Ik zou inderdaad vooral ook niet even foreach opzoeken in de manual om erachter te kunnen komen wat het doet zodat je het een volgende keer ook toe kan passen waar het zinnig is. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
possamai schreef op maandag 09 maart 2009 @ 15:00:

Wat wel lastig is, is dat ik van de checkmarks eigenlijk alleen een response krijg als er eentje gecheckt is..
maar het invulveld krijg ik eigenlijk altijd terug.. of ie nou leeg is of niet..
Dat hoeft niet persé:

HTML:
1
<input name="aanvinkvakje" type="hidden" value="0" /><input name="aanvinkvakje" type="checkbox" value="1" />


$_POST['aanvinkvakje'] zal 1 bevatten als de checkbox is aangevinkt en 0 als deze niet is aangevinkt. Dat komt doordat als je de checkbox aanvinkt, de waarde van het verborgen veld "overschreven" wordt. Als je de checkbox niet aanvinkt "bestaat" hij niet en zal de waarde van het verborgen veld genomen worden.

Acties:
  • 0 Henk 'm!

  • xzenor
  • Registratie: Maart 2001
  • Laatst online: 14-10-2022

xzenor

Ja doe maar. 1 klontje suiker.

Topicstarter
NMe schreef op maandag 09 maart 2009 @ 15:13:
[...]

Ik zou inderdaad vooral ook niet even foreach opzoeken in de manual om erachter te kunnen komen wat het doet zodat je het een volgende keer ook toe kan passen waar het zinnig is. ;)
Perl gebruikt het ook en ik heb nergens terug kunnen vinden wat het nou precies doet..
Als jij zegt dat het bij foreach in de manual staat ga ik zeker zoeken..
Maar => is niet echt een tekenreeks waar je makkelijk op googled, en toen ik het een keer vroeg hier op tweakers werd het topic gesloten omdat het basiskennis was.... Je kan er nou eenmaal niet op googlen, ik wil best..

Acties:
  • 0 Henk 'm!

  • qanar
  • Registratie: Februari 2008
  • Laatst online: 21-05-2019
http://be2.php.net/manual/en/control-structures.foreach.php

Niet liev Adimeus :>

[ Voor 17% gewijzigd door qanar op 09-03-2009 15:28 ]


Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-09 12:01
Hier kijken: http://www.php.net/manual/en/

Het hoofdstuk over control structures gaat over dit soort zaken, lees gewoon even alles door en je vergaart gelijk een hoop meer kennis.

En dan vooral dit stuk: http://www.php.net/manual/en/control-structures.foreach.php

[ Voor 35% gewijzigd door McVirusS op 09-03-2009 15:29 ]


Acties:
  • 0 Henk 'm!

  • xzenor
  • Registratie: Maart 2001
  • Laatst online: 14-10-2022

xzenor

Ja doe maar. 1 klontje suiker.

Topicstarter
kijk, het heten 'structures' dat scheel ook alweer :)
Dat snapt google wel :)
bedankt daarvoor

Overigens om even terug te komen op topic.

code:
1
2
3
4
5
6
7
foreach ($_POST as $key => $value) {
list($type, $id) = split("-", $key);

echo("ID = " . $id . "\n");
echo("Type = " . $type . "\n");
echo("Value = " . $value . "\n");
}


Deze output krijg ik dan
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ID = 1290
Type = WB
Value = on
ID = 1290
Type = FACT
Value = 2345
ID = 1291
Type = WB
Value = on
ID = 1291
Type = FACT
Value = 432
ID = 1357
Type = FACT
Value = 234


Met deze info kan ik er een sql insert query van maken, en dat is uiteindelijk wat ik wil..
Leek me handig voor de search om'm er even bij te posten.

't is een vrij simpel form om aan te kunnen geven of een werkbon ondertekend en binnen is en om een factuurnummer er bij te kunnen zetten, alleen komen de uren uit een database van een tijdsregistratie pakket (waar ik niet aan wil klooien), dus ik bouw naast de bestaande database een andere database op met overeenkomende ID's.

Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-09 12:01
Als je info uit een form in een SQL query gaat gebruiken zoek dan eens op SQL injection. En lees de manual over mysql_real_escape_string.

Extra gratis tip ;).

Acties:
  • 0 Henk 'm!

  • winkbrace
  • Registratie: Augustus 2008
  • Laatst online: 24-08 15:17
possamai schreef op maandag 09 maart 2009 @ 15:24:
[...]
Je kan er nou eenmaal niet op googlen, ik wil best..
Het is nota bene de 2e link! (bij mij althans)
http://www.google.nl/search?q=foreach

@Huhu: Coole HTML truc. Die komt vast nog wel eens van pas!

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

possamai schreef op maandag 09 maart 2009 @ 15:42:
kijk, het heten 'structures' dat scheel ook alweer :)
Dat snapt google wel :)
bedankt daarvoor
Foreach heet een control structure, => is dat niet. En je zou op foreach moeten zoeken omdat je het hierboven ook in die context gebruikt ziet. RobIII post een voorbeeld, en jij neemt het klakkeloos voor waar aan. Ik vind het leuk dat je zo'n vertrouwen hebt in onze moderators maar ik zou het nóg leuker vinden als je daadwerkelijk dan bij foreach zou kijken wat de => in die context doet. Dat het lost daarvan ook nog in arrays gebruikt wordt om een key aan een value te koppelen maakt dan verder in dit geval niet zo uit. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • xzenor
  • Registratie: Maart 2001
  • Laatst online: 14-10-2022

xzenor

Ja doe maar. 1 klontje suiker.

Topicstarter
BazzPsychoNut schreef op maandag 09 maart 2009 @ 15:58:
[...]


Het is nota bene de 2e link! (bij mij althans)
http://www.google.nl/search?q=foreach

@Huhu: Coole HTML truc. Die komt vast nog wel eens van pas!
voor 'foreach' ja..
Ik dacht dat => een op zich zelf staand iets was (net zoals in de shell > voor output to file is en | voor het pipen)
en op => kan je niet googlen....

Uw zoekbewerking - => - heeft geen overeenkomstige documenten opgeleverd..

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Gewoon met een array werken.

HTML:
1
2
3
4
5
<form action="" method="post">
    <p><input type="text" name="data[name]" /></p>
    <p><input type="text" name="data[age]" /></p>
    <p><input type="checkbox" name="data[send_email]" /></p>
</form>


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$data = ! empty ( $_POST['data'] ) ? $_POST['data'] : array ();

if ( ! empty ( $data['name'] ) )
    // doe iets
    
if ( ! empty ( $data['age'] ) )
    // doe iets
    
if ( ! empty ( $data['send_email'] ) )
    // doe iets     
    
/* of */

foreach ( $data as $row ) {}
    // array aflopen

March of the Eagles

Pagina: 1