Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Automatisch hogere variabele naam bij while loop

Annie
5 antwoorden
  • Ik ben bezig met een systeem, waarbij een aantal velden met gegevens moeten worden opgeslagen in een tabel.
    Deze textfields zijn onderverdeeld in tabel rijden. De rijen zijn identiek, en je kan zelf bepalen hoeveel rijen je wilt hebben, dmv een while loop.

    Dit werkt allemaal al, maar ik blijf hangen bij het gedeelte, dat de rijen moeten worden opgeslagen in een MySQL tabel. Je weet van te voren natuurlijk niet hoeveel rijen dit zijn, en dat maakt het lastig.

    Ik dacht dus dat dat simpelweg op te lossen is dmv nog een while loop, maar dat valt erg tegen… Hier is de uitleg:

    Een rij heeft de volgende textfields: num; x; description; cost;
    De while loop die de rijen genereert, nummert de textfields:
    Rij 1 - num1; x1; description1; cost1;
    Rij 2 - num2; x2; description2; cost2;
    Enzovoort.
    Wat ik dus probeer te doen is dan op de volgende pagina die deze gegevens moet verwerken, ieder veld aan een variabele toe te kennen, bijvoorbeeld:
    $num1 = $_POST['num1'];
    Maar aangezien je vooraf niet weet met hoeveel rijen je te maken hebt, kan dit natuurlijk niet… En zo gaat het ook niet werken:
    $num$i = $_POST['num$i']; $i++;

    Mijn vraag is dus (ik kom er echt niet uit… :( ) hoe ik dit dan wél op kan lossen…

    Hier is nog een plaatje van hoe het systeem eruit ziet, om het hele verhaal een beetje te kunnen plaatsen:

    [img:7689ceaafd]http://www.gamexellence.com/pos.jpg[/img:7689ceaafd]

    Alvast bedankt![/img]
  • is het niet heel simpel op te lossen ? door een hidden key mee te sturen met het aantal rijen dus in de zin van dit:

    [code:1:4753f63c5d]
    // eerst hier de code van de while lus: die alles uitspugt:

    //en dan aan het einde van de lus:


    $j ++;
    }
    // en dan verder:
    echo "<input type=\"hidden\" name=\"number_rows\" value=\"".$j."\" />";
    // en de de submit en zo
    [/code:1:4753f63c5d]

    en dan op de verwerkings pagina weer een lus, maar dan bijv. een for:
    [code:1:4753f63c5d]
    $max = $_POST['number_rows'] +1;

    for($i = 1; $i <= $max; $i++){
    // verwerking
    }[/code:1:4753f63c5d]
    gaat dat niet werken ?
  • Ik heb alleen nooit met een for loop gewerkt.. Zou je misschien iets meer uitleg over dat soort loops kunnen geven? Hoe zou ik dan de verwerking moeten doen bijvoorbeeld?
  • Variabele variabelenamen zijn wel mogelijk in PHP, maar persoonlijk vind ik dat over het algemeen ranzige oplossingen. Het werkt iig zo:

    [code:1:88335e004d]${'num'.$i} = $_POST['num$i'];[/code:1:88335e004d]

    Hiervoor zijn arrays meer geschikt:

    [code:1:88335e004d]$num[$i] = $_POST['num$i'];[/code:1:88335e004d]
  • Ik heb het inmiddels al opgelost, dmv nog een while loop.

    Dit klopt trouwens niet, Annie:
    $_POST['num$i'];
    Dat moet zo zijn:
    $_POST['num'.$i'];

    Ik heb het zo opgelost:
    //while loopje {
    $num = $_POST['num'.$i'];
    $i++;
    } //einde while loopje

    Bedankt!

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.