STRFIND Funktioniert Nicht

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
  • Guten Tag Leute,


    Code
    for(new i=1;i<4;i++) {
    mysql_format(MySqlConnection, userstring1,sizeof(userstring1), "SELECT `QuestsDone` from `spieler` WHERE `Name` = %s", Spieler[playerid][pName]);
    new Cache:resulted = mysql_query(MySqlConnection, userstring1);
    cache_get_field_content(0, "QuestsDone", qDone);
    format(qStr,sizeof(qStr),"%i ,",i);
    if(strfind(qDone, qStr, true) != -1)
    {
       SCM(playerid, WEISS, "Strfind hat zugeschlagn ^^");
       cache_delete(resulted);
    }


    Und zwar möchte ich, wie ihr oben seht, dass aus einem Datensatz in dem bereits erledigte Tätigkeiten im Format: "1 , 2 , 3 , 4 , ..." abgespeichert werden, ausgeblendet werden.
    Das habe ich versucht mit Strfind zu realiesieren (Wenn im String z.B. "1 ," vorhanden ist, dass das in der Klammer ausgeführt werden soll),
    was jedoch nicht Funktioniert :D


    Weiß jemand wieso? MfG ReceZZ

  • Es wäre vielleicht wichtig zu wissen, ob in der Tabelle die Zahlen so stehen
    1 ,2 ,3 ,4 ,5
    oder so:
    1, 2, 3, 4, 5
    Das macht einen großen Unterschied, wobei ich denke das strfind nichts findet weil es anders in der Tabelle steht. Schau das mal nach und ändere das dann in deinen Code ab und sage uns ggf. auch bescheid.

  • Lass dir das qDone mal per print ausgeben, ob da überhaupt was drin steht:
    printf("qDone: %s", qDone);



    Dann kannst du ja mal manuell vergleichen, ob der String gefunden werden kann.



    Übrigens, setze das Query und das Auslesen des Caches aus der Schleife raus, du brauchst ja nicht 4x das gleiche Query ausführen.

  • Also, zu @_Marvin
    In der Tabelle wird es "1 ,2 3, 4, ..." Gespeichert, und es lag nicht am "FROM" (denke ich :D)


    und zu @Jeffry ,
    Tatsächlich gibt es bei "qDone" Nichts aus, ich hab mal die Logs gecheckt...


    Lag wohl daran, dass ich das %s nicht in Anführungszeichen gesetzt hatte :D ...


    Hab das jetzt korrigiert, und noch bei strfind statt == -> != angegeben und jetzt Funktioniert alles, ich danke dir bzw. euch!
    //Closed

  • Super, dass du es so selbst lösen konntest!

    es lag nicht am "FROM" (denke ich :D)

    Yup. SQL Anweisungen sind nicht case-Sensitive, man kann sie schreiben wie man will.


    Sowas hier geht auch:

    SQL
    sElEcT * frOM `tabELle` WHeRe `sPaLTe` = '1';

    Das gibt trotzdem das Richtige aus - kann halt kein Mensch mehr gescheit lesen.

  • Also, zu @_Marvin
    In der Tabelle wird es "1 ,2 3, 4, ..." Gespeichert, und es lag nicht am "FROM" (denke ich :D)

    Ich habe das mit dem FROM auch wieder entfernt, weil ich mich dabei vertan habe. :)
    Das andere hat Jeffry dir ja schon gesagt.