Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] In String nach einem Wort suchen -> MySQL Query durchführen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] In String nach einem Wort suchen -> MySQL Query durchführen

    Hallo an alle, bin neu hier im forum.

    Bräuchte eure hilfe. Komme leider nicht mehr weiter an meinem PHP script.

    Mein Ziel ist es, in einem Text bestimmte wörter zu erkennen und dementsprechend eine MySQL Query durchführen.

    Ich habe eine mysql datenbank mit bildern, eine sehr einfache.

    Wenn mein Text zB das Word foto-33 beinhaltet soll er von der Datenbank informationen zur foto id 33 geben.

    Beispiel:
    "Am Bild unten erkennt man bla bla bla.

    foto-33"
    Statt foto-33 soll dort natürlich von der Datenbank infos von der 33. id geholt werden.


    Was ich alles versucht habe?
    Ich habe versucht das ganze mit funktionen zu lösen in dem ich str_replace ausprobiert habe.

    PHP-Code:
    $content "Am Bild unten erkennt man bla bla bla. foto-33";

    function 
    abfrage($text) {
      
    $old = array("foto-");
      
    $new = array("");
      
    $text str_replace($old,$new,$text);
      return 
    $text;
    }    

    $ausgabe abfrage($content);
    echo 
    $ausgabe
    Natürlich ist der code oben nicht genüden.

    Ich habe dann die funktion explode gefunden, aber leider ist das auch nicht die richtige lösung für mich glaube ich.

    Wer kann mir da weiterhelfen, wenigstens tipps geben.
    Vielen dank schonaml


  • #2
    Ich denke die sinnvollste Möglichkeit wären hier Regular Expression, weil sich ja doch immer zumindest die Bildnummer ändert.

    Manual -> preg_match();
    Manual -> preg_replace();
    und falls Du Dir das zutraust, könnte Manual -> preg_replace_callback(); was für Dich sein.

    Als Einsteiger sind die RegEx allerdings ziemlich verwirrend und schwer zu verstehen.
    Mußt mal sehen, ob Du damit klar kommst.

    Ein imho gutes Tutorial zu RegularExpressions gibts hier.
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Etwas leichter würd es so gehen:

      <?php
      $content = "Am Bild unten erkennt man bla bla bla. foto-32";

      function abfrage($text) {
      $foto = strrchr ( $text, 'foto' );
      $fotoId = explode("-",$foto);
      return $fotoId[1];
      }

      $ausgabe = abfrage($content);
      echo $ausgabe;

      ?>

      So bekommst nur noch die id (also hier 32) heraus, dann baust einfach noch die Variable $ausgabe in eine SQL-Abfrage ein.

      Kommentar


      • #4
        hier das müsste gehn:
        PHP-Code:
        <?php
        $content 
        "Am Bild unten erkennt man bla bla bla. foto-32";
        $matches = array();
        preg_match_all('!foto-(.+\d)!'$content$matches)    ;
        echo 
        '<pre>'.print_r($matches,1).'</pre>';
        Ausgabe:
        PHP-Code:
        Array
        (
            [
        0] => Array
                (
                    [
        0] => foto-32
                
        )

            [
        1] => Array
                (
                    [
        0] => 32
                
        )

        "My software never has bugs, it just develops random features."
        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

        Kommentar


        • #5
          Zitat von Fredl
          So bekommst nur noch die id (also hier 32) heraus, dann baust einfach noch die Variable $ausgabe in eine SQL-Abfrage ein.
          Korrekt, solange der String hinter der bildnummer direkt abgeschlossen ist!
          Ansonsten kommst Du damit nicht weit!
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Zitat von Arne Drews Beitrag anzeigen
            Korrekt, solange der String hinter der bildnummer direkt abgeschlossen ist!
            Ansonsten kommst Du damit nicht weit!

            Stimmt, das hab ich gar nicht bedacht

            Kommentar


            • #7
              Paul.Schramenko, ich glaube dein Code würde mir da weiterhelfen.

              Aber wie sieht es aus wenn es nach dem begriff foto-id im String weitergeht?
              zB.:

              PHP-Code:
              $content "Am Bild unten erkennt man bla bla bla. foto-32 Das bild oben zeigt bla bla bla. Und dieses hier hier zeigt bla  bla bla foto-40";
              $matches = array();
              preg_match_all('!foto-(.+\d)!'$content$matches)    ;
              echo 
              '<pre>'.print_r($matches,1).'</pre>'
              Die Ausgabe is dann

              PHP-Code:
              Array
              (
                  [
              0] => Array
                      (
                          [
              0] => foto-32 Das bild oben zeigt bla bla blaUnd dieses hier hier zeigt bla  bla bla foto-40
                      
              )

                  [
              1] => Array
                      (
                          [
              0] => 32 Das bild oben zeigt bla bla blaUnd dieses hier hier zeigt bla  bla bla foto-40
                      
              )


              Vielen dank für eure Hilfe.

              Kommentar


              • #8
                Google: Greedyness.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Google: Greedyness.
                  Meinst du das da hier zB?
                  Finer points of PHP regular expressions

                  Kommentar


                  • #10
                    Reicht nicht einfach sowas?!

                    PHP-Code:
                    <?php
                    $string 
                    = <<<STRING
                    Auf foto-33 seht ihr wie ein Frosch ueber die Strasse huepft, auf foto-34 ist er dann platt.
                    STRING;

                    function 
                    fotoSearch(array $matches) {
                      return 
                    "photo-" $matches[1];
                    }

                    echo 
                    preg_replace_callback("/foto-(\d+)/""fotoSearch"$string);
                    ?>
                    "Mein Name ist Lohse, ich kaufe hier ein."

                    Kommentar


                    • #11
                      Chriz, in deinem Beispiel bekomme ich leider einen Fehler:
                      Parse error: syntax error, unexpected $end in test.php on line 11
                      Wo ist dann eigentlich meine photo id gespeichert? in $matches[1]?
                      Weil ich brauche Sie ja für meine datenbank abfrage
                      PHP-Code:
                      $query mysql_query("SELECT * FROM fotos WHERE id = '".$matches[1]."'"); 
                      ?

                      Kommentar


                      • #12
                        Fehlermeldung googlen kriegst Du aber hin?
                        Parse error: syntax error, unexpected

                        Hat in den meisten Fällen etwas damit zu tun, daß irgendwo ein Semikolon oder eine geschweifte Block-Klammer fehlt.
                        Die besten Chancen, den Fehler zu finden hast Du entsprechend der Meldung im Bereich der Zeile 11.
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          Wo ist dann eigentlich meine photo id gespeichert? in $matches[1]?
                          Und das braucht man auch nicht fragen, sondern man guckt einfach nach. mit var_dump z.B.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Zitat von markiloy Beitrag anzeigen
                            Chriz, in deinem Beispiel bekomme ich leider einen Fehler:
                            Entsprechend korrigiert mein Beitrag.


                            Wo ist dann eigentlich meine photo id gespeichert? in $matches[1]?
                            Weil ich brauche Sie ja für meine datenbank abfrage
                            PHP-Code:
                            $query mysql_query("SELECT * FROM fotos WHERE id = '".$matches[1]."'"); 
                            ?
                            Worauf solls jetzt hinauslaufen? Wir koennen noch einige Tage damit verbringen, dir gelegentlich einen Manuallink hinzuwerfen, oder du testest einfach mal selber los. Wenn dir Debuggen und die grundlegenden Techniken (das Wort ist schon fast eine Uebertreibung) nicht bekannt sind wirst du es hier im Forum sehr sehr schwer haben. Vielleicht hilft dir ja das: Google. Klingt doof, is aber so...
                            "Mein Name ist Lohse, ich kaufe hier ein."

                            Kommentar


                            • #15
                              Tut mir leid, wenn ich mich da super auskennen würde, hätte ich es ja nicht in einem Einsteiger forum gepostet.
                              Habe jetzt die lösung irgendwie hinbekommen und möchte mein code mit euch teilen.

                              Vielen dank für die Hilfe.

                              PHP-Code:
                              <?php
                              include ("dbconnect.php");

                              $string "Auf foto-6 seht ihr wie ein Frosch ueber die Strasse huepft, auf foto-3 ist er dann platt.";

                              function 
                              fotoSearch($matches) {
                              $db mysql_query("SELECT * FROM fotos WHERE foto_id = '".$matches[1]."' LIMIT 1");
                              $daten mysql_fetch_array($db);
                              $output "<br /><img src=".$daten['fotourl']." /></br>";
                                return 
                              $output;
                              }
                              echo 
                              preg_replace_callback("/foto-(\d+)/""fotoSearch"$string);
                              ?>

                              Kommentar

                              Lädt...
                              X