Hallo ik heb een database met twee waarden punten en totpunten
nu probeer ik met deze code
mysql_query("UPDATE klaverjassen SET totpunten = '".$row['totpunten']." + $punten WHERE speler = $speler");

met een query haal ik de laatst bekende totpunten op en wil daar de in een formulier op gegeven punten bij optellen. Maar de waarde blijft in het nieuwe record op 0 nul staan
Alvast bedankt voor de hulp.

Luc Gomes
Echo voor de query eens wat er zit in:
$row['totpunten'], $punten en $speler.
Echo eventueel eens de volledige query.
Heb je foutafhandeling ingebouwd?
Opmerkingen:

1) Geen foutenafhandeling zover ik zie
2) Tenzij $punten een escape heeft is er geen beveiliging en is je script gevoelig voor SQL-Injection
3) Mysql is verouderd, gebruik liever mysqli, of indien je wenst PDO
4) Waarom heb je wel quotes om $row['totpunten'] maar niet om $punten?
5) Wat ik denk is dat je dit zoekt:


mysql_query("UPDATE klaverjassen SET totpunten = 'totpunten + $punten' WHERE speler = '".$speler."'");


Beter in mysqli:


mysqli_query($con,"UPDATE klaverjassen SET totpunten = 'totpunten + $punten' WHERE speler = '".$speler."'");
Dat laatste kan natuurlijk noooooit werken. Nu heb je een quote voor een veldnaam in SQL en na een waarde uit php. Dat is echt aan alle kanten verkeerd.

En in elk geval, als je wilt optellen betekent het dat het getallen moeten zijn (integers of floats) en dus moet je gewoon helemaal geen quotes gebruiken.
Ben ik niet afhankelijk van mijn provider of kan ik zomaar mysqli gaan gebruiken?
overigens werkt de code van Peter Flos niet helaas

Luc
Theoretisch ja, in de praktijk: nee.
mysqli is geen andere database, het is alleen een andere functie bibliotheek. Standaard is die tegenwoordig wel geinstalleerd, dus die kan je zonder problemen gebruiken.

Dat de code van Peter niet zou werken was al duidelijk overigens. Maar wat nog steeds wel de vraag is, is wat er in je variabelen zit, zoals Obelix al vroeg. En ook hoe het zit met de foutafhandeling.
Nog geen fout afhandeling en de variable tot punten zijn niks meer dan de wekelijkse resultaten optellen bij het totaal aantal punten:

$row['totpunten'] geeft het aantal punten van het vorige record van de betreffende speler en $punten zou in de afhandeling van het formulier daarbij moeten worden opgeteld zodat er volgende week een andere waarde hangt aan $row['totpunten']
Luc Gomes op 15/08/2014 16:29:26

Nog geen fout afhandeling

Je begrijpt natuurlijk dat dat geen handige actie is dan. Hoe wil je nu gaan ontdekken wat er fout gaat als je fouten gewoon laat lopen?

<?php

$sql = "UPDATE klaverjassen
SET totpunten = totpunten + " . (int)$punten ."
WHERE speler = '". $speler ."'" ;

?>

waarbij je dan alleen nog moet zorgen dat $speler geen gekkigheid bevat (mysqli_real_escape_string op loslaten, of zeker weten dat het een getal is.)
Aansluitend voor de zekerheid wel een paar keer op F5 drukken om ervan verzekerd te zijn dat het totaal echt klopt.
off topic
Laat eens de link zien als je wilt.
Ik ben wel geïnteresseerd. Vooral in de reglementen :)

Jan

Reageren