Kompliziertes QuizSystem mit Suchfunktion

Aus gegebenem Anlass: Sichert eure Backupcodes wenn ihr die Zwei-Faktor-Authentifizierung aktiviert habt!

Infos dazu findet ihr nochmal hier

  • Folgendes::


    Ich möchte, dass der Spieler nach verfügbaren, erstellten Quizzes suchen kann.


    Diese werden alle per Datenbank geladen und können Ingame erstellt werden.


    Soweit klappt auch alles, nur hakt es noch stark an der Suchfunktion.


    Der Spieler soll das Quiz durch Stichworte suchen können, dann wird mit strfind()


    überprüft ob dieses Stichwort im namen, der Frage oder der Antwort des Quiz enthalten ist.


    Wenn ja wird die Quiz-ID dem Spieler per Array zugewiesen.


    Später sollen dann alle Quizzes die gefunden werden, dem Spieler per Dialog angezeigt werden.


    Wenn ich z.B den Suchbegriff "Spongebob" eingebe, wird mir nur der quizname des ersten Quizzes, das


    überhaupt von der Datenbnak geladen wird.


    Alle Quizzes aufzulisten ist allerdings kein Problem, dort wird auch alles korrekt angezeigt



    EST9DW2.png








    Code::


    https://pastebin.com/ytw8VFau

  • Also mal ein paar Tipps:


    1. Arbeite nicht mit GOTO. Dadurch erzeugst du nur Spaghetticode und es ist eine Qual das zu lesen (und es kommt leicht zu Fehlern).
    2. Lass SQL für dich die Arbeit machen und nutze LIKE.
    3. Dann kannst du über den MySQL Callback direkt den Dialog erstellen.

    Der Vorteil der neuen MySQL Versionen ist ja, dass sie asynchron arbeiten, da brauchst dir keine Sorgen mehr um Server-Delays machen etc.

    ast2ufdyxkb1.png


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

  • Wie wäre da die richtige Abfrage? OR?


    SQL
    1. SELECT * FROM QuizSystem WHERE quiz_question OR quiz_answer OR quiz_name OR quiz_creator LIKE '%dollar%'

    Da liefert der mir nichts zurück




    // nvm:



    Die Antwort wäre


    Zitat

    SELECT * FROM QuizSystem

    WHERE quiz_question LIKE 'dollar'

    OR quiz_answer LIKE 'dollar'

    OR quiz_name LIKE 'dollar'

    OR quiz_creator LIKE 'dollar'

  • Nutze ruhig LIKE '%dollar%'.


    Sonst bekommst du nur Resultate, wenn die Spalte wirklich nur "dollar" beinhaltet.

    ast2ufdyxkb1.png


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

  • Stimmt, ist mir auch aufgefallen, dass es etwas zu spezifisch ist.



    Zitat

    new query[328];

    mysql_format(handle, query, sizeof(query), "SELECT * FROM QuizSystem WHERE quiz_question LIKE '%e' OR quiz_answer LIKE '%e' OR quiz_name LIKE '%e' OR quiz_creator LIKE '%e'", inputtext,inputtext,inputtext,inputtext);

    mysql_pquery(handle, query, "OnUserCheckQuiz", "dd", playerid,loop);

    print(query);



    Nur...


    Wie macht man das denn bei strings? '%%e%' ist irgendwie falsch

    • Hilfreich

    ist irgendwie falsch

    Ja, weil format mit % Zeichen anders umgeht, da das ein Placeholder ist.


    Musst du so schreiben (sieht zwar absolut bescheuert aus, aber ja xD):


    LIKE '%%%e%%'

    ast2ufdyxkb1.png


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