Gå til innhold

[LØST] Lite problem med variabel og loop ?


Anbefalte innlegg

Videoannonse
Annonse

OK!

Jeg tar med alt fra begynnelsen.

 

Jeg har en form som postes til en ny fil:

 

index.php

<form name="form_nr" action="<?= $PHP_SELF ?>" method="post">
Antall: <input name="nr" type="text" size="4" value="<?= $nr; ?>" />
<input value="GO!" name="submit" type="submit" />
</form>
<br />
<br />
<form name="form_next" action="test.php" method="post">
<?php
for ($i = 1; $i <= $nr; $i++) {

 echo "
   <br><br><hr>
 Tekst $i: <input value=\"tekst_$i\" name=\"tekst$i\" type=\"text\" /><br>
 Valg $i: <select name=\"valg$i\">
 	<option>Valg01</option>
 	<option>Valg02</option>
 	<option>Valg03</option>
 	<option>Valg04</option>
 </select>
   ";
}

?>
<br>
<div align="right">
<input type="hidden" name="nr" value="<?= $nr; ?>"/>
<input name="Reset" type="reset" />
<input value="GO AGAIN!" name="submit" type="submit" />
</div>
</form>

 

 

test.php

<?php
echo "Det er gjort $nr valg";
for ($i = 1; $i <= $nr; $i++) {
 $tekst = $tekst . $i;
 $valg = $valg . $i;
 echo "<br><br><hr>
 Tekst $i: $tekst <br>
 Valg $i: $valg <br>
 ";
}

?>

 

Men dette blir helt feil for den poster bare tallene.

Endret av bazzo
Lenke til kommentar

EDIT: posten min var ment å være litt veiledende, men den ble bare et veldig stort rot. Håper du kan få nyte av noe av det som står her, men jeg tok ikke for meg hele koden ...

 

Bruk arrays ;)

 


$ny_variabel = array();

for ($i=0; $i< *$noe*; $i++) {
 $ny_variabel[$i] = $_POST['opt_1'];
}

 

Men ser at du ikke har hentet post dataene...

 

Når du har et element i en form, f.eks et tekstfelt så må du gi den et navn / id.

For å bruke dette i phpen, henter du verdien i dette feltet slik:

 

 $variabel = $_POST['navn_paa_felt'];

 

Eller om du bruker GET

 

$variabel =  $_GET['navn_paa_felt'];

 

 

Du vil da få en tilsvarende kode:

 

html

 

<form name="form_nr" action="<?= $PHP_SELF ?>" method="post">

Antall: <input name="nr" type="text" size="4" value="<?= $nr; ?>" />

<input value="GO!" name="submit" type="submit" />

</form>

<br />

<br />

<form name="form_next" action="test.php" method="post">

<?php

for ($i = 1; $i <= $nr; $i++) {

 

echo "

  <br><br><hr>

 

<?php

$tekst = array();

$tekst[0] = "noe_tekst";

$tekst[1] = "blabla";

$tekst[2] = "trallala";

$tekst[3] = "annat";

 

for ($i=0; $i<sizeof($tekst); $i++) {

  print "Tekst " . $i . ": <input value=\"" . $tekst . "\" name=\"tekst_" . $i . "\" type=\"textfield\" /><br>

}

 

$options = array();

 

$options[0] = "Valg00";

$options[0] = "Valg01";

$options[0] = "Valg02";

$options[0] = "Valg03";

 

print " Valg

<select name=\"valg\">";

 

for($i=0; $i<sizeof($options); $i++) {

  print "<option name=\"valg_" . $i . "\">" . $options[$i] . " </option>";

}

 

print " </select>";

 

}

 

?>

<br>

<div align="right">

<input type="hidden" name="nr" value="<?= $nr; ?>"/>

<input name="Reset" type="reset" />

<input value="GO AGAIN!" name="submit" type="submit" />

</div>

</form>

 

php

<?php
echo "Det er gjort $nr valg";
for ($i = 1; $i <= $nr; $i++) {
$tekst = $tekst . $i;
$valg = $valg . $i;
echo "<br><br><hr>
Tekst $i: $tekst <br>
Valg $i: $valg <br>
";
}

