Ik ben vast gelopen in mijn scriptje. Ik wil als Naam2(Komt uit tabel Eten) niet bestaat in tabel Voorraad dat hij een nieuw gegeven toevoegt. Als deze al bestaat moet hij die updaten. Nu zit ik bij het nieuw maken etc een fout. Hij geeft 1 geen variabelen weer en 2 hij zit er niks in. Kunnen jullie mij helpen?
We nemen hier een join van 2 tabellen, we gaan alle waarden uit de tabel Eten halen waar de naam gelijk ik aan de opgegeven naam in de form.
Als er in de tabel voorraden data is zal het veld 'aantal' opgevuld zijn, als dit niet zo is zal hier een NULL waarde inzitten, hier kunnen we dus op af testen.
$query = "SELECT * FROM Eten left outer join Voorraad on (Eten.naam=Voorraad.naam) where Eten.naam='".$_POST['naam']."'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
if(isEmpty($row['aantal'])) { // er zit geen waarde in de Voorraad tabel
// zet hier wat er moet gebeuren als een gegeven in de tabel Eten niet voorkomt in de tabel Voorraad
}
}
$query="SELECT * FROM Eten left outer join Voorraad on (Eten.naam=Voorraad.naam) where Eten.naam='".$_POST['naam']."'";
isEmpty? En hoe kun je er zomaar zonder meer van uit gaan dat het veld 'aantal' NULL kan zijn? Persoonlijk zou ik namelijk voor een lege voorraad niet kiezen voor NULL maar gewoon een waarde van 0, NULL is hier helemaal niet voor bedoeld.
EDIT: Bovendien zou ik kiezen voor een join op unieke id's, niet op de naam (er van uitgaande dat die unieke id's wel aanwezig zijn in de tabel).
unieke id's zijn niet aanwezig voor zover ik kan zien.
en de sql query geeft iniedergeval NULL weer, je kan dit natuurlijk gaan omkeren met ISNULL maar denk niet dat dit hier nodig is.
Een voorraad 0 gaat als ik het goed begrijp niet voorkomen in de tabel vorraden, het 'gerecht' zal er dan niet instaan, en anders heb'k het verkeerd begrepen
$query = "SELECT * FROM Eten left outer join Voorraad on (Eten.Naam=Voorraad.Naam) where Eten.naam='".$Eten['Naam']."'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
if(isEmpty($row['aantal'])) { // er zit geen waarde in de Voorraad tabel
mysql_query("INSERT INTO Voorraad (User,Naam,Vet,Soort) VALUES ('".$Naam."','".$Eten['Naam']."','".$Eten['Vet']."','".$_POST['soort']."')");// zet hier wat er moet gebeuren als een gegeven in de tabel Eten niet voorkomt in de tabel Voorraad
}
Else{
mysql_query("Update Voorraad SET Aantal = '".$Nieuwaant."', Vet = '".$NieuwVet."' WHERE User='".$Naam."' && Naam = '".$Eten['Naam']."'");
}
}
$query="SELECT * FROM Eten left outer join Voorraad on (Eten.Naam=Voorraad.Naam) where Eten.naam='".$Eten['Naam']."'";
if(isEmpty($row['aantal'])){// er zit geen waarde in de Voorraad tabel
mysql_query("INSERT INTO Voorraad (User,Naam,Vet,Soort) VALUES ('".$Naam."','".$Eten['Naam']."','".$Eten['Vet']."','".$_POST['soort']."')");// zet hier wat er moet gebeuren als een gegeven in de tabel Eten niet voorkomt in de tabel Voorraad
}
Else{
mysql_query("Update Voorraad SET Aantal = '".$Nieuwaant."', Vet = '".$NieuwVet."' WHERE User='".$Naam."' && Naam = '".$Eten['Naam']."'");
}
}
Ik heb het getest, het wil niet opschieten.
En inderdaad het gerecht staat niet in de voorraad. Dit moet erin worden gezet zodra het product gekocht word. Als het er wel instaat moet alleen het aantal ge-update worden. Het probleem is hij doet niets. (Buiten het geld uitgeven.)