Avatar billede iziqio Nybegynder
14. maj 2005 - 19:25 Der er 33 kommentarer og
1 løsning

Variable navn?

Jeg har et lille problem.
jeg skal hente X antal variable fra en php side.
Hvordan gør jeg det ?
--------------------------------------
$antal = 1;
While($antal <= $antalvar )
{
$radiobuttonX = $_REQUEST["navnX"];
$antal++;
}
--------------------------------------

Har kigget her, men kan ikke lure det.
http://eksperten.dk/spm/83697
Avatar billede cpfrande Nybegynder
14. maj 2005 - 20:53 #1
f.eks. i din formular har du flere radio-knapper. Deres "name" skal være f.eks. radio[]

Så hedder de:
<input type="radio" name="radio[]" value="1">
<input type="radio" name="radio[]" value="2">
<input type="radio" name="radio[]" value="3">
<input type="radio" name="radio[]" value="4">
<input type="radio" name="radio[]" value="5">


I dit php-script kan du så hente det ved:
<?php
for ($i = 0; $i < count($_POST['radio']); $i++)
{
  echo $_POST['radio']['$i'];
}
?>

:-)
Avatar billede nielle Nybegynder
15. maj 2005 - 08:24 #2
cpfrande> Siden at du nu har valgt at give dem navnet "radio[]" så er det vel også det du burde henvise til senere:

<?php
for ($i = 0; $i < count($_POST['radio[]']); $i++)
{
  echo $_POST['radio[]']['$i'];
}
?>
Avatar billede nielle Nybegynder
15. maj 2005 - 08:53 #3
Nu har jeg jo ikke set din html-form, og derfor kan jeg ikke sige mere generelt hvad du skal gøre. Men - givet din skitserede php-kode - kunne den f.eks. se sådan her ud:

<form action="dosomething.php" action="post">
<input type="radio" name="navn1">
<input type="radio" name="navn2">
<input type="radio" name="navn3">
<input type="radio" name="navn4">
<input type="radio" name="navn5">
<input type="hidden" name="antalvar" value="5">
<input type="submit">
</form>

I dette tilfælde kunne du få dem samlet i et array, hvilket klart er det nemmeste til senere:

<?php
$antalvar = $_POST["antalvar"];
for ($antal=1; $antal<=$antalvar; $antal++)
{
    $navn = "radio" . $antal;
    $radiobuttonX[$antal] = $_POST[$navn];
}
?>

Alternativt kan du benytte metoden som er skitseret i http://eksperten.dk/spm/83697:

<?php
$antalvar = $_POST["antalvar"];
for ($antal=1; $antal<=$antalvar; $antal++)
{
    $navn = "radio" . $antal;
    $varnavn = $radiobutton . $antal;
    $$varnavn = $_POST[$navn];
}
?>

- men det er vist at overdrive lidt i denne her sammenhæng. ;^)
Avatar billede iziqio Nybegynder
15. maj 2005 - 10:21 #4
Det har ikke helt løst mit problem!

Jeg skal have lavet X antal variabler på side2 (Den som modtager antallet i en variabel)
side1:
Antal intastest

side2:
$antal = $_REQUEST["antal"]; (Antallet hentes fra side1)
// der lavet X-antal forms.

side3:
$antal = $_REQUEST["antal"]; (Antallet hentes fra før)

for ($i = 0; $i < $antal; $i++)
{
  //Lav lige så mange variabler som antallet angiver og hent værdien fra sidste side.
  $var.$antal = $_REQUEST[$var.$antal];
}
Avatar billede iziqio Nybegynder
15. maj 2005 - 10:22 #5
Jeg skal have lavet X antal variabler på side3 (Den som modtager antallet i en variabel)
Avatar billede cpfrande Nybegynder
15. maj 2005 - 10:31 #6
nielle: Nej, når du sætter [] efter navnet laves det til et array. Dette array gennemløber jeg med min for-sætning i PHP-delen.

Det virker med afkrydsningsfelter - skulle også gerne virke med radio-felter.

izigio: Har du prøvet min udgave?
Avatar billede nielle Nybegynder
15. maj 2005 - 11:08 #7
Hvad mener du?

> side2:
> $antal = $_REQUEST["antal"]; (Antallet hentes fra side1)
> // der lavet X-antal forms.

Da du kun får variabler fra een form med til side 3, så giver dette vist ikke mening.
Avatar billede iziqio Nybegynder
15. maj 2005 - 11:13 #8
variablen fra side 2 skal angive hvor mange variabler der dannes på side 3.
Det er angivelsen på side 3 der er problemet.f.eks.
$antal = 3;
for ($i = 0; $i < $antal; $i++)
{
$variabel[i] = $_REQUEST[$variabel[i]];
}
// der laves nu et array med størrelsen 3. De henter hver deres form, fra side 2.
Avatar billede nielle Nybegynder
15. maj 2005 - 11:22 #9
Du kan kun få overført en eneste form fra side 2.
Avatar billede nielle Nybegynder
15. maj 2005 - 11:26 #10
cpfrande> Nej, der er ingen speciel grund til at tro at ting som virker for checkbokse automatisk virker for radiobuttons. Husk på at man kun kan kave en af sine radiobuttons nedtrykket af gangen. En samling radiobuttons med samme name er derfor at opfatte som værende een variabel - ikke et array af variable.
Avatar billede cpfrande Nybegynder
15. maj 2005 - 11:37 #11
Et andet problem, der dog vil opstå ved radios er, at du ikke kan give dem samme navn (og derved ikke samle dem i et array, som jeg ville have gjort).