?>

Endret av robgar
Lenke til kommentar
Problemet er at "$tekst" skal telle selv...

 

eks.

$tekst1

$tekst2

$tekst3

$tekst4 osv...

 

For tekst feltene i index.php heter jo name="tekst1,2,3, osv.."

5342607[/snapback]

 

Dette kan du gjøre på denne måten;

 

$i = 0; // om den første heiter "tekst1", endre denne til 1
while (isset($_POST['tekst'.$i])) {
 ${'tekst'.$i} = $_POST['tekst'.$i];
 $i++;
}

 

Då får du eit sett variablar som heiter $tekst0, $tekst1, $tekst2, $tekst3.

 

Det smarte å gjere i dette tilfellet hadde jo vore å bruke eit array, der du setter name-egenskapen på alle tekstfelta i HTML-fila til "textarray[]". Då vil $_POST['textarray'] vere ein array, slik at du kan hente ut alle verdiane berre ved å sjå direkte i arrayen;

 

$textarray = $_POST['textarray'];
$tekst1 = $textarray[0]; // merk at den begynner på 0
$tekst2 = $textarray[1];
...

 

Dersom du må ha tekstfelta nummerert korrekt når du får dei frå tekstfila, kan du og gjere følgande i HTML-fila;

 

<input type="text" name="textarray[1]" /><br/>
<input type="text" name="textarray[2]" /><br/>
<input type="text" name="textarray[3]" /><br/>
<input type="text" name="textarray[4]" /><br/>

 

Då veit du at du alltid vil få ut teksten som vart skrive i den andre inputboksen ved å bruke $textarray[2], og du kan hoppe over nummer når du skriver HTML-koden.

 

Håper dette hjelper litt på. :)

Lenke til kommentar

Det smarte å gjere i dette tilfellet hadde jo vore å bruke eit array, der du setter name-egenskapen på alle tekstfelta i HTML-fila til "textarray[]". Då vil $_POST['textarray'] vere ein array, slik at du kan hente ut alle verdiane berre ved å sjå direkte i arrayen;

 

5342851[/snapback]

 

 

Takker array fungerte akkurat som jeg ønsket. :w00t:

Endret av bazzo
Lenke til kommentar

Selfølgelig!

 

Her er -= LINK! =-

 

 

index.php

<form name="form_nr" action="<?= $PHP_SELF ?>" method="post">
Antall: <input name="nr" type="text" size="4" value="<?= // $nr; ?>" />
<input value="GO!" name="submit" type="submit" />
</form>
<br />
<br />
<form name="form_go" action="test.php" method="post">
<?php
$antall = 20;

if ($nr <= $antall) {
 $i = 1;
while ($i <= $nr) {
echo "
   <br><br><hr>
 Tekst $i : <input value=\"tekst_$i\" name=\"textarray[$i]\" type=\"text\" /><br>
 Valg $i : <select name=\"valgarray[$i]\">
 	<option>Valg01</option>
 	<option>Valg02</option>
 	<option>Valg03</option>
 	<option>Valg04</option>
 </select>
 ";
$i++;
}
} else {
 echo "Den går ikkje, du kan ikkje ha flere enn $antall.";
}
?>
<br>
<div align="right">
<input type="hidden" name="nr" value="<?= $nr; ?>"/>
<input name="Reset" type="reset" />
<input value="GO AGAIN!" name="submitt" type="submit" />
</div>
</form>

 

test.php

<?php
if (isset($_POST["submitt"])) {

$textarray = $_POST['textarray'];
$valgarray = $_POST['valgarray'];

echo "<b>Det er gjort $nr valg</b><br><br>";

$i = 1;
while ($i <= $nr) {
 print "$tekst[$i]";
 echo "
 	<br><br><hr>
 Tekst $i: $textarray[$i] <br>
 Valg $i: $valgarray[$i] <br>
   ";
$i++;
}
} else {
echo "Sorry MAC!";
}

?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...