php if else
-
filius - Lid geworden op: 20 mar 2009, 17:13
Ik heb een formulier met volgende velden:
$tafel $water $frisdrank $bier,
die ik in php script heb gezet.De bedoeling is, als ik een van de velden bv water niet invul dan zou ik hetvolgende moeten krijgen(wat dus mis gaat).
bv.:Rekening tafel 2
................. (Hier mag niets ingevuld komen, in dit geval water)
1x frisdrank
2xbier
Totaal=
De telling werkt.Hieronder de code die ik heb gemaakt.
<?php
if(isset($_POST['verzenden'])){
if(isset($_POST['tafel'])&& $_POST['tafel']!= '' && isset ($_POST['water'])){
$tafel=$_POST['tafel'];
$water=$_POST['water'];
$frisdrank=$_POST['frisdrank'];
$bier=$_POST['bier'];
$prijs = array('water'=> 1.40,'frisdrank'=> 2,'bier'=>6.5);
$tot_water=$water*$prijs['water'];
$tot_frisdrank=$frisdrank*$prijs['frisdrank'];
$tot_bier=$bier*$prijs['bier'];
$totaal=$tot_water+$tot_frisdrank+$tot_bier;
echo"------------------------------<br>
Rekening tafel $tafel<br>
<br>";
echo"------------------------------<br>";
echo"$water x water(" . $prijs['water'] . ")= $tot_water <br>";
echo"$frisdrank x frisdrank(" . $prijs['frisdrank'] . ")=$tot_frisdrank <br>";
echo"$bier x bier(" . $prijs['bier'] . ")=$tot_bier <br>";
echo"------------------------------<br>";
echo"Totaal= $totaal";
}
De html code:
<form id="form1" name="form1" method="post" action="terras_verwerking.php">
<table width="500" cellspacing="5" cellpadding="5">
<tr>
<td colspan="2"><div align="center">Formulier</div></td>
</tr>
<tr>
<td width="202"><div align="center">Tafel</div></td>
<td width="261"><div align="center">
<label>
<select name="tafel" id="tafel">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
</select>
</label>
</div></td>
</tr>
<tr>
<td><label>
<input type="text" name="water" id="water" />
</label></td>
<td><div align="center">water</div></td>
</tr>
<tr>
<td><label>
<input type="text" name="frisdrank" id="frisdrank" />
</label></td>
<td><div align="center">frisdrank</div></td>
</tr>
<tr>
<td><label>
<input type="text" name="bier" id="bier" />
</label></td>
<td><div align="center">bier</div></td>
</tr>
<tr>
<td><div align="center">
<label>
<input type="submit" name="verzenden" id="verzenden" value="Verzenden" />
</label>
</div></td>
<td><div align="center">
<label>
<input type="reset" name="wissen" id="wissen" value="wissen" />
</label>
</div></td>
</tr>
</table>
</form>
Dus u moet hetvolgende verkrijgen:
De lege velden(niet ingevulde) mogen niet getoond worden.Kan dit met de if-else functie.Als men het veld water niet invult zou ik hetvolgende moeten verkrijgen.
Rekening tafel 2 of 1
----------------------
1x frisdrank(1.4 €) = 1.4
5x bier (1.3€) = 6.5
----------------------
Totaal= 7.9€
Graag de code
$tafel $water $frisdrank $bier,
die ik in php script heb gezet.De bedoeling is, als ik een van de velden bv water niet invul dan zou ik hetvolgende moeten krijgen(wat dus mis gaat).
bv.:Rekening tafel 2
................. (Hier mag niets ingevuld komen, in dit geval water)
1x frisdrank
2xbier
Totaal=
De telling werkt.Hieronder de code die ik heb gemaakt.
<?php
if(isset($_POST['verzenden'])){
if(isset($_POST['tafel'])&& $_POST['tafel']!= '' && isset ($_POST['water'])){
$tafel=$_POST['tafel'];
$water=$_POST['water'];
$frisdrank=$_POST['frisdrank'];
$bier=$_POST['bier'];
$prijs = array('water'=> 1.40,'frisdrank'=> 2,'bier'=>6.5);
$tot_water=$water*$prijs['water'];
$tot_frisdrank=$frisdrank*$prijs['frisdrank'];
$tot_bier=$bier*$prijs['bier'];
$totaal=$tot_water+$tot_frisdrank+$tot_bier;
echo"------------------------------<br>
Rekening tafel $tafel<br>
<br>";
echo"------------------------------<br>";
echo"$water x water(" . $prijs['water'] . ")= $tot_water <br>";
echo"$frisdrank x frisdrank(" . $prijs['frisdrank'] . ")=$tot_frisdrank <br>";
echo"$bier x bier(" . $prijs['bier'] . ")=$tot_bier <br>";
echo"------------------------------<br>";
echo"Totaal= $totaal";
}
De html code:
<form id="form1" name="form1" method="post" action="terras_verwerking.php">
<table width="500" cellspacing="5" cellpadding="5">
<tr>
<td colspan="2"><div align="center">Formulier</div></td>
</tr>
<tr>
<td width="202"><div align="center">Tafel</div></td>
<td width="261"><div align="center">
<label>
<select name="tafel" id="tafel">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
</select>
</label>
</div></td>
</tr>
<tr>
<td><label>
<input type="text" name="water" id="water" />
</label></td>
<td><div align="center">water</div></td>
</tr>
<tr>
<td><label>
<input type="text" name="frisdrank" id="frisdrank" />
</label></td>
<td><div align="center">frisdrank</div></td>
</tr>
<tr>
<td><label>
<input type="text" name="bier" id="bier" />
</label></td>
<td><div align="center">bier</div></td>
</tr>
<tr>
<td><div align="center">
<label>
<input type="submit" name="verzenden" id="verzenden" value="Verzenden" />
</label>
</div></td>
<td><div align="center">
<label>
<input type="reset" name="wissen" id="wissen" value="wissen" />
</label>
</div></td>
</tr>
</table>
</form>
Dus u moet hetvolgende verkrijgen:
De lege velden(niet ingevulde) mogen niet getoond worden.Kan dit met de if-else functie.Als men het veld water niet invult zou ik hetvolgende moeten verkrijgen.
Rekening tafel 2 of 1
----------------------
1x frisdrank(1.4 €) = 1.4
5x bier (1.3€) = 6.5
----------------------
Totaal= 7.9€
Graag de code
-
coderunner - Lid geworden op: 27 mar 2006, 04:35
- Locatie: Aubauke - Aentwaerepe
Beste filius
Zoek in het php gedeelte naar
en vervang dit door
Graag een reaktie (zie onderschrift).
mvg,
Coderunner
Zoek in het php gedeelte naar
Code: Selecteer alles
echo"------------------------------<br>
Rekening tafel $tafel<br>
<br>";
echo"------------------------------<br>";
echo"$water x water(" . $prijs['water'] . ")= $tot_water <br>";
echo"$frisdrank x frisdrank(" . $prijs['frisdrank'] . ")=$tot_frisdrank <br>";
echo"$bier x bier(" . $prijs['bier'] . ")=$tot_bier <br>";
echo"------------------------------<br>"; Code: Selecteer alles
echo"------------------------------<br>
Rekening tafel $tafel<br>
<br>";
echo"------------------------------<br>";
if ($water == "")
echo "";
else
echo"$water x water(" . $prijs['water'] . ")= $tot_water <br>";
if ($frisdrank == "")
echo "";
else
echo"$frisdrank x frisdrank(" . $prijs['frisdrank'] . ")=$tot_frisdrank <br>";
if ($bier == "")
echo "";
else
echo"$bier x bier(" . $prijs['bier'] . ")=$tot_bier <br>";
echo"------------------------------<br>"; mvg,
Coderunner
Bedank de perso(o)n(en) die je volledig op vrijwillige basis een antwoord geeft(geven) en/of beantwoord ten minste een reaktie op jouw vraag. Zo weten andere gebruikers EN de moderator dat je "probleem" al dan niet is opgelost. Alvast bedankt.
-
ultddave - Lid geworden op: 11 mei 2009, 13:59
- Locatie: Limburg > Genk
Beste,
Niets uitprinten bij een if-else is ook niet echt nuttig.
Dan kan je beter gewoon met een if test werken, zonder de else.;
Het is trouwens sneller om single quotes ipv double quotes te gebruiken bij strings die geen variabele bevatten.
Bijvoorbeeld;
echo "------------------------------<br>"; [/code]
Is trager dan:
echo '------------------------------<br>'; [/code]
Dat komt doordat hij bij double quotes opzoek gaat naar mogelijk te vervangen variabelen.
PS: Je moet ook opletten dat je kijkt of de variabelen $_POST['frisdrank'] en $_POST['bier'] geset zijn (via isset() ). Want momenteel gebeurd dat enkel bij tafel en water.
Dit zou bijvoorbeeld handig zijn:
$frisdrank = (isset($_POST['frisdrank'])) ? $_POST['frisdrank'] : '';
Dat zorgt ervoor dat $frisdrank de waarde van $_POST['frisdrank'] krijgt als deze bestaat. Indien niet krijgt $frisdrank de waarde ''. (Lege string dus)
(Voor de geinteresseerde; Dat is dus eigenlijk de korte vorm van een if-else test. Die in sommige gevallen meer leesbaar oogt.)
PS: Je moet ook nog kijken of de waardes van
$_POST['frisdrank']
$_POST['tafel']
$_POST['bier']
$_POST['water']
Wel degelijke een numerieke waarde hebben. Want de gebruiker kan even goed de tekst "hallo" ingeven.
En dan gaat het script foute resultaten geven. 
(Indien nodig wil ik de code wel geven)
Want zoals men altijd zegt. Gebruikersinput mag je nooit vertrouwen.
Mvg,
Dave
Niets uitprinten bij een if-else is ook niet echt nuttig.
Code: Selecteer alles
echo "------------------------------<br>
Rekening tafel $tafel<br>
<br>";
echo '------------------------------<br>';
if ($water != '')
echo "$water x water(" . $prijs['water'] . ")= $tot_water <br>";
if ($frisdrank != '')
echo"$frisdrank x frisdrank(" . $prijs['frisdrank'] . ")=$tot_frisdrank <br>";
if ($bier != "")
echo"$bier x bier(" . $prijs['bier'] . ")=$tot_bier <br>";
echo '------------------------------<br>'; Bijvoorbeeld;
echo "------------------------------<br>"; [/code]
Is trager dan:
echo '------------------------------<br>'; [/code]
Dat komt doordat hij bij double quotes opzoek gaat naar mogelijk te vervangen variabelen.
PS: Je moet ook opletten dat je kijkt of de variabelen $_POST['frisdrank'] en $_POST['bier'] geset zijn (via isset() ). Want momenteel gebeurd dat enkel bij tafel en water.
Dit zou bijvoorbeeld handig zijn:
$frisdrank = (isset($_POST['frisdrank'])) ? $_POST['frisdrank'] : '';
Dat zorgt ervoor dat $frisdrank de waarde van $_POST['frisdrank'] krijgt als deze bestaat. Indien niet krijgt $frisdrank de waarde ''. (Lege string dus)
(Voor de geinteresseerde; Dat is dus eigenlijk de korte vorm van een if-else test. Die in sommige gevallen meer leesbaar oogt.)
PS: Je moet ook nog kijken of de waardes van
$_POST['frisdrank']
$_POST['tafel']
$_POST['bier']
$_POST['water']
Wel degelijke een numerieke waarde hebben. Want de gebruiker kan even goed de tekst "hallo" ingeven.
(Indien nodig wil ik de code wel geven)
Want zoals men altijd zegt. Gebruikersinput mag je nooit vertrouwen.
Mvg,
Dave
.NET en Java Programmeur
-
filius - Lid geworden op: 20 mar 2009, 17:13
Ik heb uitgeprobeerd de code van Coderunner en die van ultddave, maar steeds krijg ik dezelfde uitkomst.Als ik geen water bv invul, mag dit ook niet verschijnen op bv rekening tafel 2, gelijk hieronder.Ik zal er de code bijdoen (verbeterd)
In dit geval mag er (x water(1.4)=0) niet tussen staan.
------------------------------
Rekening tafel 2
------------------------------
x water(1.4)= 0
2 x frisdrank(2)=4
2 x bier(6.5)=13
------------------------------
Totaal= 17
<?php
if(isset($_POST['verzenden']) && $_SERVER["REQUEST_METHOD"] == "POST"){
if(isset($_POST['tafel'])&& $_POST['tafel']!= '' && isset($_POST['water'])){
$frisdrank = (isset($_POST['frisdrank'])) ? $_POST['frisdrank'] : '';
$water = (isset($_POST['water'])) ? $_POST['water'] : '';
$bier = (isset($_POST['bier'])) ? $_POST['bier'] : '';
$tafel = $_POST['tafel'];
$water = $_POST['water'];
$frisdrank = $_POST['frisdrank'];
$bier = $_POST['bier'];
$prijs = array('water'=> 1.40,'frisdrank'=> 2,'bier'=>6.5);
$tot_water = $water * $prijs['water'];
$tot_frisdrank = $frisdrank * $prijs['frisdrank'];
$tot_bier = $bier * $prijs['bier'];
$totaal = $tot_water + $tot_frisdrank + $tot_bier;
echo"------------------------------<br>
Rekening tafel $tafel<br>
<br>";
echo"------------------------------<br>";
if($water!='')
echo"$water x water(" . $prijs['water'] . ") = $tot_water <br>";
if($frisdrank!='')
echo"$frisdrank x frisdrank(" . $prijs['frisdrank'] . ") = $tot_frisdrank <br>";
if($bier!='')
echo"$bier x bier(" . $prijs['bier'] . ") = $tot_bier <br>";
}
echo"------------------------------<br>";
echo"Totaal = $totaal";
}
}
?>
Sorry als ik het niet goed begrijp.
In dit geval mag er (x water(1.4)=0) niet tussen staan.
------------------------------
Rekening tafel 2
------------------------------
x water(1.4)= 0
2 x frisdrank(2)=4
2 x bier(6.5)=13
------------------------------
Totaal= 17
<?php
if(isset($_POST['verzenden']) && $_SERVER["REQUEST_METHOD"] == "POST"){
if(isset($_POST['tafel'])&& $_POST['tafel']!= '' && isset($_POST['water'])){
$frisdrank = (isset($_POST['frisdrank'])) ? $_POST['frisdrank'] : '';
$water = (isset($_POST['water'])) ? $_POST['water'] : '';
$bier = (isset($_POST['bier'])) ? $_POST['bier'] : '';
$tafel = $_POST['tafel'];
$water = $_POST['water'];
$frisdrank = $_POST['frisdrank'];
$bier = $_POST['bier'];
$prijs = array('water'=> 1.40,'frisdrank'=> 2,'bier'=>6.5);
$tot_water = $water * $prijs['water'];
$tot_frisdrank = $frisdrank * $prijs['frisdrank'];
$tot_bier = $bier * $prijs['bier'];
$totaal = $tot_water + $tot_frisdrank + $tot_bier;
echo"------------------------------<br>
Rekening tafel $tafel<br>
<br>";
echo"------------------------------<br>";
if($water!='')
echo"$water x water(" . $prijs['water'] . ") = $tot_water <br>";
if($frisdrank!='')
echo"$frisdrank x frisdrank(" . $prijs['frisdrank'] . ") = $tot_frisdrank <br>";
if($bier!='')
echo"$bier x bier(" . $prijs['bier'] . ") = $tot_bier <br>";
}
echo"------------------------------<br>";
echo"Totaal = $totaal";
}
}
?>
Sorry als ik het niet goed begrijp.
-
ultddave - Lid geworden op: 11 mei 2009, 13:59
- Locatie: Limburg > Genk
Ah inderdaad. Dat komt doordat je eerst mijn methode toepast, en een paar regels later toch nogaltijd die $water = $_POST['water']; had staan. 
Idem bij de andere dranken.
Ik heb de hele code herschreven;
Ik heb ook direct de code erin gezet die kijkt of de ingegeven waardes wel degelijk getallen zijn. Indien men bijvoorbeeld "a" ingeeft bij "bier". Dan krijgt $bier de waarde "0" en komt dus niet voor in de rekening. Mits aanpassingen kan je ook zorgen dat het script een foutmelding toont ipv de standaard waarde "0" te gebruiken.
In principe zou je nog verder kunnen gaan en ook zorgen dat de variabelen met de totale prijs van elke drank enkel berekent worden als ze effectief gedronken worden. In dit geval berekent hij die zoiezo maar toont hij ze gewoon niet. Maar dat maakt echt bijna niets uit op vlak van snelheid in dit geval.
Deze laat ik persoonlijk altijd weg;
Nu in dit geval maakt dat niet veel uit als je weet dat de $_POST['verzenden'] bestaat, maar ik heb de code er toch maar ingelaten.
Mvg,
Dave
Idem bij de andere dranken.
Ik heb de hele code herschreven;
Code: Selecteer alles
<?php
if(isset($_POST['verzenden']) && $_SERVER["REQUEST_METHOD"] == "POST")
{
if(isset($_POST['tafel']))
{
# Initialisatie variabelen
$tafel = $_POST['tafel'];
$frisdrank = (isset($_POST['frisdrank']) && is_numeric($_POST['frisdrank'])) ? (int)$_POST['frisdrank'] : 0;
$water = (isset($_POST['water']) && is_numeric($_POST['water'])) ? (int)$_POST['water'] : 0;
$bier = (isset($_POST['bier']) && is_numeric($_POST['bier'])) ? (int)$_POST['bier'] : 0;
$prijs = array('water' => 1.40, 'frisdrank' => 2, 'bier' => 6.5);
# Bereken totale prijs voor elke drank
$tot_water = ($water) ? ($water * $prijs['water']) : 0;
$tot_frisdrank = ($frisdrank) ? ($frisdrank * $prijs['frisdrank']) : 0;
$tot_bier = ($bier) ? ($bier * $prijs['bier']) : 0;
# Bereken totale prijs van alles tesamen
$totaal = $tot_water + $tot_frisdrank + $tot_bier;
# Print rekening
# Header
echo '------------------------------<br/>';
echo 'Rekening tafel: '.$tafel.'<br/><br/>';
echo '------------------------------<br/>';
# Body
if($water)
echo ''.$water.' x water('.$prijs['water'].') = '.$tot_water.'<br/>';
if($frisdrank)
echo ''.$frisdrank.' x frisdrank('.$prijs['frisdrank'].') = '.$tot_frisdrank.'<br/>';
if($bier)
echo ''.$bier.' x bier('.$prijs['bier'].') = '.$tot_bier.'<br/>';
# Footer
echo '------------------------------<br/>';
echo 'Totaal = '.$totaal;
}
else
{
echo 'Fout: Er werd geen tafel aangegeven';
}
}
else
{
echo 'Fout: Er valt niets te berekenen!';
}
?>In principe zou je nog verder kunnen gaan en ook zorgen dat de variabelen met de totale prijs van elke drank enkel berekent worden als ze effectief gedronken worden. In dit geval berekent hij die zoiezo maar toont hij ze gewoon niet. Maar dat maakt echt bijna niets uit op vlak van snelheid in dit geval.
Deze laat ik persoonlijk altijd weg;
Omdat hij eigenlijk niet veel meerwaarde heeft en enkel dient om te kijken of de gebruiker op de knop heeft geduwd. Maar dat is niet echt een zekerheid dat aangeeft dat de gebruikers effectief via die pagina zijn gekomen. (Klinkt niet echt logisch, maar hoe dat in zijn werk gaat, uitleggen, zal volgens mij redelijk ingewikkeld overkomen. Dat heeft te maken met het HTTP/1.0 protocol dat je kan gebruiken om servers aan te spreken.)if(isset($_POST['verzenden']) && $_SERVER["REQUEST_METHOD"] == "POST")
Nu in dit geval maakt dat niet veel uit als je weet dat de $_POST['verzenden'] bestaat, maar ik heb de code er toch maar ingelaten.
Mvg,
Dave
.NET en Java Programmeur
-
filius - Lid geworden op: 20 mar 2009, 17:13
Ik werk met DW cs3
Spijtig maar de regel water staat er nog steeds tussen(zie voorbeeld onder).Mag er niet tussen staan omdat ik niets heb ingevuld in dit vak. ook niet (x water(1.4)=0 )In deze regel mag niets staan
------------------------------
Rekening tafel 2
------------------------------
x water(1.4)= 0
1 x frisdrank(2)=2
1 x bier(6.5)=6.5
------------------------------
Totaal= 8.5
Code van unddave is gekopieerd en in de pagina geplakt.Ook eerder deze van coderunner,deze was hetzelfde resultaat.
Spijtig maar de regel water staat er nog steeds tussen(zie voorbeeld onder).Mag er niet tussen staan omdat ik niets heb ingevuld in dit vak. ook niet (x water(1.4)=0 )In deze regel mag niets staan
------------------------------
Rekening tafel 2
------------------------------
x water(1.4)= 0
1 x frisdrank(2)=2
1 x bier(6.5)=6.5
------------------------------
Totaal= 8.5
Code van unddave is gekopieerd en in de pagina geplakt.Ook eerder deze van coderunner,deze was hetzelfde resultaat.
-
coderunner - Lid geworden op: 27 mar 2006, 04:35
- Locatie: Aubauke - Aentwaerepe
Beste filius,
Dan heb je bij het kopiëren een fout gemaakt want alle hierboven geposte codes werken wel degelijk!
Zie mijn code in werking hier met ook de gebruikte code.
Zie ultddave's code in werking hier met ook de gebruikte code.
mvg,
Coderunner
Dan heb je bij het kopiëren een fout gemaakt want alle hierboven geposte codes werken wel degelijk!
Zie mijn code in werking hier met ook de gebruikte code.
Zie ultddave's code in werking hier met ook de gebruikte code.
mvg,
Coderunner
Bedank de perso(o)n(en) die je volledig op vrijwillige basis een antwoord geeft(geven) en/of beantwoord ten minste een reaktie op jouw vraag. Zo weten andere gebruikers EN de moderator dat je "probleem" al dan niet is opgelost. Alvast bedankt.
-
coderunner - Lid geworden op: 27 mar 2006, 04:35
- Locatie: Aubauke - Aentwaerepe
Beste filius,
Bedankt om dit te laten weten.
mvg,
Coderunner
@moderator: probleem opgelost!
Bedankt om dit te laten weten.
mvg,
Coderunner
@moderator: probleem opgelost!
Bedank de perso(o)n(en) die je volledig op vrijwillige basis een antwoord geeft(geven) en/of beantwoord ten minste een reaktie op jouw vraag. Zo weten andere gebruikers EN de moderator dat je "probleem" al dan niet is opgelost. Alvast bedankt.