Voorraad UPDATE met -1
Een hele domme vraag.
Ik heb deze query:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$subquery = "UPDATE boeken SET voorraad = '{$uitvoer['aantal']}' WHERE id = '{$uitvoer['boeken_id']}';";
?>
$subquery = "UPDATE boeken SET voorraad = '{$uitvoer['aantal']}' WHERE id = '{$uitvoer['boeken_id']}';";
?>
Wat ik wil is niet dit: SET voorraad = '{$uitvoer['aantal']}'
Maar iets als SET voorraad -= '{$uitvoer['aantal']}'
Hij moet de bestaande waarde nemen die in het veld voorraad staat, en daar $uitvoer['aantal'] vanaf trekken. Ik heb gegoogled, maar ik kon het niet vinden. Ik weet wel dat het bestaat.
Kan iemand me helpen?
Groeten,
Robbert
SET veld = veld - 1
Jongens, bedankt :)
Mocht je tóch de voorraad bijhouden, om de database te versnellen, dan ga je dit met een trigger doen. Op het moment dat je een product verkoopt, dus een nieuw bestelrecord in de database, zal de trigger automatisch de voorraad bijwerken. Op het moment dat je artikelen ontvangt, zal een andere trigger ook weer de voorraad bijwerken. Met triggers kun je dit veilig doen, met jouw huidige aanpak kan er teveel fout gaan.
Desondanks, maak eerst een opzet zonder de voorraad bij te houden, bereken deze op het moment dat je hem nodig hebt. Daar leer je het meeste van en het is eenvoudig aan te passen mocht je meer snelheid nodig hebben. Triggers doen wonderen. Zie de handleiding van jouw database.
@pgFrank, Waarom zou je de voorraad niet bijhouden? Je moet toch weten hoeveel je hebt?
Vergelijk het met een leeftijd, die hoef je ook niet op te slaan. Je hoeft alleen een geboortedatum te weten.
Jurgen schreef op 12.01.2008 16:36:
Zie het verschil tussen de ontvangen goederen en de verzonden goederen.@pgFrank, Waarom zou je de voorraad niet bijhouden? Je moet toch weten hoeveel je hebt?
Dit heeft ook als voordeel dat wanneer een product wordt teruggezonden, deze gewoon weer in de voorraad wordt opgenomen. Tenzij het kapot is, dan zul jet het moeten afschrijven. Ook dat is een normale procedure.
Met losse update-queries de voorraad bijhouden, gaat altijd fout, er kan op teveel plaatsen iets fout gaan. Ga het dus berekenen op het moment dat je het nodig hebt, of laat een trigger de boel berekenen en de uitkomst opslaan op het moment dat er elders iets veranderd. Maar in beide gevallen wordt er een momentopname gemaakt van de huidige stand van zaken. Wanneer deze berekening goed is, klopt de uitkomst altijd.
Het is namelijk een webwinkel die 2e hands boeken verkoopt. Dat wil zeggen dat elk boek uniek is, omdat een 2e hands boek mankementjes heeft die vermeld moeten worden.
Ik heb nu voor elk boek een status van 'te koop' of anders 'besteld', 'verzonden' of 'betaald'.
Dit werkt wel goed. In ieder geval, wel voor 2e hands boeken.
Ik wil jullie bedanken voor de hulp. Weten jullie misschien of het principe van...
ook geldt voor tekst?
Ik heb bijvoorbeeld een veld bijzonderheden en daar wil ik graag een logboekje van bijhouden, die tekst achter het al bestaande tekst voegt.
Groeten,
Robbert
Tja, ik weet het niet hoor.
Iemand goede raad?