Beste mensen,

Een hele domme vraag.

Ik heb deze query:

<?php

$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

<?php
    $subquery = "
        UPDATE boeken
        SET voorraad =  voorraad - " . $uitvoer['aantal'] . "
        WHERE id = " . $uitvoer['boeken_id'];
?>
Voorraad is een berekend geheel, dat sla je in principe niet op in de database, dat bereken je op het moment dat je het nodig hebt.

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?
Dat kun je uitrekenen, dus dat hoef je niet bij te houden.
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
@pgFrank, Waarom zou je de voorraad niet bijhouden? Je moet toch weten hoeveel je hebt?
Zie het verschil tussen de ontvangen goederen en de verzonden goederen.

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.
Gelukkig heb ik het idee van voorraden geschrapt.

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

<?php

SET voorraad = voorraad - " . $uitvoer['aantal'] . "

?>

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
Of is het misschien beter om dit logboekje in een txt-bestand bij te houden?

Tja, ik weet het niet hoor.

Iemand goede raad?

Reageren