Mit MYSQL Rechnen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
denke mal
durchschneiden
durchschnittswert
fehlermeldung
fragen
gewinnen
klar mache
limit
quiz
result
richtig falsch durchschnitt
set
spalten
tabelle
uhr
umlaut
update
user
verhltnis
verloren verhltnis
-
Hi,
bin leider nicht der ganz hellste in MYSQL und fange gerade damit an.
Meine Frage:
Würde gerne eine Rechnung in MYSQL machen die den Durchschnittswert berechnet und ein eine extra Spalte für jeden Benutzer speichert.
Bsp.
Richtige Antworten geteilt durch Falsche Antworten = Durchschnitt
5/4 = 1,25
Ausgabe
Name======Richtig======Falsch======Durchschnitt
Max25========5==========4===========1,25
Zweck ist später die Tabelle in PhP so nach Durchschnitt sortiert Auszugeben.
Ich hoffe das meine Frage verständlich ist und evt. kann mir ja wer helfen.
mfg Max25
Beitrag geaendert: 27.11.2006 1:49:22 von max25 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das wäre kein Durchschnitt, sondern ein Verhältnis.
Ich gehe davon, aus, dass deine Tabelle etwa so aussieht:
Tabelle users
...
richtig INT
falsch INT
durchschnitt FLOAT
...
Und das Query wäre dann:
UPDATE users SET durchschnitt=(richtig/falsch)
Beachte, dass, wenn es 0 falsche Antworten gibt, du eine Division durch 0 hast ! -
Verhältnis meinte ich auch da sieht man das es schon fast 2 Uhr morgens war *g*.
Also in der Tabelle hab ich nun erst mal
Name als Text
Richtig Int
Falsch Int
hier soll ich wahrscheinlich noch nee Spalte *Verhältnis* eintragen am besten in FLOAT. Bis dahin wehre mir noch alles klar. Nur nicht wohin ich das Query:
UPDATE users SET durchschnitt=(richtig/falsch)
hinschreiben soll ist mir noch nicht so klar.
Mache das ganze hier über phpMyAdmi.
mfg Max25
-
hmmmmmm,
ich denke mal, das soll für ein Quiz werden.
Dann würde ich es so machen:
Wenn das Quiz vorbei ist, und z.B.: in $richtig ist die anzahl der richtigen antworten, in $falsch die der falschen:
(Die Spalte verhältnis habe ich Verhaltnis genannt)
(Der Benutzername wird in $name gespeichert)
(Die Tabelle mit den Daten habe ich quiz_daten genannt)
$query_a=mysql_query("SELECT `Richtig`, `Falsch` FROM `quiz_daten` WHERE `Name` = " .$name. " LIMIT 1");
$alte_daten = mysql_fetch_array($query_a);
$neu_richtig = $alte_daten['Richtig'] + $richtig;
$neu_falsch = $alet_daten['Falsch'] + $falsch;
$neu_verhaltnis = $neu_richtig / $neu_falsch;
mysql_query("UPDATE `quiz_daten` SET `Richtig` = '" .$neu_richtig. "', `Falsch` = '" .$neu_falsch. "', `Verhaltnis` = '" .$neu_verhaltnis. "' WHERE `Name` = '" .$name. "' LIMIT 1"); -
hier soll ich wahrscheinlich noch nee Spalte *Verhältnis* eintragen am besten in FLOAT. Bis dahin wehre mir noch alles klar. Nur nicht wohin ich das Query:
UPDATE users SET durchschnitt=(richtig/falsch)
hinschreiben soll ist mir noch nicht so klar.
Also, dieses Query berechnet für ALLE User in deiner Tabelle den Durchschnittswert neu. Wenn du immer nur 1 User updaten willst, dann musst du
WHERE userID='.$userid.' LIMIT 1'
noch ranhängen( Ich nehme an du verwendest ' ' um einen String in PHP zu kennzeichnen). -
$conn = mysql_connect($host,$user,$pw);
mysql_select_db ($db,$conn);
$query_a = mysql_query('SELECT `Gewonnen`, `Verloren` FROM `Member` WHERE `Name` = ' .$name. ' LIMIT 1');
$alte_daten = mysql_fetch_array($query_a);
$neu_gewonnen = $alte_daten['Gewonnen'];
$neu_verloren = $alet_daten['Verloren'];
$neu_verhältnis = $neu_gewonnen / $neu_verloren;
mysql_query('UPDATE `Verhältnis` = ' .$neu_verhältnis. ' WHERE `Name` = ' .$name. ' LIMIT 1');
$sql = "SELECT Name,Gewonnen,Verloren,Verhältnis FROM Member ORDER BY `Verhältnis` DESC ";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo($row['Name']);
echo " ";
echo($row['Gewonnen']);
echo " ";
echo($row['Verloren']);
echo " ";
echo($row['Verhältnis']);
echo "<br><br>";
}
Soweit hab ich das jetzt aber da ist noch ein Fehler drin und evt kann ja jemand helfen.
mfg Max25 -
Welche Fehlermeldung kommt denn?
$neu_gewonnen = $alte_daten['Gewonnen'];
$neu_verloren = $alet_daten['Verloren'];
mysql_query('UPDATE `Verhältnis` = ' .$neu_verhältnis. ' WHERE `Name` = ' .$name. ' LIMIT 1');
Das müsste so heißen:
(Überprüfe auch, ob umlaute als Spaltennamen OK sind)
'UPDATE Member SET Verhältnis='.$neu_verhältnis.' WHERE Name='.$name.' LIMIT 1'
Ansonsten, her mit den Fehlermeldungen ! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage