[PHP] checkbox info opvragen uit array

Pagina: 1
Acties:
  • 67 views sinds 30-01-2008

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
* TERW_DAN zit weer met een probleempje.

Ik heb een scriptje geschreven dat een controle uitvoert op de beschikbaarheid van domeinen. Dat werkt verder allemaal en is redelijk failsafe voor zover ik vast kan stellen.
Nu wil ik echter hier een bestelform aan koppelen waarbij de gebruiker kan aangeven welke domeinen geregistreerd moeten worden. Dit wordt gedaan door middel van checkboxes.

Op het moment dat er dan op verstuur wordt gedrukt worden deze gegevens netjes in de array gezet (hij zegt welke checkboxes aan staan, dat is prima). Echter, het probleem is om de waarden hieruit te pikken.
Array ( [Arrayvalue=test-domein_nl] => on [Arrayvalue=test-domein_com] => on [Arrayvalue=test-domein_net] => on [Arrayvalue=test-domein_org] => on )
dit krijg ik terug als ik een print_r($_POST) in het script zet.

Mijn probleem nu alleen is dat ik het enkel voor elkaar gekregen heb om de on values mee te krijgen. Dus dat hij enkel on aangaf (en dan het aantal checkboxes dat aangevinkt stond).
Maar wat ik wil is dat hij juist de domeinnamen meegeeft.

ik heb geprobeerd om met een foreach te werken, maar dan krijg ik alleen de on values terug, en niet het domein (en dat is juist dat ik nodig heb om er verder wat mee te doen).

Iemand enig idee hoe ik dit kan oplossen.

PHP:
1
2
3
4
 {
                echo '<TR><TD>'; echo $domain; echo "</TD><TD> is vrij </TD><TD>
<input type=checkbox name="; echo $ext; echo "value="; echo $domain; echo">bestel</TD></TR>";        
            }


Dit is de manier waarop ik nu de checkboxes weergeef (dit statement wordt enkel uitgevoerd als er geen domein gevonden is).
Dit statement zit in een groter foreach statement gezien hij een domeinnaam gelijk met 5 TLDs checked, die in een voorafgesteld array worden gehaald (en dus voor iedere deze statement uit moet voeren). Vandaar dat het ook weer in een array terechtkomt.

[ Voor 5% gewijzigd door TERW_DAN op 26-05-2005 10:07 ]


  • WormLord
  • Registratie: September 2003
  • Laatst online: 01-12 13:49

WormLord

Devver

Je krijgt inderdaad alleen de waardes van de aangevinkte checkboxen terug. Voor de uitgevinkte boxen zul je dus zelf moeten bepalen welke dat zijn, net zoals je dat doet bij het initieel opbouwen van de pagina.

Verwijderd

Dat echo scriptje dat je daarboven hebt gepost gaat niet helemaal goed. De output van dit script zal iets in de trand zijn van:
HTML:
1
<input type=checkbox name=.comvalue=fiets>bestel

