Dezimal-Wert in MySQL speichern
Andreas
- php
Hallo,
ich möchte ein Dezimalwert in einer MySQL-Datei speichern. Bisher hatte ich nur Int und Varchar, aber jetzt klapps nicht. Anbei der PHP-Code. Das Feld Bewertung hat den Typ Decimal(5,2). Zuvor habe ich es mit Float versucht, hat auch nicht geklappt. Wo ist mein Fehler?
Gruß Andreas
<?php
require("tb-config.php");
require("header.inc.php");
$sql_vote = $SQL->putquery("SELECT Bewertung, AnzBewertung FROM tbdownload WHERE downloadname = '$dlname'");
$Bewertung = mysql_result($sql_vote,0,"Bewertung");
$AnzBewertung = mysql_result($sql_vote,0,"AnzBewertung");
print "
<form METHOD="POST" NAME="voting" action="vote.php">
<input type="Radio" name="vote" value="1">\n
<input type="Radio" name="vote" value="2">\n
<input type="Radio" name="vote" value="3">\n
<br>
<INPUT TYPE="SUBMIT" name="action" VALUE="Bewerten">\n
<INPUT TYPE="RESET" name="action" VALUE="Korrektur">\n
</form>";
if ( $HTTP_POST_VARS['action'] == "Bewerten" ){
$Note = ($AnzBewertung * $Bewertung + $vote)/($AnzBewertung+1);
}
$put_vote = $SQL->putquery("UPDATE tbdownload SET Bewertung = '$Note' WHERE downloadname = '$dlname'");
?>
Hallo,
ich möchte ein Dezimalwert in einer MySQL-Datei speichern. Bisher hatte ich nur Int und Varchar, aber jetzt klapps nicht. Anbei der PHP-Code. Das Feld Bewertung hat den Typ Decimal(5,2). Zuvor habe ich es mit Float versucht, hat auch nicht geklappt. Wo ist mein Fehler?
$put_vote = $SQL->putquery("UPDATE tbdownload SET Bewertung = '$Note' WHERE downloadname = '$dlname'");
Was genau "klappt" nicht?
Kannst Du die Variable ueberhaupt speichern, aber nicht
im gewuenschten Format? (A)
Oder wird gar nichts gespeichert? (B)
Falls (A):
Formatiere die Zahl doch einfach vor dem Speichern
mit der PHP-Funktion number_format():
http://ch.php.net/manual/de/function.number-format.php
Falls (B):
Anstatt irgendwelche Funktionen zu verwenden ($SQL->putquery),
die hier keiner kennt, solltest Du Dein PHP-Skript so
schreiben, dass Dir bei Misserfolg die Fehlermeldung von
MySQL zurueckgibt.
http://ch.php.net/manual/de/function.mysql-error.php
Dann erfaehrst Du vielleicht, was das Problem ist.
Eine moegliche Fehlerquelle ist noch, dass Du in der Query
das $Note in Anfuehrungszeichen hast. Ich bin nicht sicher,
ob das bei Zahlen erlaubt ist.
Gruesse,
Thomas
Hallo
Was genau "klappt" nicht?
es wird absolut nix gespeichert.
Anstatt irgendwelche Funktionen zu verwenden ($SQL->putquery),
die hier keiner kennt, solltest Du Dein PHP-Skript so
schreiben, dass Dir bei Misserfolg die Fehlermeldung von
MySQL zurueckgibt.
Hier dder Code der Funktion, wie du siehst ist die Fehlerabfrage darin gelöst:
function putquery($query){ // Query senden
$this->qnum++;
if ( $query = mysql_query("$query") )
return $query;
else
die("<B>Error in mySQL-Query has been detected!</B><BR><I>mysql said:</I> ".mysql_error()."");
}
Eine moegliche Fehlerquelle ist noch, dass Du in der Query
das $Note in Anfuehrungszeichen hast. Ich bin nicht sicher,
ob das bei Zahlen erlaubt ist.
Wenn ich diese weglasse bekomme ich eine Fehlermeldung.
Gruß Andreas
Hallo,
$Note = ($AnzBewertung * $Bewertung + $vote)/($AnzBewertung+1);
}
$put_vote = $SQL->putquery("UPDATE tbdownload SET Bewertung = '$Note' WHERE downloadname = '$dlname'");
$Note soll als String in das Tabellenfeld eingetragen werden, was aber bei numerischen Felder fehlschlaegt.
MfG, Thomas
Hallo,
$Note soll als String in das Tabellenfeld eingetragen werden, was aber bei numerischen Felder fehlschlaegt.
wenn ich die Hochkommas weglasse habe ich einen Fehler:
mysql said: You have an error in your SQL syntax near 'WHERE downloadname = 'Kumulier97'' at line 1
Wie werden Numerische Werte normalerweise gespeichert?
Ich vergaß vorhin die Funktion putquery zu posten:
function putquery($query){ // Query senden
$this->qnum++;
if ( $query = mysql_query("$query") )
return $query;
else
die("<B>Error in mySQL-Query has been detected!</B><BR><I>mysql said:</I> ".mysql_error()."");
}
Gruß Andreas
Hallo,
wenn ich die Hochkommas weglasse habe ich einen Fehler:
mysql said: You have an error in your SQL syntax near 'WHERE downloadname = 'Kumulier97'' at line 1
Das habe ich auch nicht vorgeschlagen.
Wie werden Numerische Werte normalerweise gespeichert?
Ohne Anfuehrungszeichen, als Fließkomma- oder Ganz-Zahlenwerte (setze also $Note nicht in '...').
Probiere das doch einfach an der MySQL-Konsole aus.
MfG, Thomas
Hallo,
Ohne Anfuehrungszeichen, als Fließkomma- oder Ganz-Zahlenwerte (setze also $Note nicht in '...').
Das habe ich doch mit Hochkommatas gemeint, wenn ich die weglasse gibts die Fehlermeldung.
Probiere das doch einfach an der MySQL-Konsole aus.
Hab ich gemacht, da funktioniert es.
Gruß Andreas
Hallo,
alternativ dazu, wie wäre es die Kommazahl als Text zu speichern, und für die Berechnung in eine Zahl umwandeln?
Macht das Sinn, bzw. wie macht man das?
Gruß Andreas
Kann mir denn niemand helfen?
hi,
Kann mir denn niemand helfen?
das es für mysql ein manual gibt, ist dir bekannt?
http://www.mysql.de/doc/de/
wie wäre es also, wenn du dort mal nachschaust, und versuchst selbst eine lösung zu finden, anstatt hier schon nach nicht einmal vierzig minuten "wartezeit" rumzuquengeln!
wir sind kein bezahlter support hier, der dir innerhalb einer halben stunde eine antwort zu liefern verpflichtet ist.
gruss,
wahsaga