MySQL Store Result

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,


    ich arbeite gerade an einem Ticketsystem. Die erstellten Tickets werden in der Tabelle "Tickets" gespeichert.
    Nun möchte ich einen "/tickets"-Befehl einfügen, mit welchem alle Tickets dessen Status gleich 0 ist.
    Wie mache ich das er das Result vom Query (SELECT blabla) speichert und dann in einen String schreibt (auch wenn mehrere tickets mit status = 0 vorhanden sind)?



    lg
    Deagle



    /e:
    Hier mein Query::

    SQL
    "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'"
  • BlueG R5 :whistling:


    Dann kannst du es einfach so machen:


    new string[256],query[64];
    format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(string);
    mysql_free_result();
    //In string steht dann alles drinnen


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Hier eine Lösung:



    public BlaBlub() {
    new string[256],query[64];
    format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(string) == 1)
    {
    printf("**Spieler: %s | Text: %s**",BESITZER(string),TEXT(string));
    }
    mysql_free_result();
    }


    stock TEXT(const string[]) {
    new tmp[32];
    strcat(tmp,string),strdel(tmp,0,strfind(string,"|")+1);
    return tmp;
    }


    stock BESITZER(const string[]) {
    new tmp[32];
    strcat(tmp,string),strdel(tmp,strfind(string,"|"),strlen(tmp));
    return tmp;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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


  • Und woher kommt der "|" in dem String?


    Die Version von ElDiabolo: sieht mir Ressourcensparender aus :o

  • Die Version von ElDiabolo: sieht mir Ressourcensparender aus :o


    Wenn du sscanf in deinem Script schon nutzt, kannst du das natürlich auch verwenden :rolleyes:


    public BlaBlub() {
    new string[256],query[64],besitzer[32],text[32];
    format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(string) == 1)
    {
    sscanf(string,"p<|>s[32]s[32]",besitzer,text);
    printf("**Spieler: %s | Text: %s**",besitzer,text);
    }
    mysql_free_result();
    }


    Der | kommt von dem MySQL-Result :rolleyes:


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Okay, jetzt brauch ich nur nochmal die strcat-Funktion erklärt, weil ich Besitzer und Text mit dieser Zusammenfügen möchte und das ganze dann in einem Dialog ausgeben möchte.


    Nutze doch einfach...format da kannst du das alles zusammenfügen :wacko:

    ast2ufdyxkb1.png


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

  • Kannst du mir ein Beispiel machen? :0


    /e
    Habe es jetzt so:
    new string[256],query[64],str[256],besitzer[32],text[32];
    format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(string) == 1)
    {
    sscanf(string,"p<|>s[32]s[32]",besitzer,text);
    format(str,sizeof(str),"Spieler: %s | Text: %s\n",besitzer,text);
    }
    mysql_free_result();
    ShowPlayerDialog(playerid,DLG_TICKETS,DIALOG_STYLE_MSGBOX,"Offene Tickets",str,"Schließen","");

  • format(str,sizeof(str),"Spieler: %s | Text: %s\n",besitzer,text);


    So wirst du nur immer 1nen Eintrag haben, du musst es so schreiben:


    format(str,sizeof(str),"%sSpieler: %s | Text: %s\n",str,besitzer,text);


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Okay, sobald mein Testserverhoster sein FTP-Problem gelöst hat werde ich es testen :)


    /e
    Ich habs mal aufm Homeserver getestet.
    Folgendes:


    Hier der Code:
    new string[256],query[64],str[256],besitzer[32],text[32];
    format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(string) == 1)
    {
    sscanf(string,"p<|>s[32]s[32]",besitzer,text);
    format(str,sizeof str,"%sSpieler: %s | Text: %s\n",str,besitzer,text);
    }
    mysql_free_result();
    ShowPlayerDialog(playerid,DLG_TICKETS,DIALOG_STYLE_MSGBOX,"Offene Tickets",str,"Schließen","");


    Er soll ja das Format "Spieler: NAME | Text: TEXT" angeben, wieso macht er das nicht?


  • new string[64 * 10],besitzer[MAX_PLAYER_NAME],text[32],result[64];
    mysql_query("SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = 0;");
    mysql_store_result();
    while(mysql_fetch_row_format(result))
    {
    sscanf(result,"p<|>s[24]s[32]",besitzer,text);
    format(str,sizeof str,"%sSpieler: %s | Text: %s\n",str,besitzer,text);
    }
    mysql_free_result();
    ShowPlayerDialog(playerid,DLG_TICKETS,DIALOG_STYLE_MSGBOX,"Offene Tickets",str,"Schließen","");


    Das Query kannst du auch direkt bei mysql_query reinsetzen.


    So nun dazu warum es nicht funktioniert.
    Du benötigst das sscanf plugin und entferne die sscanf funktion aus deinem skript
    http://forum.sa-mp.com/showthread.php?t=120356


    dann sollte das zu 100% funktionieren. Da wie du siehst wurde der string nicht gesplittet.
    Das was MrPawn gepostet hat ist einfach nur shit.


  • Sscanf 2.0 im Script.


    Folgender code:
    new string[256],query[64],str[256],besitzer[32],text[32],id;
    format(query, sizeof query, "SELECT `Besitzer`,`Text`,`Playerid` FROM `Tickets` WHERE `Status` = 0;");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(string) == 1)
    {
    sscanf(string,"p<|>s[32]ds[32]",besitzer,id,text);
    format(str,sizeof str,"%sSpieler: %s (ID: %d) | Text: %s\n",str,besitzer,id,text);
    }
    mysql_free_result();
    if(strlen(str) < 1)
    {
    ShowPlayerDialog(playerid,DLG_TICKETS,DIALOG_STYLE_MSGBOX,"Offene Tickets",str,"Schließen","");
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Derzeit sind keine offenen Supporttickets verfügbar!");
    }
    Keine Errors. Wenn ich /tickets eingebe, und ein TIcket vorhanden ist passiert nix.