[PHP] Variabel naam veranderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Ik heb een while lus gemaakt die uit een form iformatie uit velden moet halen, deze velden zijn hetzeflde genaamd maar eindigen elke keer op een oplopend nummer, dus prod1, prod2, prod3, enz. De gegevens moeten alleen maar gelezen worden als er informatie in het prod veld staat, alleen dan wordt het naam veld uitgelezen. Total is het totaal aantal Prod velden.

De While ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$i = 1;
    while ($i != $Total) 
        { 
        if ($prod.$i != "")
            {
            echo $prod.$i;
            $inhoud .= $prod.$i." keer ".$naam.$i." \n";
            $i=$i+1;
            }
        else
            {
            $i=$i+1;
            }
        }


Als ik gewoon $Prod1 opgeef als variabele dan kan ik alles uitlezen , alleen ik wil dus die 1 via de $i verkrijgen en dan achter de $prod plakken..

Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

1/ je doet niets met $total?
2/ leg nu duidelijk stapgewijs es uit wat je wil doen

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
D2k schreef op 11 juni 2003 @ 14:46:
1/ je doet niets met $total?
2/ leg nu duidelijk stapgewijs es uit wat je wil doen
1-> Als je goed kijkt zie je dat de loop stopt als $i gelijk is aan $Total, Total is al gevuld met een waarde die de hoeveelheid velden aangeeft.

2-> Ik dacht dat ik het redelijk duidelijk beschreven had al.
maar nog een keer dan: Mijn form heeft meerdere velden met dezeflde naam alleen eindigen deze velde elke keer op een ander nummer
DUS: Prod1, Prod2, Prod3, Prod4, Prod5. Als ik op verzenden klik dan wordt het bestand Order.php geopend en daar staat dit script in.

Als ik een veld uit mijn form wil uitlezen dan moet ik een variabele opgeven, ik kan dus opgeven $Prod1 en als ik dit echo dan komt er op het scherm te staan de inhoud van dat veld.
MAAR aangezien ik niet 850 (zoveel velden komen er) keer wil gaan echo-en en wil checken of de velden leeg zijn wil ik dus met een while loop dit op lossen door de variabele $Prod1 te genereren..
DIT wil ik op de volgende manier doen: $Prod en daarachter wil ik dan $i plakken (het nummer dat in de variabele i staat) zodat de velden één voor één ingelezen worden.

Acties:
  • 0 Henk 'm!

  • DRaakje
  • Registratie: Februari 2000
  • Niet online
ik zou zeggen inderdaad doe dit met een array. Volg de link van Niels eens

Acties:
  • 0 Henk 'm!

  • Kresh
  • Registratie: Mei 2000
  • Laatst online: 04-09 22:23
Dit kan volgens mij door middel van ${prod$i}

MAAR, dat wil je eigenlijk niet aangezien het een beetje vies is.
Kijk eens of je er niet voor kan zorgen dat de informatie in een array binnenkomt zoals Nielsz al aangeeft: waarschijnlijk kun je door een kleine aanpassing van je form (prod1, prod2, etc veranderen in prod[]) ervoor zorgen dat het als een array $prod binnenkomt. Hier kun je dan mooi met een foreach of iets dergelijks doorheen wandelen

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

$var = "prod1"
en dan $$var moet lukken.

Best vies idd, maar wel mogelijk.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

DUS: Prod1, Prod2, Prod3, Prod4, Prod5. Als ik op verzenden klik dan wordt het bestand Order.php geopend en daar staat dit script in.
Dan krijg je ze dus al binnen in een array, namelijk: $_POST[]

Wat is er dan makkelijker dan daar even doorheen te lopen :?

code:
1
2
3
4
5
foreach ($_POST as $key => $value) {
   if (substr ($key, 0, 4) == "Prod") {
      $prod_id = (int) substr($key, 4, strlen($key));
   }
}


oid..niet echt super oplossing, maar zou prima moeten werken ;)

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

In my humble opinion de beste oplossing:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?

if (isset($_POST))
{
    foreach ($_POST["prog"] as $key => $value)
    {
        $prod[$key] = $value;
    }
}

print_r($prod);
?>

<form method="post" action="splut.php">
<input type="checkbox" name="prog[]" value="1">prog
<input type="checkbox" name="prog[]" value="2">prog
<input type="submit">
</form>

Dus arrays en een simpele foreach. :)

Sundown Circus


Acties:
  • 0 Henk 'm!

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Ik heb het uiteindelijk toch op de lelijke manier gedaan door middel van:

${"prod{$i}"}

Toch bedankt voor de hulp :)

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

En veel succes met het 'leren' van PHP ;)

Acties:
  • 0 Henk 'm!

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
thx :) ben ook nog maar eergisteren begonnen.

Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Owh, dan zou ik als ik jou was juist arrays gaan gebruiken. Het schiet natuurlijk niet op waneer je al vanaf dag 3 ranzige code schrijft. (Ja, er is vershil tussen beginners code en ranzige code!)

Vooral de code van RedRose is erg netjes. Wil je nog steeds de controle houden over hoe de verschillende elementen genummert worden dan kun je altijd nog een nummer opnemen ( prod[1] ipv prod[] )

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

Pagina: 1