Zoals je ziet wordt de waarde van name (.com) vast geplakt aan value, en php kan daar dus geen onderscheid meer in maken. Tevens lijkt het me beter om naam="waarde" te gebruiken, dus met quotes. Dit is netter en beter, op deze manier kunnen b.v. ook spaties meegegeven worden.
Tevens vergeet je de input te sluiten </input>, dit zal ook probleempjes op kunnen leveren (licht aan hoe de browser er mee omgaat). :X |:(

Dit is denk ik wat je wilt?
HTML:
1
<input type="checkbox" name=".com" value="fiets" />bestel

PHP:
1
echo "<input type=\"checkbox\" name=\"$ext\" value=\"$domain\" />bestel\n";


Controleer eerst even of zulke dingetjes je het leven niet onnodig moeilijk maken bij je array?

[ Voor 24% gewijzigd door Verwijderd op 26-05-2005 11:57 ]


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
WormLord schreef op donderdag 26 mei 2005 @ 10:33:
Je krijgt inderdaad alleen de waardes van de aangevinkte checkboxen terug. Voor de uitgevinkte boxen zul je dus zelf moeten bepalen welke dat zijn, net zoals je dat doet bij het initieel opbouwen van de pagina.
Maar dat hoef ik ook helemaal niet te weten. De evt uitgevinkte boxen hoeven dus niet geregistreerd te worden. Het gaat erom dat ik de naam van de checkboxes mee kan pakken.

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
Verwijderd schreef op donderdag 26 mei 2005 @ 10:37:
Dat echo scriptje dat je daarboven hebt gepost gaat niet helemaal goed. De output van dit script zal iets in de trand zijn van:
HTML:
1
<input type=checkbox name=.comvalue=fiets>bestel

Zoals je ziet wordt de waarde van name (.com) vast geplakt aan value, en php kan daar dus geen onderscheid meer in maken. Tevens lijkt het me beter om naam="waarde" te gebruiken, dus met quotes. Dit is netter en beter, op deze manier kunnen b.v. ook spaties meegegeven worden.
Tevens vergeet je de input te sluiten </input>, dit zal ook probleempjes op kunnen leveren (licht aan hoe de browser er mee omgaat).

Dit is denk ik wat je wilt?
HTML:
1
<input type="checkbox" name=".com" value="fiets">bestel</input>

PHP:
1
echo "<input type=\"checkbox\" name=\"$ext\" value=\"$domain\">bestel</input>\n";


Controleer eerst even of zulke dingetjes je het leven niet onnodig moeilijk maken bij je array?
Als ik dit doe zit ik nog steeds met het probleem dat ik uit de array die ik krijg; Array ( [Arrayvalue=test-domein_nl] => on [Arrayvalue=test-domein_com] => on [Arrayvalue=test-domein_net] => on [Arrayvalue=test-domein_org] => on ) enkel de on values kan halen, de andere dus niet.
De meegestuurde waarden kloppen, denk oook niet dat ik daar iets aan hoef te veranderen.

En waarom moet je een input afsluiten? Dat heb ik nog nooit gedaan namelijk en echt nog nooit problemen hiermee gehad.

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 14:38

TheDane

1.618

Terw_Dan schreef op donderdag 26 mei 2005 @ 10:45:
[...]


Maar dat hoef ik ook helemaal niet te weten. De evt uitgevinkte boxen hoeven dus niet geregistreerd te worden. Het gaat erom dat ik de naam van de checkboxes mee kan pakken.
waarom dat dan?

En die worden dus niet verstuurd.
Je kunt per checkbox een hidden form veld erbij zetten met daarbij de naam van de checkbox

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 14:38

TheDane

1.618

Verwijderd schreef op donderdag 26 mei 2005 @ 10:37:
[..]
Tevens vergeet je de input te sluiten </input>, dit zal ook probleempjes op kunnen leveren (licht aan hoe de browser er mee omgaat).
:X
zie: http://www.handleidinghtml.nl/html/elementen/input.html
Beëindiging: verboden

  • wasco
  • Registratie: April 2003
  • Laatst online: 12-12 11:14

wasco

brightest crayon in the box

als ik je probleem goed snap zijn dit de elementen die je nodig hebt.
in je form:
code:
1
2
<input type="checkbox" name="test[var1]" value="on">Var 1
<input type="checkbox" name="test[var2]" value="on">Var 2


in je verwerking:
PHP:
1
2
3
4
5
foreach($_POST['test'] as $key => $value) {
 if($value == 'on') {
  // do iets met $key (waarde is var1 of var2)
 }
}

wasco [the brightest crayon in the box]


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
TheDane schreef op donderdag 26 mei 2005 @ 10:55:
[...]


waarom dat dan?

En die worden dus niet verstuurd.
Je kunt per checkbox een hidden form veld erbij zetten met daarbij de naam van de checkbox
Het idee erachter is dat je een aantal checkboxes hebt, die kun je aanvinken. Alleen van de aangevinkte items moet een bestelformulier gemaakt worden, dus de rest is niet van belang.

Ik kan gebruik maken van een hiddenfield, echter, hoe weet ik dan welke checkbox is aangevinkt en welke niet?

Alle info die ik nodig heb staat in de array, ,maar ik krijg die er met geen mogelijkheid uit.
Ok, zat ik wat dat betreft toch goed :P

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 14:38

TheDane

1.618

Terw_Dan schreef op donderdag 26 mei 2005 @ 11:19:
[...]


Het idee erachter is dat je een aantal checkboxes hebt, die kun je aanvinken. Alleen van de aangevinkte items moet een bestelformulier gemaakt worden, dus de rest is niet van belang.

Ik kan gebruik maken van een hiddenfield, echter, hoe weet ik dan welke checkbox is aangevinkt en welke niet?

Alle info die ik nodig heb staat in de array, ,maar ik krijg die er met geen mogelijkheid uit.
[...]


Ok, zat ik wat dat betreft toch goed :P
Als je toch alleen nodig hebt wat aangevinkt is, dan maakt toch niet uit wat er *niet* aangevinkt is?
Je weet wat er gepost wordt, dus wat de values van de checkboxen zijn die aangevinkt zijn. Dan heb je toch alles wat je nodig hebt?

Of begrijp ik 't verkeerd :?

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
TheDane schreef op donderdag 26 mei 2005 @ 11:22:
[...]


Als je toch alleen nodig hebt wat aangevinkt is, dan maakt toch niet uit wat er *niet* aangevinkt is?
Je weet wat er gepost wordt, dus wat de values van de checkboxen zijn die aangevinkt zijn. Dan heb je toch alles wat je nodig hebt?

Of begrijp ik 't verkeerd :?
Ik heb idd alles wat ik nodig heb.
Maar ik krijg het niet uit die array, daar geeft hij alleen 'on' aan en niet de domeinnaam (die hij dus achter arrayvalue plakt).

Verwijderd

:X |:( Stom, stom, stom, lol... had ik iets beter moeten opletten inderdaad.... Natuurlijk geldt uiteraard niet voor inputs, lol, en uiteraard wist ik dat (logish namelijk)... Niets gezegd.
Maar ik houd mijn eigen tags het liefst altijd duidelijk waar en wanneer ze eindigen. Dus ik hoop dat dit wel mag?
<input attributes />

Verwijderd

Met deze html:
code:
1
2
<input type="checkbox"  name="19" value="agenda_edit" />agenda_edit
<input type="checkbox"  name="18" value="agenda_lezen" />agenda_lezen

Krijg ik keurig deze $_POST:
PHP:
1
Array ( [19] => agenda_edit [18] => agenda_lezen )

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
Verwijderd schreef op donderdag 26 mei 2005 @ 11:55:
[...]

:X |:( Stom, stom, stom, lol... had ik iets beter moeten opletten inderdaad.... Natuurlijk geldt uiteraard niet voor inputs, lol, en uiteraard wist ik dat (logish namelijk)... Niets gezegd.
Maar ik houd mijn eigen tags het liefst altijd duidelijk waar en wanneer ze eindigen. Dus ik hoop dat dit wel mag?
<input attributes />
afaik mag dat wel gewoon, gezien het het einde is van de tag (net als bij <BR />)
Verwijderd schreef op donderdag 26 mei 2005 @ 12:00:
Met deze html:
code:
1
2
<input type="checkbox"  name="19" value="agenda_edit" />agenda_edit
<input type="checkbox"  name="18" value="agenda_lezen" />agenda_lezen

Krijg ik keurig deze $_POST:
PHP:
1
Array ( [19] => agenda_edit [18] => agenda_lezen )
Maar dan krijg ik het probleem dathij alleen het laatste item dat aangevinkt is in de array zet.

ik kan geen vaste waarden gebruiken, maar maak dus gebruik van variabele waarden.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:53

crisp

Devver

Pixelated

waarom niet zoiets?
HTML:
1
2
3
<input type="checkbox" name="test-domein" value="nl">
<input type="checkbox" name="test-domein" value="net">
<input type="checkbox" name="test-domein" value="com">

PHP:
1
2
3
4
5
6
7
if (!empty($_POST['test-domein']) && is_array($_POST['test-domein'])
{
  foreach ($_POST['test-domein'] as $domainsuffix)
  {
    echo $domainsuffix;
  }
}

Intentionally left blank


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11 15:46

OkkE

CSS influencer :+

crisp schreef op donderdag 26 mei 2005 @ 14:32:
waarom niet zoiets?
HTML:
1
2
3
<input type="checkbox" name="test-domein" value="nl">
<input type="checkbox" name="test-domein" value="net">
<input type="checkbox" name="test-domein" value="com">
Moeten de namen niet eindigen met rechte haken, om aan te geven dat het om een Array gaat? Dus zo:
code:
1
2
3
<input type="checkbox" name="test-domein[]" value="nl">
<input type="checkbox" name="test-domein[]" value="net">
<input type="checkbox" name="test-domein[]" value="com">

[ Voor 33% gewijzigd door OkkE op 26-05-2005 14:41 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:53

crisp

Devver

Pixelated

OkkE schreef op donderdag 26 mei 2005 @ 14:41:
[...]

Moeten de namen niet eindigen met rechte haken, om aan te geven dat het om een Array gaat? Dus zo:
code:
1
2
3
<input type="checkbox" name="test-domein[]" value="nl">
<input type="checkbox" name="test-domein[]" value="net">
<input type="checkbox" name="test-domein[]" value="com">
oh ja, voor PHP wel :)

Intentionally left blank


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
crisp schreef op donderdag 26 mei 2005 @ 14:32:
waarom niet zoiets?
HTML:
1
2
3
<input type="checkbox" name="test-domein" value="nl">
<input type="checkbox" name="test-domein" value="net">
<input type="checkbox" name="test-domein" value="com">

PHP:
1
2
3
4
5
6
7
if (!empty($_POST['test-domein']) && is_array($_POST['test-domein'])
{
  foreach ($_POST['test-domein'] as $domainsuffix)
  {
    echo $domainsuffix;
  }
}
Hier kan ik niets mee, omdat ik namelijk niet simpelweg kan zeggen $_POST['test-domein'] omdat testdomein van alles kan wezen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?

 print_r ($_POST);



foreach ($_POST as $domain)

    {

        echo $_domain;  

    }

?>

Dit stukje gebruik ik nu, maar het enige dat ik terugkrijg is de print_r($_POST);
Hij doet er verder dus niets mee. (foreach statement wordt dus overgeslagen).

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:53

crisp

Devver

Pixelated

Terw_Dan schreef op donderdag 26 mei 2005 @ 15:04:
[...]


Hier kan ik niets mee, omdat ik namelijk niet simpelweg kan zeggen $_POST['test-domein'] omdat testdomein van alles kan wezen.
Maar je kan wel dit doen:
PHP:
1
if (in_array('com', $_POST['test-domein'])) { }

;)

Intentionally left blank


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11 15:46

OkkE

CSS influencer :+

Volgens mij zat wasco er dan nog het dichtste bij. Je wilt alleen alle domein-namen weten die aangevinkt zijn, toch? Zoiets dan...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// even om te testen, normaal is dit $_POST
$arr = Array( 
        'test-domein_nl' => 'on', 
        'test-domein_com' => 'on', 
        'test-domein_net' => 'on', 
        'test-domein_org' => 'on' 
        );

foreach( $arr as $domein=>$value )
{
    print '- ' . $domein . "<br>\r\n";
}
?>

[ Voor 25% gewijzigd door OkkE op 26-05-2005 15:15 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:53

crisp

Devver

Pixelated

OkkE schreef op donderdag 26 mei 2005 @ 15:14:
Volgens mij zat wasco er dan nog het dichtste bij. Je wilt alleen alle domein-namen weten die aangevinkt zijn, toch? Zoiets dan...
[...]
Ja leuk, maar wat als je nog andere informatie in je POST hebt zitten die geen domein aanduiden?
Een dergelijke opzet is gewoonweg niet handig...

[ Voor 7% gewijzigd door crisp op 26-05-2005 15:18 ]

Intentionally left blank


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
crisp schreef op donderdag 26 mei 2005 @ 15:06:
[...]

Maar je kan wel dit doen:
PHP:
1
if (in_array('com', $_POST['test-domein'])) { }

;)
Maar dit snap ik even niet.
Als het domein nou geen test-domein heet dan werkt het niet meer (want je kunt in het eerste form zo'n beetje alles invullen qua naam dat je zou kunnen bedenken).

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11 15:46

OkkE

CSS influencer :+

crisp schreef op donderdag 26 mei 2005 @ 15:18:
[...]

Ja leuk, maar wat als je nog andere informatie in je POST hebt zitten die geen domein aanduiden?
Een dergelijke opzet is gewoonweg niet handig...
Klopt, de opzet zou ik ook anders doen.. Maar stel dat alleen dat in de POST zit, dan is dit een oplossing. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
OkkE schreef op donderdag 26 mei 2005 @ 15:14:
Volgens mij zat wasco er dan nog het dichtste bij. Je wilt alleen alle domein-namen weten die aangevinkt zijn, toch? Zoiets dan...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// even om te testen, normaal is dit $_POST
$arr = Array( 
        'test-domein_nl' => 'on', 
        'test-domein_com' => 'on', 
        'test-domein_net' => 'on', 
        'test-domein_org' => 'on' 
        );

foreach( $arr as $domein=>$value )
{
    print '- ' . $domein . "<br>\r\n";
}
?>
tja, maar ik krijg nu geen "on" meer te zien in de array. Hij geeft niets weer, misschien omdat ik $value ook nergens heb staan?

  • ecageman
  • Registratie: September 2001
  • Laatst online: 10-07 21:49
Je krijgt toch alleen de 'On' values terug, dus hoef je niet meer te controleren of hij on of off is. Of zie ik het verkeerd?

AMD Athlon 2800+, MSI K7N2Delta-L, 1024MB PC3200, SB Audigy2, XFX GF4MX440, BenQ DVD+-RW, NEC 1300A DVD+-RW, 2x WD 120GB 8mb, 2x Maxtor 250GB, Chenbro Gaming Bomb, Tagan 480W, 17" Iiyama monitor


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11 15:46

OkkE

CSS influencer :+

Euhmm.. Misschien dat dit is wat je bedoeld?? Anders zou ik het niet weten. De gehele code:

PHP:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>domein form</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Cache-Control" content="NO-CACHE">
</head>
<body>

<?php
// deze waarde komt uit een formulier op de vorige pagina
$domein = "tweakers"; // dit zou zijn: $_POST['domein_naam'];
?>

<p>Op de vorige pagina stond een <code>input</code> waar men de domein-naam in moest vullen, laten we zeggen dat daar "<?=$domein;?>" is ingevuld.</p>

<form method="post" action="form.php">
    <input type="checkbox" name="domein[]" value="<?=$domein;?>_nl"> NL<br>
    <input type="checkbox" name="domein[]" value="<?=$domein;?>_com"> COM<br>
    <input type="checkbox" name="domein[]" value="<?=$domein;?>_org"> ORG<br>
    <input type="checkbox" name="domein[]" value="<?=$domein;?>_net"> NET<br>
    <input type="submit" value="Check">
</form>

<?php
if( isSet( $_POST['domein'] ) )
{
    print '<hr>';
    print '<p>Hier een lijst met alle domein-namen die aangevinkt waren:</p>';
    print '<pre>';

    foreach( $_POST['domein']  as $key=>$value )
    {
        // print $key . ' = ' . $value . "\r\n";
        print $value . "\r\n";
    }

    #print '--------------------------' . "\r\n";
    #print_r( $_POST );
    print '</pre>';
}
?>

</body>
</html>

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
OkkE schreef op donderdag 26 mei 2005 @ 16:03:
Euhmm.. Misschien dat dit is wat je bedoeld?? Anders zou ik het niet weten. De gehele code:

PHP:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>domein form</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Cache-Control" content="NO-CACHE">
</head>
<body>

<?php
// deze waarde komt uit een formulier op de vorige pagina
$domein = "tweakers"; // dit zou zijn: $_POST['domein_naam'];
?>

<p>Op de vorige pagina stond een <code>input</code> waar men de domein-naam in moest vullen, laten we zeggen dat daar "<?=$domein;?>" is ingevuld.</p>

<form method="post" action="form.php">
    <input type="checkbox" name="domein[]" value="<?=$domein;?>_nl"> NL<br>
    <input type="checkbox" name="domein[]" value="<?=$domein;?>_com"> COM<br>
    <input type="checkbox" name="domein[]" value="<?=$domein;?>_org"> ORG<br>
    <input type="checkbox" name="domein[]" value="<?=$domein;?>_net"> NET<br>
    <input type="submit" value="Check">
</form>

<?php
if( isSet( $_POST['domein'] ) )
{
    print '<hr>';
    print '<p>Hier een lijst met alle domein-namen die aangevinkt waren:</p>';
    print '<pre>';

    foreach( $_POST['domein']  as $key=>$value )
    {
        // print $key . ' = ' . $value . "\r\n";
        print $value . "\r\n";
    }

    #print '--------------------------' . "\r\n";
    #print_r( $_POST );
    print '</pre>';
}
?>

</body>
</html>
Kijk, dat is nou precies wat ik nodig had, op deze manier krijg ik iig de gegevens uit de array, wat met die andere manier niet wilde lukken.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:53

crisp

Devver

Pixelated

Wat is er mis met het domein en de extenties zelf los van elkaar in het formulier te zetten?
Je moet je niet altijd blind staren op 1 enkele oplossing ;)

Intentionally left blank


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Topicstarter
crisp schreef op donderdag 26 mei 2005 @ 22:03:
Wat is er mis met het domein en de extenties zelf los van elkaar in het formulier te zetten?
Je moet je niet altijd blind staren op 1 enkele oplossing ;)
Omdat als hij enkel de domeinnamen zonder extentie doorgeeft je dus niet weet welke van de 5 mogelijkheden (die ik nu heb, mogelijk worden er dat nog meer) er dus aangevinkt zijn.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:53

crisp

Devver

Pixelated

Terw_Dan schreef op donderdag 26 mei 2005 @ 23:49:
[...]


Omdat als hij enkel de domeinnamen zonder extentie doorgeeft je dus niet weet welke van de 5 mogelijkheden (die ik nu heb, mogelijk worden er dat nog meer) er dus aangevinkt zijn.
Dat heb je dus wel zoals ik al eerder heb aangegeven. Neem bijvoorbeeld het volgende formulier:
HTML:
1
2
3
4
5
6
<form>
  <input type="text" name="domain">
  <input type="checkbox" name="extension[]" value="nl">.nl
  <input type="checkbox" name="extension[]" value="com">.com
  <input type="checkbox" name="extension[]" value="net">.net
</form>

En dan dit in php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (!empty($_POST['domain']))
{
  $domain = $_POST['domain'];
  if (!empty($_POST['extension']) && is_array($_POST['extension'])
  {
    foreach ($_POST['extension'] as $extension)
    {
      $fulldomain = $domain . '.' . $extension
      // doe iets met $fulldomain
    }
  }
  else
  {
    echo 'Geen extenties aangevinkt!';
  }
}
else
{
  echo 'Geen domein opgegeven!';
}

Dat is althans hoe ik het op zou lossen...

Intentionally left blank


Verwijderd

Hmm efffe snel gescanned, maar als ik het goed begrijp wil je een array opstellen die als form aanmaken, de gebruiker klikt 1 iets aan (in een list of whatever) en je wil eigenlijk dezelfde array terugkrijgen maar dan met de userdata erin.

Je kan de post array referencen, of met multidimensionale arrays werken, Ah zag al een paar leuke voorbeelden, als je nog iets nodig hebt vraag maar raak.

[ Voor 10% gewijzigd door Verwijderd op 27-05-2005 09:09 ]


Verwijderd

Een soort van bump maar niet echt, ik heb een soortgelijk probleem alleen krijg ik het niet aan de praat met de informatie uit dit topic.

Ik heb iets alsvolgt :
Uit mijn db trek ik een lijst met namen en deze gooi ik in een tabel, niet bijzonders maar ik heb dus ook een form over die tabel, met achter elke naam een check box --> <form><table><input>....<input submit></table></form> :
PHP:
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
29
30
31
32
33
34
35
                        echo "<form action=\"$PHP_SELF\" method=\"post\">";
                        echo "<TABLE BORDER=\"1\" bgcolor=\"blue\">";                  
                    while($i < $num)
                    {

                            //if(isset(mysql_result($result,$i,"type")))
                            //{
                                echo "<TR>\n";
                                echo "<TD>\n";
                              echo "<b>"; echo mysql_result($result,$i,"name"); echo "</b>";
                          $domain[$i]=mysql_result($result,$i,"name");
                              echo "</TD>";
                              echo "<TD>\n";
                        echo mysql_result($result,$i,"type");
                        echo "</TD>";
                         if($status=="free")
                            {echo "<TD bgcolor=\"green\">\n"; echo "<b>free</b>";}
                                 else{echo "<TD bgcolor=\"red\">\n"; echo "<b>reserved</b>";}
                                echo "</TD>\n";
                                 if($status=="free")
                                    {
                                        $dom=$domain[$i];
                                        echo "<TD><a href=\"www.blabla.com\">register</a></TD>\n";
                                        echo "<TD><input type=\"checkbox\" name=\"namechk[]\" value=\"$i\" />";
                                     }

                                echo "<TD>";
                                echo "</TR>\n";
                            //}
                            $i++;
                    }
                          

    echo "</TABLE>";
    echo "<select name=\"dnaction\"><option>register</option><option>add to wishlist(not yet available)</option></select><input type=\"submit\" value=\"go\"></form>";


Uit die namechk array wil ik de namen halen welke geregistreerd moeten worden :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 if(!empty($_POST['namechk']))
        {
            echo "test";
            if(count($namechk)>0)
            {
                $n=0;
                $bulkdn="";
                while($n<count($namechk))
                {
                        $t=$namechk[$n];
                        $dom=$domain[$t];
                        echo $dom;
                        $bulkdn=$bulkdn+" $dom.$extension"+"%20";
                       $n++;
                }
                    echo"<meta http-equiv = refresh content=0;url=\"http://www.blabla.com$bulkdn">";
         }else{echo "no names are checked";}
        }else echo "aaarrrgghh";


Het vreemde is nu dat hij direct "aaarrrgghh" print terwijl namechk nog helemaal niet gesubmit is.
Ben er ook niet zeker van of $bulkdn=$bulkdn+" $dom.$extension"+"%20"; werkt maar dat is een ander verhaal, daar kom ik wel achter.

Heb al meer voorwaarden geprobeerd maar dat maakt niet uit, het probleem zit ergens anders.

[ Voor 21% gewijzigd door Verwijderd op 05-12-2005 19:33 ]


Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
 if(!empty($_POST['namechk']))
        {
            echo "test";
            if(count($namechk)>0)
            {
                $n=0;
                $bulkdn="";
                while($n<count($namechk))
                {
                        $t=$namechk[$n];
                        $dom=$domain[$t];
                        echo $dom;
                        $bulkdn=$bulkdn+" $dom.$extension"+"%20";
                       $n++;
                }
                    echo"<meta http-equiv = refresh content=0;url=\"http://www.blabla.com$bulkdn">";
         }else{echo "no names are checked";}
        }elseif(!empty($_POST['namechk'])){echo "aaarrrgghh";}
?>


Stom foutje, maar nu knalt hij dus uit de overkoepelende if.

De form die over de tabel heenzit is trouwens de tweede form, kan dat problemen opleveren ?

[ Voor 27% gewijzigd door Verwijderd op 05-12-2005 22:59 ]


Verwijderd

Het is inmiddels dan al opgelost door de goede intenties en het voorbeeld van Okke maar als je het mij vraagt dan worden er alle bijna twee topicpagina's gevuld met allerlei suggesties en opmerkingen, terwijl TS alleen maar antwoord zoekt op de vraag hoe hij de waarden van zijn indexes (uit zijn array, zijn POST-array in dit geval) tevoorschijn kan toveren!

Kortom, een linkje naar de foreach functie uit de php-manual had toch voldoende moeten zijn? Maar goed, iedereen is al blij met het resultaat dus ik ga maar eens naar bed toe...

Verwijderd

Hij werkt nog steeds niet, als ik GET gebruik bij de laatste form krijg ik :
printout.php?namechk%5B0%5D=on&namechk%5B2%5D=on&namechk%5B4%5D=on&bulkreg=register

Hij komt niet door if($bulkreg=="register") terwijl "bulkreg=register" ??
Ook if(isset($bulkreg)) is te gek..

Er is toch niks mis met <form><table></table></form> ?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:47

Creepy

Tactical Espionage Splatterer

Je checkt op POST variabelen in je code en je vindt het gek dat het met een GET niet werkt? Of heb je soms problemen met register globals? Hoe vul je de $bulkreg variabele? Je geeft nogal erg weinig informatie en dat is misschien ook de reden dat je een oud topic kickt i.p.v. een eigen topic te openen?

Het gros van de problemen met POST en GET staan prima uitgelegd in de PHP faq: P&W FAQ - PHP

Mocht je er echt niet uitkomen dan mag je een nieuw topic openen mits je genoeg informatie geeft en P&W FAQ - De "quickstart" eens doorleest.

[ Voor 3% gewijzigd door Creepy op 06-12-2005 10:56 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.