Einen Bool aus der Datenbank auslesen

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
  • Jeffry, entschuldige ich komm da irgendwie nicht hinterher


    bisher habe ich immer mit


    Variable = cache_get_field_content INT bzw Float
    gearbeitet


    muss ich dann nicht irgendwie den INT auslesen und den bei 1 auf True bzw bei 0 auf false setzen?
    dass ich das manuell mache?


    mit dem anderen befehl komme ich irgendwie net klar


    bei der Row also reihe muss ich doch dann noch den namen definieren also aus welcher oder nicht?

  • sInfo[playerid][PaydayTime] = cache_get_field_content_int(0,"PaydayTime",dbhandle);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    sInfo[playerid][spawnchange] = cache_get_field_content_int(0,"spawnchange",dbhandle);
    //bool:autoschein
    //bool:rollerschein,
    //bool:motorrschein,
    //bool:bootsschein,
    //bool:flugschein,

    sInfo[playerid][autoschein] = cache_get_field_content_int(0,"autoschein",dbhandle);
    //sInfo[playerid][autoschein] = !!strval(tmp);
    // wie muss ich denn tmp definieren?
    sInfo[playerid][rollerschein] = cache_get_field_content_int(0,"rollerschein",dbhandle);
    sInfo[playerid][motorrschein] = cache_get_field_content_int(0,"motorrschein",dbhandle);
    sInfo[playerid][bootsschein] = cache_get_field_content_int(0,"bootsschein",dbhandle);
    sInfo[playerid][flugschein] = cache_get_field_content_int(0,"flugschein",dbhandle);


    ein stück was funktioniert und den rest dazu


    Jeffry

  • Theoretisch reicht es, wenn du den Wert als Integer speicherst und ausliest. 0/1 ist ja das selber wie false/true. Den Wert kannst du dann in deiner Boolvar speichern. Müsste eig. Ohne Konvertierung etc funktionieren, ist aber nur eine Vermutung.

  • whitetiiger


    sooo??


    sInfo[playerid][rollerschein] = !! cache_get_field_content_int(0,"rollerschein",dbhandle);
    sInfo[playerid][motorrschein] = !! cache_get_field_content_int(0,"motorrschein",dbhandle);
    sInfo[playerid][bootsschein] = !! cache_get_field_content_int(0,"bootsschein",dbhandle);
    sInfo[playerid][flugschein] = !! cache_get_field_content_int(0,"flugschein",dbhandle);


    muss ich dann in der DB INT oder Boolean definieren?

  • Boolean in der Tabelle, und dann so:
    new tmp[32];
    cache_get_field_content(0,"autoschein",dbhandle); sInfo[playerid][autoschein] = !!strval(tmp);
    cache_get_field_content(0,"motorrschein",dbhandle); sInfo[playerid][motorrschein] = !!strval(tmp);
    //...


    EDIT:
    Oder so:
    sInfo[playerid][rollerschein] = !!cache_get_field_content_int(0,"rollerschein",dbhandle);


    Dürfte beides gehen. Ich bevorzuge aber die erste Variante.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • wenn es gerade um das geht hätte ich auch eine kleine Frage kurz, wird Stormi wahrscheinlich auch interessieren:


    format(query,sizeof(query),"UPDATE user SET eingeloggt='%i' WHERE id='%i'",sInfo[playerid][eingeloggt],sInfo[playerid][db_id]);


    wenn ich eingeloggt jetzt zu einem Bool ändere, wie heißt das dann: '%?'
    Also das i für Integer wird dann zu ?

  • cache_get_field_content(0,"email",sInfo[playerid][e_mail],dbhandle,64);
    Bei 64 die Länge rein schreiben, die du im enum bei e_mail stehen hast.


    @Schlaubi:
    Du kannst %d/%i lassen, da BOOLEAN meistens zu TINYINT umgewandelt wird, und da ist alles was nicht 0 ist entsprechend true, und 0 ist false. Ein true-Boolean wird in %d zu 1, ein false zu 0.



    EDIT: (Post unten)
    @Stormi25: Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke!

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • @Schlaubi


    ich vermute mal so


    format(query,sizeof(query),"UPDATE user SET eingeloggt='%i' WHERE id='%i'",sInfo[playerid][eingeloggt],sInfo[playerid][db_id]);


    zu


    new einlog;


    if(sInfo[playerid][eingeloggt] == true)
    einlog = 1;
    else
    einlog = 0;
    format(query,sizeof(query),"UPDATE user SET eingeloggt='%i' WHERE id='%i'",sInfo[playerid][eingeloggt],sInfo[playerid][db_id]);


    so würde ich es jetzt im Zweifel schreiben :)

  • Beitrag von Marcel789 ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.