IF-je
Ik ben bezig met een ifje maar heb geen idee hoe dit precies in zn werk gaat. Tot nu toe heb ik dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<body>
<?php
$a = $_POST["gewicht"];
$b = $_POST["prijs"];
if ($a = '100'){ $b * 10 en dan deze waarde in variable zetten}
elseif($a = '200'){ $b * 5 en dan deze waarde in variable zetten}
elseif($a = '500'){ $b * 2 en dan deze waarde in variable zetten}
elseif($a = '1000'){ $b * 1 en dan deze waarde in variable zetten}
?>
<select name="gewicht">
<option value="100">100 Gram </option>
<option value="200">200 Gram </option>
<option value="500">500 Gram </option>
<option value="1000">1 KG </option>
</select>
</body>
<?php
$a = $_POST["gewicht"];
$b = $_POST["prijs"];
if ($a = '100'){ $b * 10 en dan deze waarde in variable zetten}
elseif($a = '200'){ $b * 5 en dan deze waarde in variable zetten}
elseif($a = '500'){ $b * 2 en dan deze waarde in variable zetten}
elseif($a = '1000'){ $b * 1 en dan deze waarde in variable zetten}
?>
<select name="gewicht">
<option value="100">100 Gram </option>
<option value="200">200 Gram </option>
<option value="500">500 Gram </option>
<option value="1000">1 KG </option>
</select>
</body>
De bedoeling is dat de prijs wordt doorgerekend naar kiloprijzen. Dus als ik 100 gram invoer dat deze dan wordt doorgerekend naar een kilo en aan de hand daarvan dit in een variabele wordt opgeslagen zodat ik het in de database kan zetten.
Alvast bedankt!
Wanneer je 1 = gebruikt, geef je $a de waarde 100. En 100 hoor je niet tussen quotes te zetten, het is tenslotte geen string.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<body>
<?php
$a = $_POST["gewicht"];
$b = $_POST["prijs"];
$c = ($b * ($a / 100));
echo 'Totaal: '.$c;
?>
<select name="gewicht">
<option value="100">100 Gram </option>
<option value="200">200 Gram </option>
<option value="500">500 Gram </option>
<option value="1000">1 KG </option>
</select>
</body>
<?php
$a = $_POST["gewicht"];
$b = $_POST["prijs"];
$c = ($b * ($a / 100));
echo 'Totaal: '.$c;
?>
<select name="gewicht">
<option value="100">100 Gram </option>
<option value="200">200 Gram </option>
<option value="500">500 Gram </option>
<option value="1000">1 KG </option>
</select>
</body>
Dit zal niet naar behoren werken, maar in die trant zou je een rekensom kunnen maken die de IF'jes overbodig maakt.
Gewijzigd op 01/01/1970 01:00:00 door Jelle Posthuma
andersom
Dit klopt dan toch niet?
als ik bijv 1kg aanklik doet die 1000 / 100 is 10 en dan doet die dus 10 keer de prijs. Terwijl ik eigenlijk de prijs keer 10 wil bij 100 gram?
Edit:
Als ik het goed begrijp sla je de kilo prijzen op, dan kan het bijvoorbeeld ook zo, in jou code is het of 100 gram, of 200 gram, of 500 gram, maar wat nu als je 2*200 gram wil, dan kan je 2 keer de prijs van 200 gram berekenen en die bij elkaar optellen. Of zoals onderstaand dat het gewicht niet uitmaakt:
Als ik het goed begrijp sla je de kilo prijzen op, dan kan het bijvoorbeeld ook zo, in jou code is het of 100 gram, of 200 gram, of 500 gram, maar wat nu als je 2*200 gram wil, dan kan je 2 keer de prijs van 200 gram berekenen en die bij elkaar optellen. Of zoals onderstaand dat het gewicht niet uitmaakt:
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$gewicht = 50; // grammen
$prijs = 1.5;
$prijs_per_gram = ($prijs / $gewicht);
$kg_prijs = $prijs_per_gram * 1000;
echo $kg_prijs;
?>
$gewicht = 50; // grammen
$prijs = 1.5;
$prijs_per_gram = ($prijs / $gewicht);
$kg_prijs = $prijs_per_gram * 1000;
echo $kg_prijs;
?>
Nou het is eigenlijk zo dat ik producten uit de supermarkt de prijzen hiervan wil opslaan in een database. Hiervan wordt in de supermarkt meestal de prijs per gewicht gegeven 100 gram / 500 gram / kilo e.d. en nu wil ik dus dat er standaard het kilobedrag wordt berekend... Volgens mij ga je in jou voorbeeld meer uit van een webshop waar iemand iets kan bestellen.
Sterker nog, er is helemaal geen if meer nodig voor het bepalen van de kiloprijs.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
$a = $_POST["gewicht"];
$b = $_POST["prijs"];
if ($a == 100){
$uitkomst = $b * 10;
}
elseif ($a == 200){
$uitkomst = $b * 5;
}
elseif ($a == 500){
$uitkomst = $b * 2;
}
else if ($a == 1000){
$uitkomst = $b * 1;
}
echo "$uitkomst";
?>
<form id="formulier" method="POST" action="<?=$_SERVER['PHP_SELF']?>">
<select name="gewicht">
<option value="100">100 Gram </option>
<option value="200">200 Gram </option>
<option value="500">500 Gram </option>
<option value="1000">1 KG </option>
</select>
<input name="prijs" type="text" value="0,00" size="20" maxlength="5">
<input class="button" name="add" type="submit" id="add" value="Invoeren"></td>
</form>
$a = $_POST["gewicht"];
$b = $_POST["prijs"];
if ($a == 100){
$uitkomst = $b * 10;
}
elseif ($a == 200){
$uitkomst = $b * 5;
}
elseif ($a == 500){
$uitkomst = $b * 2;
}
else if ($a == 1000){
$uitkomst = $b * 1;
}
echo "$uitkomst";
?>
<form id="formulier" method="POST" action="<?=$_SERVER['PHP_SELF']?>">
<select name="gewicht">
<option value="100">100 Gram </option>
<option value="200">200 Gram </option>
<option value="500">500 Gram </option>
<option value="1000">1 KG </option>
</select>
<input name="prijs" type="text" value="0,00" size="20" maxlength="5">
<input class="button" name="add" type="submit" id="add" value="Invoeren"></td>
</form>
$prijs = 1.5;
Edit:
echo "$uitkomst"; is natuurlijk fout, een variabele zet je NOOIT tussen quotes.
echo $uitkomst;
echo "$uitkomst"; is natuurlijk fout, een variabele zet je NOOIT tussen quotes.
echo $uitkomst;
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Overigens moeten de quotes nog weg bij echo "$uitkomst".
Probeer eens wat te maken met het voorbeeld van Frank, ik denk dat je daar ook prima uit moet komen.
Is die komma niet omtoverbaar naar een punt? is voor de gebruiker denk ik wat eenvoudiger?
Quote:
@ Jelle:
Dit klopt dan toch niet?
als ik bijv 1kg aanklik doet die 1000 / 100 is 10 en dan doet die dus 10 keer de prijs. Terwijl ik eigenlijk de prijs keer 10 wil bij 100 gram?
Dit klopt dan toch niet?
als ik bijv 1kg aanklik doet die 1000 / 100 is 10 en dan doet die dus 10 keer de prijs. Terwijl ik eigenlijk de prijs keer 10 wil bij 100 gram?
Ik zei toch ook, iets in die trant.
Was maar een voorbeeld dat je het ook kan berekenen in plaats van allemaal IF,jes te plaatsen met losse berekeningen.
Ik had ff de tijd niet om een goeie berekening te maken.
Nu het probleem hij schrijft het niet weg in de database wat doe ik fout?
Code query:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$query3 = "INSERT INTO `prijzen` ( `id` , `stad` , `datum` , `productsoort` , `producttype` , `kiloprijs` , `herkomst` , `gebruiker` , `keten` , `vestiging` )
VALUES (NULL ,'$_POST[stad]', '$_POST[datum]', '$_POST[productnaam]', '$_POST[producttype]', '$kg_prijs', '$_POST[herkomst]', '$gebruiker', '$_POST[keten]', '$_POST[vestiging]')";
mysql_query($query3) or die('Error, de query is mislukt');
echo "<br><table><td class=\"tekst\">De informatie is opgeslagen in de database!</td><td class=\"tekst\">U kunt uw volgende product invoeren!</td></table>";
VALUES (NULL ,'$_POST[stad]', '$_POST[datum]', '$_POST[productnaam]', '$_POST[producttype]', '$kg_prijs', '$_POST[herkomst]', '$gebruiker', '$_POST[keten]', '$_POST[vestiging]')";
mysql_query($query3) or die('Error, de query is mislukt');
echo "<br><table><td class=\"tekst\">De informatie is opgeslagen in de database!</td><td class=\"tekst\">U kunt uw volgende product invoeren!</td></table>";
Code van de if:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$b = $_POST["prijs"];
$gewicht = $_POST["gewicht"];
$prijs = str_replace(",",".",$b);
$prijs_per_gram = ($prijs / $gewicht);
$kg_prijs = $prijs_per_gram * 1000;
echo $kg_prijs;
?>
<td colspan="2">
<input name="prijs" type="text" value="1" size="20" maxlength="5"></td>
<td colspan="2"><select name="gewicht">
<option value="100">100 Gram</option>
<option value="200">200 Gram</option>
<option value="500">500 Gram</option>
<option value="1000">1 KG</option>
</select>
$b = $_POST["prijs"];
$gewicht = $_POST["gewicht"];
$prijs = str_replace(",",".",$b);
$prijs_per_gram = ($prijs / $gewicht);
$kg_prijs = $prijs_per_gram * 1000;
echo $kg_prijs;
?>
<td colspan="2">
<input name="prijs" type="text" value="1" size="20" maxlength="5"></td>
<td colspan="2"><select name="gewicht">
<option value="100">100 Gram</option>
<option value="200">200 Gram</option>
<option value="500">500 Gram</option>
<option value="1000">1 KG</option>
</select>
@ Chrispijn
Ik heb hem gewijzigd.. maar zit nog steeds met hetzelfde probleem. Als ik de waarde echo krijg ik wel resultaat maar de variabele wordt niet in de database neergezet.
Gewijzigd op 01/01/1970 01:00:00 door chris
Waarom ga je nu toch weer met die if/elseif structuur aan de haal? Hierboven zijn allemaal goede oplossingen gegeven en je doet er niks mee!
Kuch! Backtics ` !!!!! Afschieten die rommel! Dit soort duivelse truuks van MySQL wil je echt niet in je queries hebben. Het is dé manier om bugs aan te maken.
Quote:
En waar voer je de query dan uit? En waarcontroleer jij of er wel geldige data in de query staat? En waar controleer jij of de query is gelukt?alleen dit plant die niet in de database!
Quote:
En waar voer je de query dan uit? En waarcontroleer jij of er wel geldige data in de query staat? En waar controleer jij of de query is gelukt?
Volgens mij: Non of the above...
En idd, ik erger me ook dood als ik die ` dingen zie.
Als ik dat zie in een script, weet ik gelijk al dat de programmeur vaak te lui is om een goeie Query in elkaar te vouwen.
Ik zeg niet dat deze poster dat is, misschien denkt ie dat dat zo hoort, maar ik snap ook niet waarom PHPMyAdmin dat zo exporteert...
Dan heb je nog van die achtelijke gladiolen die zeggen dat het dankzij backtics duidelijker is wat kolom- en tabelnamen zijn, maar ook zij kunnen blijkbaar niet uit de voeten met SQL. Hoe simpel wil je het hebben?
Zie het verschil in HOOFD- en kleine letters. HOOFD-letters gebruik je voor de SQL-syntax, kleine letters voor de tabel- en kolomnamen. Dit voorkomt direct problemen met *nix-servers, die zijn namelijk hoofdlettergevoelig. KolomNaam is dan wat anders dan kolomNaam of kolomnaam. Netjes over meerdere regels uitschrijven en een beetje inspringen doet eveneens wonderen.
In PHPMyAdmin kun je het gebruik van backtics uitzetten, je kunt dit eenvoudig selecteren. Of even hardcoded in de source van PMA zetten... ;)
Met die luiheid bedoel ik, ze kopieren ff een query vanuit PHPMyAdmin, dan door die query heen rotzooien met kopieren en plakken en waarden bewerken.
Je weet pas zeker dat je query efficienter is als je het zelf intypt, dan weet je ook gelijk wat je toevoegt.
Wat ik ook ERG vaak tegen kom, het gebruik van * (wildcard) terwijl ze bijvoorbeeld maar 2 of 3 waarden nodig hebben uit een database.
Laatst sprak ik iemand, die gebruikte ook altijd wildcards, en tot mijn schrik, om 1 waarde uit een tabel te halen met 25 kolommen die ieder gevuld zijn met +50 rijen.
Ik gebruik zelf ook altijd kleine letters voor kolomnamen / variables enz.
Quote:
In PHPMyAdmin kun je het gebruik van backtics uitzetten, je kunt dit eenvoudig selecteren. Of even hardcoded in de source van PMA zetten... ;)
Klopt, weet ik, maar standaard staat dit aan, en geen hond die de moeite neemt om OF het uit te zetten, OF de moeite neemt om die ` uit de query te verwijderen.
Gewijzigd op 01/01/1970 01:00:00 door Jelle Posthuma