Mysql Werte mit Punkten speichern

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo erstmal,


    ich hätte da mal ne frage bezüglich der Mysql Datenbank, also wenn ich die Position speichern will muss ich ja zum bsp. 1958.3783 so einen wert hier speichern mit einem Punkt.
    Die Mysql Datenbank nimmt aber leider keine Werte mit Punkten an. Als Fehlermeldung kommt nur "1958.3783 is not a valid floatin point value for field posX."
    Wäre echt nett wenn mir jmd helfen könnte.

  • Naja ich speicher noch gar nichts rein ich hab erstmal versucht die Wert manuell einzugeben ^^
    Davor hatte ich speichern drin aber die Mysql_log hat keine probleme angezeigt

  • Naja also mit der Funktion von Maddins Tutorial


    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%.1f' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }


    kann man mit dem Code alle Float werte speichern funktioniert mit den Healthpoints wunderbar, aber auch nur solange keine Kommawerte entstehen.


    stock SavePlayer(playerid)
    {

    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
    {

    //Nun speichern wir die Daten in der Datenbank
    mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", GetPlayerHealth(playerid), "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "posX", lastX, "Name", SpielerInfo[playerid][pName]);

    }
    }
    return 1;
    }


    und bei OnPlayerDisconnect


    public OnPlayerDisconnect(playerid, reason)
    {
    new float:lastX,float:lastY,float:lastZ;
    GetPlayerPos(playerid,lastX,lastY,lastZ);

    SavePlayer(playerid);
    DeletePVar(playerid,"Eingeloggt");



    return 1;
    }


    wäre echt genial wenn das mal funktionieren würde :D

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Oke also es speichert alle Werte wunderbar, ausser es geht um die Kommawerte
    und ich benutze dieses Plugin MySQL Plugin R5
    In der mysql_log stande Successfully executed. ich hab sie letztens gelöscht weil sie zu groß wurde


    Edit ich hab vllt den Fehler gefunden kann es daran liegen das beim Kompilieren dieses warning kommt
    warning 202: number of arguments does not match definition
    Es bezieht isch auf diese Zeile
    mysql_SetFloat("accounts", "Health", GetPlayerHealth(playerid), "Dreat", SpielerInfo[playerid][pName]);


    und möglicherweiße auf diese Funktion
    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%.1f' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

    Einmal editiert, zuletzt von Dreat ()