[Bug]MySQL Strings

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,


    leider wird bei mir in meinem Save & Loadplayer kein String richtig gespeichert bzw geladen.
    Wenn ich ihn Speichere und mich auslogge und in der Datenbank nachschaue, geht alles.
    Logge ich mich jedoch wieder ein und schaue mit einem Befehl, sind die Werte leer und in der Datenbank ebenso, im Grunde bleiben sie nur gespeichert solange ich ausgeloggt bin.


    Ich vermute es liegt am Laden?


    cache_get_field_content(0, "Geschlecht", SpielerInfo[playerid][pGeschlecht]);//hier
    SetPVarInt(playerid, "pLevelPunkte", cache_get_field_content_int(0, "Levelpunkte"));
    SpielerInfo[playerid][pPayday] = cache_get_field_content_int(0, "Payday");
    cache_get_field_content(0, "Herkunft", SpielerInfo[playerid][pHerkunft]);//hier
    cache_get_field_content(0, "Verheiratetmit", SpielerInfo[playerid][pVerheiratetmit]);//Hier


    Speichern tu ich sie so:


    format(query, sizeof(query), "%s`Alter` = '%d', Geschlecht = '%s', Levelpunkte = '%d', Payday = '%d', Herkunft = '%s', Verheiratetmit = '%s', Telefonnummer = '%d', Tutorial = '%d', Dutyskin = '%d', Tot = '%d', Totskin = '%d', ", query,
    SpielerInfo[playerid][pAlter], SpielerInfo[playerid][pGeschlecht], GetPVarInt(playerid, "pLevelPunkte"), SpielerInfo[playerid][pPayday],SpielerInfo[playerid][pHerkunft], SpielerInfo[playerid][pVerheiratetmit],SpielerInfo[playerid][pTelenummer],SpielerInfo[playerid][pTut],SpielerInfo[playerid][pDutyskin],SpielerInfo[playerid][pTot],SpielerInfo[playerid][pTotskin]);//1807


    In der MySQL log steht nichts auffälliges.


    Hoffe auf schnelle positive Rückmeldung, danke euch!



    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Du solltest am ende immer deine Verbindung eintrage:
    Beispiel:


    cache_get_field_content(0,"Geschlecht", SpielerInfo[playerid][pGeschlecht],connectionhandle);
    cache_get:field_content_int(0,"alter",SpielerInfo[playerid][pAlter],connectionhandle);


    Dann sollte es klappen, weil ohne eine connectionhandle hat der keine Verbindung zur Datenbank.

  • Pascal.:


    Das stimmt nicht was du hier schreibst, der Parameter ist freiwillig.


    Außerdem lässt man mit cache_get_field_content strings auslesen.


    SpielerInfo[playerid][pGeschlecht] = cache_get_field_content_int(0,"Geschlecht");
    SpielerInfo[playerid][pAlter] = cache_get_field_content_int(0,"alter");


    mfg :thumbup:

  • Euer Ernst gerade ?^^


    Das sollen Strings sein, ist Absicht, steht auch in der Überschrift?


    Bitte das nächste mal kurz lesen :)


    Trotzdem danke !



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • cache_get_field_content(0, "Geschlecht", SpielerInfo[playerid][pGeschlecht],MySqlConnection,30);//hier
    SetPVarInt(playerid, "pLevelPunkte", cache_get_field_content_int(0, "Levelpunkte"));
    SpielerInfo[playerid][pPayday] = cache_get_field_content_int(0, "Payday");
    cache_get_field_content(0, "Herkunft", SpielerInfo[playerid][pHerkunft],MySqlConenction,30);//hier
    cache_get_field_content(0, "Verheiratetmit", SpielerInfo[playerid][pVerheiratetmit],MySqlConnection,30);//Hier
    Versuch mal die Länge mit anzugeben, ich glaube das war mal ein Fehler, bin mir aber nicht mehr sicher. :whistling:

  • Nur funktioniert sizeof bei dem Zugriff auf ein enum nicht. Liegt einfach daran, wie die enums wirklich (Variablen) funktionieren.
    Ist ja nicht so, als würde dieses Problem nicht in der Dokumentation angemerkt werden.


    Zitat

    You have to provide the size (max_len) by yourself if you use an enum-array as destination.

  • Hallo,


    also leider geht es so auch nicht:


    cache_get_field_content(0, "Verheiratetmit", SpielerInfo[playerid][pVerheiratetmit],handle,30);


    Es wird wie gesagt gespeichert, doch logge ich mich dann wieder ein, wird es auf 0 gesetzt.



    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Sorry mein Fehler,
    der Wert ist dann einfach weg, es steht garnichts drin.


    Im Enum ist es schon richtig:
    pHerkunft[32]


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Schalte mal deine MySQL-Log ein, und schicke uns den Code davon.
    Irgendwo muss der Fehler doch sein, oder ich habe ihn nur übersehen. :wacko:

  • Huhu,


    ich habe jetzt irgendwie keine Ahnung, aber es geht.
    Ich hab bei OnPlayerConnect(Vor dem Laden des Players) alle Variablen auf 0 gehabt.


    Dann hab ich einmal kurz format(SpielerInfo[playerid][pHerkunft], 32, ""); auskommentiert, GMX gemacht, wieder das "//" weg gemacht und nun gehts komischerweise.



    Egal, falls was ist melde ich mich^^


    Danke euch!


    Mit freundlichen Grüßen



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • format(SpielerInfo[playerid][pHerkunft], 32, "");


    Nur kurz nebenbei, dass ist keine schöne Art einen String zu clearen.


    In Pawn, kann man das sehr gut mit dem NULL Byte einfach machen:


    SpielerInfo[playerid][pHerkunft][0] = '\0';


    So und nun wäre dein String leer :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Ich hoffe mal du nutzst die neuste Version, des Plugins, aber abgesehen davon sollte das so normal klappen sofern


    • Der Namen nicht falsch ausgegeben wird bei der Formatierung in deinem Dialog
    • Der Spaltename ist richtig und heißt ebenfalls Verheiratetmit
    • Der SQL Befehl richtig ist, daher das alles ausgewählt wurde und auch die Where Clausel angegeben ist


    trololo, wenn du ihm schon zeigst wie man einen string am besten "bereinigt" und er sowieso deine ganzen Variablen zurück setzt, so kannst du ihm wenigstens den trick mit der schleife posten ^^.


    for(new i; i != _:pInfo; ++i)SpielerInfo[playerid][pInfo:i] = 0;


    pInfo name des enums

  • Sofern die Variablen sich alle im Enum pInfo (bzw. so wie du es genannt hat) befinden, dann ja.
    Die Schleife durchläuft das komplette Enum und setzt davon jede Variable / jedes Array zurück auf 0.

  • Ja klar.


    Mein Enum sieht so aus:
    enum SpielerDaten
    {
    ...
    }


    Die schleife hab ich so gemacht:


    for(new i; i != _:SpielerDaten; ++i)SpielerInfo[playerid][SpielerDaten:i] = 0;


    Ist richtig, oder?



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen