[PHP] Formulieren en serialize()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heren,

ik heb een formulier gemaakt waar ik als action een submit gebruik naar een php scriptje, nu doet zich echter het vervelende feit voor dat ik checkboxes moet gebruiken op dit formulier.
Hieronder een voorbeeld van mijn situatie:


<form action="resultaat.php" method="post">
<table border='0' cellpadding='0' cellspacin='0'>
<tr>
<td colspan="2"><b>Met welk besturingssysteem is uw werkcomputer uitgerust?</b></td>
</tr>
<tr>
<td><input type='checkbox' name='besturingssysteem[]' value='Windows 95'>
Windows 95</td>
<td><input type='checkbox' name='besturingssysteem[]' value='Dos'>
MS-Dos</td>
</tr>
<tr>
<td><input type='checkbox' name='besturingssysteem[]' value='Windows 98'>
Windows 98</td>
<td><input type='checkbox' name='besturingssysteem[]' value='Os2warp'>
Os2warp</td>
</tr>
<tr>
<td><input type='checkbox' name='besturingssysteem[]' value='Windows millennium'>
Windows millennium</td>
<td><input type='checkbox' name='besturingssysteem[]' value='Linux'>
Linux</td>
</tr>
<tr>
<td><input type='checkbox' name='besturingssysteem[]' value='Windows XP'>
Windows XP</td>
<td><input type='checkbox' name='besturingssysteem[]' value='Unix'>
Unix</td>
</tr>
<tr>
<td><input type='checkbox' name='besturingssysteem[]' value='Windows 2000'>
Windows 2000</td>
<td><input type='checkbox' name='besturingssysteem[]' value='Windows NT'>
Windows NT</td>
</tr>
<tr>
<td colspan="2"><input type='checkbox' name='besturingssysteem[]' value='Anders...'>
Anders...</td>
</tr>
<tr>
<td colspan="2"><input type=text name='besturingssysteem_uitgerust' size=30></td>
</tr>
<tr>
<td colspan="2"><input type='submit' value='Verstuur' name='verstuur'></td>
</tr>


echter wat er nu gebeurt nadat de submit knop gedrukt is is dat ik array krijg te zien als waarde, hierover heb ik gezocht en nu blijkt de serialize functie uitkomst te bieden, deze heb ik alsvolgt ingeplant:


<tr>
<td><strong>Besturingssysteem:</strong> <em><?php echo serialize($_POST["besturingssysteem"]); ?></em> </td>
</tr>


echter zorgt dit dat ik als waarde
a:1:{i:0;s:12:"Windows 2000";}

nu is dit helaas niet de bedoeling maar dien ik gewoon Windows 2000 te krijgen. Ik heb diverse mensen over de count horen praten echter kom ik hier niet uit.
weet iemand hier raad mee?

[ Voor 25% gewijzigd door Verwijderd op 14-02-2005 22:52 ]


Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Is het echt niet mogelijk om radio fields te gebruiken? Want checkboxen zijn hier niet handig voor en ook niet voor bedoeld...

Verder nog een tip: plaats je php code tussen [ php ] en [/ php ] tags, dat maakt het een stuk makkelijker leesbaar.

[ Voor 35% gewijzigd door ludo op 14-02-2005 22:54 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

waarom zou je serialize willen gebruiken hiervoor :?
offtopic:
voor code kan je beter de [code=php] tag gebruiken ;)


gewoon een foreach zou genoeg moeten zijn:
PHP:
1
2
3
foreach($_POST['besturingssysteem'] AS $key=>$value){
  echo $value,"<br/>\n";
}
ludo schreef op maandag 14 februari 2005 @ 22:53:
Is het echt niet mogelijk om radio fields te gebruiken? Want checkboxen zijn hier niet handig voor en ook niet voor bedoeld...
ligt eraan waarvoor je ze wilt gebruiken, ik draai meerdere OS'en dus ik moet er dan ook meerdere kunnen selecteren ;)

Acties:
  • 0 Henk 'm!

  • Eegee
  • Registratie: Januari 2000
  • Nu online
