login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP]Bestaan/onbestaand DB

Offline Quickb - 16/04/2008 13:05
Avatar van QuickbNieuw lid 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?

Alvast bedankt!

Quickb

  1. If($_POST['oke']){
  2. If($Geld >= $Prijs){ // Geld gelijk of groter dan prijs = gekocht
  3. $res = mysql_query("SELECT * FROM Eten"); // Eten opvragen
  4. while ($Eten = mysql_fetch_assoc($res)){
  5. $Naam = $Eten['Naam'];
  6. $Vet = $Eten['Vet'];
  7. $Prijs = $Eten['Prijs'];
  8. }
  9. $res = mysql_query("SELECT * FROM Voorraad"); // Voorraad opvragen
  10. while ($Voor = mysql_fetch_assoc($res)){
  11. $Naam1 = $Voor['User'];
  12. $Naam2 = $Voor['Naam'];
  13. $Oudaant = $Voor['Aantal'];
  14. $Veteten = $Voor['Aantal'];
  15. }
  16. $Nieuwaant = $Aant + $Oudaant;
  17. $NieuwVet = $Veteten + $Eten['Vet'];
  18. $Naam = $_SESSION['Naam'];
  19. $Geld1 = $Geld - $Prijs;
  20. mysql_query("UPDATE Leden SET Geld = '".$Geld1."' WHERE Naam='".$Naam."'")or die( mysql_error("Fout!") );
  21. Echo "Product gekocht! Het ligt voor je klaar in de voorraadkamer, smakelijk!";
  22. If($Naam2 != $Eten['Naam']){
  23. Echo $Naam;
  24. Echo $Eten['Naam'];
  25. Echo $Eten['Vet'];
  26. Echo $_POST['soort'];
  27. mysql_query("INSERT INTO Voorraad (User,Naam,Vet,Soort) VALUES ('".$Naam."','".$Eten['Naam']."','".$Eten['Vet']."','".$_POST['soort']."')");
  28. }
  29. Elseif($Naam2 == $Eten['Naam']){
  30. mysql_query("Update Voorraad SET Aantal = '".$Nieuwaant."', Vet = '".$NieuwVet."' WHERE User='".$Naam."' && Naam = '".$Eten['Naam']."'");
  31. }
  32. }

4 antwoorden

Gesponsorde links
Offline Berten - 16/04/2008 14:53 (laatste wijziging 16/04/2008 15:01)
Avatar van Berten PHP beginner Eum, wat doe jij daar allemaal, ik hoop dat't volgende een beetje een antwoord biedt en anders moet je het maar eerst eens deftig uitleggen.

Ik ga ervan uit dat je 2 tabellen hebt, Eten en Voorraad.

In Tabel Eten hebben we oa de naam van een 'gerecht', in Tabel Voorraad kan deze terug komen.

We gaan met 1 query de records uit Eten halen en afchecken of ze bestaan in Voorraad

We gebruiken volgende query
  1. SELECT * FROM Eten LEFT OUTER JOIN Voorraad ON (Eten.naam=Voorraad.naam) WHERE Eten.naam='naam'


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.

  1. $query = "SELECT * FROM Eten left outer join Voorraad on (Eten.naam=Voorraad.naam) where Eten.naam='".$_POST['naam']."'";
  2. $result = mysql_query($query) or die(mysql_error());
  3. while($row = mysql_fetch_array($result)) {
  4. if(isEmpty($row['aantal'])) { // er zit geen waarde in de Voorraad tabel
  5. // zet hier wat er moet gebeuren als een gegeven in de tabel Eten niet voorkomt in de tabel Voorraad
  6. }
  7. }
Offline timmie_loots - 16/04/2008 18:46 (laatste wijziging 16/04/2008 18:47)
Avatar van timmie_loots PHP gevorderde 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).
Offline Berten - 16/04/2008 23:57 (laatste wijziging 16/04/2008 23:58)
Avatar van Berten PHP beginner 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
Offline Quickb - 17/04/2008 15:24 (laatste wijziging 17/04/2008 15:25)
Avatar van Quickb Nieuw lid
  1. $query = "SELECT * FROM Eten left outer join Voorraad on (Eten.Naam=Voorraad.Naam) where Eten.naam='".$Eten['Naam']."'";
  2. $result = mysql_query($query) or die(mysql_error());
  3. while($row = mysql_fetch_array($result)) {
  4. if(isEmpty($row['aantal'])) { // er zit geen waarde in de Voorraad tabel
  5. 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
  6. }
  7. Else{
  8. mysql_query("Update Voorraad SET Aantal = '".$Nieuwaant."', Vet = '".$NieuwVet."' WHERE User='".$Naam."' && Naam = '".$Eten['Naam']."'");
  9. }
  10. }

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.)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.225s