Zwei aufeinanderfolgende Eingaben prüfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zwei aufeinanderfolgende Eingaben prüfen

    Hallo,

    Habe folgendes Problem:

    Und zwar habe ich ein ganz normales Formular und möchte jetzt überprüfen, ob unmittelbar nach einer bestimmten Eingabe eine andere bestimmte Eingabe folgt.

    Klingt sicherlich etwas unschlüssig, deshalb mal ein Beispiel.

    Beispielsweise wird in das Formular eingegeben "Erzähl mir etwas!"
    Worauf hin dann ausgegeben wird "Möchtest du etwas über Schwarze Löcher erfahren?"

    Umzusetzen wäre dies ja mit folgendem oder preg_match:

    PHP-Code:
    if(eregi("Erzähl mir etwas!""$_POST[nachricht]"))
    echo 
    "Möchtest du etwas über Schwarze Löcher erfahren?"

    Nun soll aber ebenfalls überprüft werden ob die nächste Eingabe "ja" oder "nein" ist.
    Bei "ja" soll dann halt ein Text über schwarze Löcher als Ausgabe folgen und bei "nein" beispielsweise "Dann erzähl ich dir eben etwas über..."

    Aber das "ja" bzw. "nein" will ich nicht mit eregi (preg_match) definieren, da dann z.B. bei der Eingabe "ja" IMMER der Text über schwarze Löcher folgt, was aber nur im Zusammenhang mit "Möchtest du etwas über Schwarze Löcher erfahren?" geschehen soll.

    Ist das verständlich?

    Kann ich das irgendwie mit einer If-Funktion lösen oder so?
    Hab was von endlichen Automaten gehört, aber wie ich das umsetzen soll bleibt mir völlig schleierhaft.

    Danke schonmal

    Gruß

  • #2
    Hallo,

    erstmal würde ich dir raten, alle ereg*-Funktionen auf preg*-Funktionen umzustellen, da erstere nicht mehr lange unterstützt werden.

    Du kannst entweder die Frage jedes Mal mit durchschleifen (z. B. als hidden-Feld) oder du beschäftigst dich mal mit Sessions (empfohlen), die sich in PHP auch denkbar einfach realisieren lassen. Dann schreibst du den Gesprächsverlauf in die Session und kannst ihn immer wieder abrufen.

    Ob das aber für dein Vorhaben schon ausreicht, kann ich mir nicht ganz vorstellen, es sei denn, es ist ein bewusst sehr einfaches Dialogsystem.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Ok mit Sessions hab ich schon was gemacht, das kann ich.

      Es soll ein sehr einfach gehaltener Chatbot werden für die Schule, so einfach, dass sich mein Lehrer sogar mit den preg Funktionen zufrieden geben würde und ich auf Datenbank verzichten kann.

      Wenn ich jetzt den Gesprächsverlauf speichern lasse, wie kann ich denn dann prüfen, ob "Möchtest du etwas über schwarze Löcher erfahren" und "ja/nein" unmittelbar hintereinander eingetippt wurden?

      Danke!

      Kommentar


      • #4
        Zitat von Hampelmann Beitrag anzeigen
        dass sich mein Lehrer sogar mit den preg Funktionen zufrieden geben würde
        Das sind ja auch die richtigen: preg* gut, ereg* böse

        Zitat von Hampelmann Beitrag anzeigen
        wie kann ich denn dann prüfen, ob "Möchtest du etwas über schwarze Löcher erfahren" und "ja/nein" unmittelbar hintereinander eingetippt wurden?
        Wenn du es als indiziertes Array speicherst, sind die geraden Indizes (0, 2, 4, ...) die Fragen und die ungeraden (1, 3, 5, ...) die Antworten dazu. Die Antwort auf die Frage k erhältst du also, wenn du aus dem Array den Wert für den Index k+1 abrufst. So einfach ist das
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Sorry, versteh zwar was du meinst, aber grad nicht wie ich das auf mein Problem anweden muss.

          Nochmal das was ich wollte:

          Der Benutzer gibt ein "Erzähl mir etwas!".
          Der Bot antwortet automatisch (da er "Erzähl mir etwas!" kennt) "Möchtest du etwas über schwarze Löcher erfahren?".

          Danach soll überprüft werden ob der Benutzer "ja" oder "nein" eingibt.
          Daraufhin soll der Bot dann etwas entsprechendes Antworten.

          Und sowas soll dann auf die verschiedensten Fragen angewendet werden.

          Wenn ich das in ein indiziertes Array mach, würde das ja so aussehen:

          PHP-Code:
          $array = array ( 'Erzähl mir etwas!''Ja' ); 
          Und dann müsste ich ja überprüfen, ob zuerst $array[0] und danach $array[0+1] eingegeben wurde!?

          Ich weiß nicht ob mir das warme Wetter heute zugesetzt hat, aber so ganz hab ich das noch nicht verstanden

          Kommentar


          • #6
            Zitat von Hampelmann Beitrag anzeigen
            Wenn ich das in ein indiziertes Array mach, würde das ja so aussehen:

            PHP-Code:
            $array = array ( 'Erzähl mir etwas!''Ja' ); 
            Nein, dort stehen Fragen und Antworten aus dem aktuellen Gespräch drin (sagte ich bereits), ich meine nicht die verfügbaren Sätze, die du vorgegeben hast, also sieht das z. B. so aus:

            PHP-Code:
            0 Hallo
            1 Erzähl mir etwas
            !
            2 Möchtest du etwas über schwarze Löcher erfahren?
            3 Ja
            (Maschine)
            (Mensch)
            (Maschine)
            (Mensch)
            ... 
            Wenn du jetzt wissen willst, was Mensch auf 6 geantwortet hat, findest du das in 7.

            Damit hast du also den kompletten Gesprächsverlauf und kannst dich sogar an bereits gegebene Anworten "erinnern".

            Für die Entscheidungsfindung selbst brauchst du wahrscheinlich einen Entscheidungsbaum (decision tree), meinst du sowas? Das wird mir dann aber zu komplex für das Forum, da musst du dich dann selbst mal durch die einschlägige Literatur wühlen.

            Stichworte: Dialogsystem (dialog system), Turing-test, Entscheidungsbaum (decision tree)
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Ok danke, werd ich mich mal mit beschäftigen!

              Kommentar

              Lädt...
              X