basis PHP lijkt me... magoed, kijk eens bij foreach
Maar radio's lijken me ook logischer, tenzij je mensen met dualboot of vmware o.i.d. niet wilt vergeten ;)

edit: weer eens te laat...

[ Voor 8% gewijzigd door Eegee op 14-02-2005 22:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op maandag 14 februari 2005 @ 22:55:
waarom zou je serialize willen gebruiken hiervoor :?
offtopic:
voor code kan je beter de [code=php] tag gebruiken ;)


gewoon een foreach zou genoeg moeten zijn:
PHP:
1
2
3
foreach($_POST['besturingssysteem'] AS $key=>$value){
  echo $value,"<br/>\n";
}

[...]

ligt eraan waarvoor je ze wilt gebruiken, ik draai meerdere OS'en dus ik moet er dan ook meerdere kunnen selecteren ;)
super het werkt hiermee!!!

precies die reden die je noemt is waarom ik checkboxes moet gebruiken.

bedankt !!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nog 1 vraagie, ik moet deze hele meuk straks in een mysql smijten, hoe krijg ik die values allemaal achter elkaar in 1 var?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op maandag 14 februari 2005 @ 23:07:
nog 1 vraagie, ik moet deze hele meuk straks in een mysql smijten, hoe krijg ik die values allemaal achter elkaar in 1 var?
wat dacht je van de php manual te bekijken (www.php.net) dan kwam je erachter dat je met . strings aan elkaar kan "plakken" ;)
nogal basic PHP werk als je het mij vraagt...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op maandag 14 februari 2005 @ 23:18:
[...]

wat dacht je van de php manual te bekijken (www.php.net) dan kwam je erachter dat je met . strings aan elkaar kan "plakken" ;)
nogal basic PHP werk als je het mij vraagt...
thnx, klopt inderdaad.
Ben gewoon een newbie op php gebied zit alleen met een tijdsnood op dit stukje.

begin volgende week wel aan php + mysql voor dummies :P

Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
(jarig!)
Eigenlijk best basic, maar ik denk niet dat je simpel in die manual vind hoe je strings achter elkaar hangt (al heb ik dat zelf nooit geprobeerd te zoeken), maargoed dat kan dus met een .=

Volgens mij is dit wat je zoekt:
PHP:
1
$os = implode(", ", $_POST["besturingssysteem"]);


Van te voren kun je (lees: moet je) nog ff checken of er wel echt besturingssystemen zijn geselecteerd, anders krijg je een fout, maar dat mag je zelf opzoeken (array functions) :)

[ Voor 35% gewijzigd door SWINX op 14-02-2005 23:30 ]

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

Verwijderd

In 1 var? Aan elkaar plakken, met een scheidingsteken ertussen.
PHP:
1
2
3
4
5
6
7
$osList = "";
foreach($_POST['besturingssysteem'] AS $key=>$value) {
  if ($osList > "") {
    $osList .= "|";
  }
  $osList .= $value;
}

(syntax kan hier en daar niet kloppen, ik heb al een tijd niks meer in PHP gedaan)
Maar wanneer je je database echt netjes op wilt zetten, zul je een extra tabel in het leven moeten roepen. Iets in de trant van <UserId>, <Volgnummer>, <OS>.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

SWINX schreef op maandag 14 februari 2005 @ 23:28:
Eigenlijk best basic, maar ik denk niet dat je simpel in die manual vind hoe je strings achter elkaar hangt (al heb ik dat zelf nooit geprobeerd te zoeken), maargoed dat kan dus met een .=
http://nl3.php.net/manual/en/language.operators.string.php
Volgens mij is dit wat je zoekt:
PHP:
1
$os = implode(", ", $_POST["besturingssysteem"]);


Van te voren kun je (lees: moet je) nog ff checken of er wel echt besturingssystemen zijn geselecteerd, anders krijg je een fout, maar dat mag je zelf opzoeken (array functions) :)
implode is uiteraard mooier als je niet meer wilt doen met die informatie :)
Pagina: 1