Har du overvejet at benytte et afkrydsningsfelt i stedet?
Der er muligheden nemlig.
Avatar billede cpfrande Nybegynder
15. maj 2005 - 11:38 #12
hmm, jeg er langsom til at poste :| havde åbenbart ikke fået refreshed min side.

Men nielle: Ganske vidst er det ligegyldigt, da det ikke hjælper at skrive radio[] i så fald.

Jeg havde lige "glemt" det med name, men det sker jo.
Avatar billede nielle Nybegynder
15. maj 2005 - 11:43 #13
=== side1.php ===

<form action="side2.php" method="post">
<input type="text" name="antal">
<input type="submit">
</form>


=== side2.php ===

<?php
$antal = $_POST["antal"]
?>
<form action="side3.php" method="post">
<input type=hidden" name="antal" value="<?php echo $antal ?>">
<?php
for ($i=1, $i<=$antal; $i++)
{
?>
<input type="radio" name="radio<?php echo $i ?>">
<?php
}
?>
</form>


=== side3.php ===

<?php
$antal = $_POST["antal"];
for ($i=1; $i<=$antal; $i++)
{
    $navn = "radio" . $i;
    $radiobuttonX[$i] = $_POST[$i];
}
?>
Avatar billede iziqio Nybegynder
15. maj 2005 - 11:47 #14
hvad er forskellen på:
$_REQUEST["antal"];
og
$_POST["antal"];
???
Avatar billede iziqio Nybegynder
15. maj 2005 - 11:55 #15
Hvad gør:
$navn = "radio" . $i;
- Den linie vil jeg meget gerne forstå.
Avatar billede iziqio Nybegynder
15. maj 2005 - 11:56 #16
Side 1 og 2 er bygget op præcis som du har skrevet kl. 11:43:03
Avatar billede iziqio Nybegynder
15. maj 2005 - 13:49 #17
jeg vil lige prøve at gøre mit spørgsmål mere simpelt. Det er måske lidt forkert defineret.
Side 1: (En alm. Form)
Her intastes antal biler. (f.eks 2)
Side 2: (Ny Form der er lavet ud fra det antal der kommer fra side 1)
Her indtastes hvor mange modeller der er. (F.eks 2 volvo og 3 ford)
side 3: (Endnu en ny form med de mulighederne)
Her indtastes hvad bilerne koster. (Dvs. de 5 biler)
Avatar billede iziqio Nybegynder
15. maj 2005 - 13:52 #18
Problemet er at jeg skal tælle hvormange modeller der er til hver slags bil.
Avatar billede nielle Nybegynder
15. maj 2005 - 21:17 #19
15/05-2005 11:47:53> En HTML-form kan sendes på to forskellige måder: som POST og som GET. $_POST[...] er skabt til POST-metoden og der er en tilsvarende $_GET[...] til, ja gæt selv.

$_REQUEST slåer funktionaliteten af disse to sammen til én fælles og $_REQUEST["antal"] giver derfor det samme som $_POST["antal"]. Min mening om $_REQUEST[...] er at det er en genvej for de hjemmeside udviklere som er for dovne til ikke at give bekymre sig om de har brugt POST- eller GET-metoden i deres form. Brugen tyder på manglende disciplin.
Avatar billede nielle Nybegynder
15. maj 2005 - 21:21 #20
15/05-2005 11:55:54> $i er jo en variabel som løber fra 1, 2, 3 og til $antal. Undervejs er værdien af $navn:

$navn = "radio" . $i;

- derfor lig med:

radio1
radio2
radio3

- og til sidst "radio" sammensat med den værdi som er i $antal.
Avatar billede nielle Nybegynder
15. maj 2005 - 21:22 #21
Værdien i $navn er derfor med andre ord lig med navnet på den _variabel_ som skal indeholde værdien af om den enkelte radiobutton er sat eller ej (værdien "on" eller tom).
Avatar billede nielle Nybegynder
15. maj 2005 - 22:03 #22
=== side1.php ===

<form action="side2.php" method="post">
<input type="text" name="AntalBilTyper">
<input type="submit">
</form>


=== side2.php ===

