[PHP] variabele name radiobutton in form

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sabi
  • Registratie: Mei 2002
  • Laatst online: 08-01-2022
Ik heb in een formulier een aantal select radiobuttons zitten en het aantal is variabel. Dus de naam van de de radiobuttons zijn 0, 1, 2 3, etc. (afhankelijk van het aantal) het aantalaccounts geeft aan hoeveel het er zijn.

Het script gaat wel de while lus is, maar het gaat fout bij $account = $_POST['$i']; (regel 4) Als ik daar $account = $_POST['0'] invoer gaat het wel goed, maar als deze variabel is, dan gaat het fout. (Dit geld overgens ook voor $akkoord, dat is hetzelfde probleem)


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$i = 0;
while ( $i< $_POST['aantalaccounts'])
{
  $account = $_POST['$i'];
  $ok = "AKKOORD" . $i;
  $akkoord = $_POST['$ok'];
  if ($akkoord == 'YES')
    {
    echo "$account is goedgekeurd <BR>";
    }
  elseif ($akkoord == 'NO')
    {
     echo "$account is afgekeurd<BR>";
    }
  else
    {
     echo "met $account is niets gebeurd<BR>";
    }
  echo "$i<BR>";
  echo "$account <BR>";
  $i++;
}


Hoe kan ik $_POST['$i']; wel variabel werkend krijgen??

Acties:
  • 0 Henk 'm!

Verwijderd

Niet direct dé oplossing maar je kan ook ipv met die 1,2,3 te werken (wat ik lelijk vind) gebruik maken van:

HTML:
1
<input name=buttons[] ...>


Die [ ] zorgt ervoor dat die variabele als een array met een numerieke index kan benaderd worden in je actionpagina.

Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 15:14

ATS

Minder mooi, maar werkt ook: een woord voor je getal zetten. Dus niet een keuzerondje '1' noemen maar 'keuzerondje_1'.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • TRON
  • Registratie: September 2001
  • Laatst online: 16-09 13:13
De oplossing van Bonkie is vele malen beter.

Als je het nog op je eigen manier wilt doen, moet je eens proberen om $_POST[$i] te gebruiken?

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Acties:
  • 0 Henk 'm!

Verwijderd

TRON schreef op 29 oktober 2003 @ 11:09:
De oplossing van Bonkie is vele malen beter.

Als je het nog op je eigen manier wilt doen, moet je eens proberen om $_POST[$i] te gebruiken?
Inderdaad, het isgeen mooie oplossinf die je gebruikt, en de fout die je maakt zijn de aanhalingstekens om $i, dus geen $_POST['$i'], maar $_POST[$i]

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

De oplossing van Bonkie is lang niet in alle gevallen beter. Ten eerste heeft zijn attribuut geen " er omheen waardoor het geen geldige html is ;). En daarnaast kun je niet achterhalen voor welke radio button gekozen is.

Het probleem van de TS is dat hij '$i' gebruikt. In de manual is te lezen dat variabelen binnen ' niet worden ingevuld. Hij is dus telkens op zoek naar index $i ipv de waarde van $i. In dit geval is het zowiezo netter om de ' of " sowieso weg te laten, want er is helemaal geen reden om deze waarde eerst in een string te zetten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Sabi
  • Registratie: Mei 2002
  • Laatst online: 08-01-2022
Verwijderd schreef op 29 oktober 2003 @ 11:16:
[...]

Inderdaad, het isgeen mooie oplossinf die je gebruikt, en de fout die je maakt zijn de aanhalingstekens om $i, dus geen $_POST['$i'], maar $_POST[$i]
Jah idd, nu werkt het wel, mmm beetje stomme fout

TNX JimmyShelter

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Overigens is het ook niet geldig in PHP om een variabele te gebruiken die begint met een cijfer.
Variable names follow the same rules as other labels in PHP. A valid variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Ook Knor is aangestoken met het ligfietsvirus!

Pagina: 1