Goodmorning!

Ik ben bezig met een ifje maar heb geen idee hoe dit precies in zn werk gaat. Tot nu toe heb ik dit:

<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!
Dat je in Nederland leert rekenen met een komma, wil niet zeggen dat dit correct is... Gebruik een . (punt) en het probleem is opgelost.

$prijs = 1.5;

[edit]
echo "$uitkomst"; is natuurlijk fout, een variabele zet je NOOIT tussen quotes.

echo $uitkomst;
[/edit]
Een comma waarde schrijf je in PHP met een punt. 0,2 is geen getal en zal als 0 worden gebruikt. en 0 keer iets blijft ten allen tijde 0.

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?
@ 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?

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.
Ik weet niet of ik dit gelijk weer hier mag posten maar... Als ik de uitkomst van het ifje echo krijg ik wel gewoon het resultaat alleen dit plant die niet in de database!

Nu het probleem hij schrijft het niet weg in de database wat doe ik fout?
Code query:

$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>";


Code van de if:

<?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>



@ 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.
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!
$query3 = "INSERT INTO `prijzen` ( `id` , `stad` , `datum` , `productsoort` , `producttype` , `kiloprijs` , `herkomst` , `gebruiker` , `keten` , `vestiging` )


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.

alleen dit plant die niet in de database!
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?
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...
@Jelle: Het gebruik van backtick` heeft volgens mij niet zo veel met luiheid te maken (integendeel, kost meer tijd, vooral het debuggen), maar meer met een gebrek aan kennis. Je weet (of hoort te weten) dat SQL geen backtics gebruikt, je hoeft ze dan ook niet te gebruiken.

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?

SELECT
  kolomnaam
FROM
  tabelnaam
WHERE
  id IN(1,2,3);

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... ;)
@pgFrank,

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.

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.

Reageren