<?php $AntalBilTyper = $_POST["AntalBilTyper"]; ?>
<form action="side3.php" method="post">
<input type="hidden" name="AntalBilTyper" value="<?php echo $AntalBilTyper; ?>">
<?php
for ($BilTypeNr=1; $BilTypeNr<=$AntalBilTyper; $BilTypeNr++)
{
?>
<input type="text" name="AntalBilerAfType<?php echo $BilTypeNr; ?>">
<?php
}
?>
<input type="submit">
</form>


=== side3.php ===

<?php $AntalBilTyper = $_POST["AntalBilTyper"]; ?>
<form action="side4.php" method="post">
<input type="hidden" name="AntalBilTyper" value="<?php echo $AntalBilTyper; ?>">
<?php
for ($BilTypeNr=1; $BilTypeNr<=$AntalBilTyper; $BilTypeNr++)
{
    $Name = "AntalBilerAfType" . $BilTypeNr;
    $Value = $_POST[$Navn];
?>
<input type="hidden" name="<?php echo $Name; ?>" value="<?php echo $Value ?>">
<b>Bil type: <?php echo $BilTypeNr; ?></b><br>
<?php
   
    for ($BilNr=1; $BilNr<=$Value; $BilNr++)
    {
?>
Bil nr. <?php echo $BilNr?> koster: <input type="text" name="BilType<?php echo $BilTypeNr; ?>Pris<?php echo $BilNr; ?>"><br>
<?php
    }
?>
<?php
}
?>
<input type="submit">
</form>

===

Med tallene fra dit eksempel, skulle html-koden for side3.php se sådan her ud:

<form action="side4.php" method="post">
<input type="hidden" name="AntalBilTyper" value="2">
<input type="hidden" name="AntalBilerAfType1" value="2">
<b>Bil type: 1</b><br>
Bil nr. 1 koster: <input type="text" name="BilType1Pris1"><br>
Bil nr. 2 koster: <input type="text" name="BilType1Pris2"><br>
<input type="hidden" name="AntalBilerAfType2" value="3">
<b>Bil type: 2</b><br>
Bil nr. 1 koster: <input type="text" name="BilType2Pris1"><br>
Bil nr. 2 koster: <input type="text" name="BilType2Pris2"><br>
Bil nr. 3 koster: <input type="text" name="BilType2Pris3"><br>
<input type="submit">
</form>
Avatar billede nielle Nybegynder
19. maj 2005 - 19:09 #23
Hvad med lidt response her?
Avatar billede iziqio Nybegynder
22. maj 2005 - 21:50 #24
kæmper med det ... skal nok skrive når jeg har fået det til at virke. Mit problem er:
$Name = "AntalBilerAfType" . $BilTypeNr;

Hvis du skal skynde dig videre skal jeg nok give dig point så du ikke spilder tiden på dette spg.
Smid et svar så ¨får du point. DU / i har højst sansynligt svaret tilstrækkeligt på min spg.
Tak til jer begge.
Avatar billede nielle Nybegynder
22. maj 2005 - 22:35 #25
iziqio> Jeg har ikke noget behov for at skynde mig videre - jeg planlægger at blive til at du har fået løst dit spørgsmål. Imidlertid har jeg/vi brugt tid på at hjælpe og derfor er det vel også kun fair af dig at give noget tilbagemelding for, dels at lade os vide at du ikke har glemt spørgsmålet igen og dels for at give os noget input til hvor du er strandet for at vi så kan hjælpe dig.

Du skriver at du har et problem med

$Name = "AntalBilerAfType" . $BilTypeNr;

Kunne du ikke være lidt mere specifik mht. hvad dit problem er? Hvis det er forståelsen det glipper med – hvilket jeg sagtens kan forstå eftersom det er en kende langhårdet det her – så har jeg givet en forklaring i 15/05-2005 21:21:08.
Avatar billede iziqio Nybegynder
01. juni 2005 - 15:20 #26
jeg har fået løst problemet nu. Jeres løsninger virkede efter lidt tilpasning. (Kan desværre ikke smide koden her, for det er arbejds relateret )
Det var variabel navnet der skulle benytte en array og et tekst og en variabel til at virke.
Mange tak for hjælpen - i er bare kanon.
Avatar billede iziqio Nybegynder
01. juni 2005 - 15:20 #27
PS: Husk lige og smide et svar begge to.
Avatar billede nielle Nybegynder
01. juni 2005 - 17:40 #28
Svar :^)
Avatar billede nielle Nybegynder
24. juni 2005 - 19:24 #29
cpfrande> Vi venter vist på at du lægger et svar :^)
Avatar billede nielle Nybegynder
09. juli 2005 - 10:59 #30
?
Avatar billede nielle Nybegynder
12. august 2005 - 12:19 #31
Lukketid?
Avatar billede iziqio Nybegynder
12. august 2005 - 13:31 #32
tak for hjælpen.
Avatar billede cpfrande Nybegynder
12. august 2005 - 13:49 #33
Ahh, jeg troede det var en anden, der skulle ligge svar! :P Sorry, hehe
Avatar billede nielle Nybegynder
12. august 2005 - 13:56 #34
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester