Is het mogelijk om variabelen die tijdens een while-instructie worden gevuld, zo op te slaan dat ze ook nog na afloop van de while instructie kunnen worden gebruikt?
Ik ken alleen maar de methode dat je rijen uit een tabel 1 voor 1 uitleest, dan die rijen bewerkt of juist negeert, en dan is het op naar de volgende rij totdat je while instructie de laatste rij heeft verwerkt. Een voorbeeldje is denk ik het duidelijkst:
Als je de waarde van prijs wilt opslaan in $prijs bij 50 artikelen met $sql= "SELECT prijs from artikel"; en de waarde van $prijs heeft consequenties, dan weet ik niet anders dan dat je alleen tijdens iedere while-lus, met de waarde van $prijs op dat moment, iets kan doen (zoals wel of niet afdrukken op scherm).
Maar is het niet mogelijk om tijdens een while instructie meerdere variabelen aan te maken (bijv. $prijs1, $prijs2 die je dan na afloop van de while instructie kunt blijven gebruiken? Of kun je tijdens de while lus ook een array maken waarin alle tabelwaarden van het veld prijs worden opgenomen (zoiets als $prijsarray= array("prijs1"=>'$prijs', etc).
Ik geef toe dat de meeste functies, zoals afdrukken op het scherm of per rij opslaan in een tabel, heel goed kunnen tijdens de while instructie. Maar ik kan mij ook voorstellen dat je eerst de waarden wilt verzamelen om daar later iets mee te doen.
@Bart: ja ik zie het: ziehier versie 2 (en niet gebumpt)
Is het mogelijk om variabelen die tijdens een while-instructie worden aangemaakt en gevuld, zo op te slaan dat ze ook nog na afloop van de while instructie kunnen worden gebruikt?
Ik ken alleen maar de methode dat je rijen uit een tabel 1 voor 1 uitleest, dan die rijen bewerkt of juist negeert, en dan is het op naar de volgende rij totdat je while instructie de laatste rij heeft verwerkt.
Een voorbeeldje is denk ik het duidelijkst:
1. Je wilt de waarde van prijs opslaan in '$prijs'
2. er zijn 50 artikelen
3 je gebruikt $sql= "SELECT prijs from artikel";
4. de waarde van $prijs heeft consequenties.
Ik weet niet anders dan dat je alleen tijdens iedere while-lus, met de waarde van $prijs op dat moment, iets kan doen (zoals wel of niet afdrukken op scherm).
Maar is het niet mogelijk om tijdens een while instructie meerdere variabelen aan te maken (bijv. $prijs1, $prijs2) die je dan na afloop van de while instructie kunt blijven gebruiken?
Of kun je tijdens de while lus ook een array maken waarin alle tabelwaarden van het veld prijs worden opgenomen (zoiets als $prijsarray= array("prijs1"=>'$prijs', etc).
Ik geef toe dat de meeste functies, zoals afdrukken op het scherm of per rij opslaan in een tabel, heel goed kunnen tijdens de while instructie. Maar ik kan mij ook voorstellen dat je eerst de waarden wilt verzamelen om daar later iets mee te doen.
@noppes: aha dat geeft hoop. Want dat betekent dus dat het wel kan, maar dat ik het nog niet gevonden heb. Ik heb wel gezocht, maar ik vond nergens een tutorial. Kreeg even het idee dat dit in php niet mogelijk was.
Wat ik heb geprobeerd is om tijdens een while lus iedere keer een andere variabele aan te maken (zoals $prijs1 bij de eerste maal, $prijs2 voor de tweede maal) maar dat lijkt een zinloze weg.
Ik zie zo geen andere zoekweg.
Iets als dit (ik bespaar me de moeite van de query etc).
Ik geef je 2 manieren. De bovenste is het simpelste en wellicht het beste (eval() kent weinig vrienden), maar ik denk dat het iets trager is al de laatste.
De functie (kan natuurlijk ook in een class) is dan wel weer makkelijker te gebruiken op andere plaatsen.
Ik heb het op deze manier nog nooit nodig gehad. Als het bijvoorbeeld gaat om tussentijdse totalen kun je net zo goed een tweede query uitvoeren als alles in een array stoppen.
@ jan:
Ik kwam er op vanwege een recente topic in de DATABASES & SQL rubriek. Daar wilde iemand een overzicht hebben van alle geboekte kamers (van een hotel) in een maand.
Dat vond ik wel spannend om eens uit te zoeken of een grafisch overzicht, via een html tabel, mogelijk was.
Ik kreeg het wel voor elkaar om per kamer de aankomstdag en vertrekdag uit de tabel te halen, en zo vervolgens een rij in de html-tabel te construeren. Alle cellen (<td>) die voor de aankomstdag liggen hebben geen kleur en geen inhoud, en vanaf de aankomstdag wordt de achtergrond grijs en wordt de inhoud 'X'. Het resultaat op scherm is dan een mooi overzichtje in tabelvorm.
Maar bij meerdere reserveringen per kamer maakt de oplossing binnen de while-instructie dat de rij met dagen verlengd wordt (mag niet) of dat 1 kamer per reservering een nieuwe html-tabelrij krijgt (mag ook niet).
Volgens mij kun je wel 1 html-tabelrij maken als je cel voor cel (per dag dus) kan nalopen of er een aankomst of vertrekdatum is.