[MSSQL] MySQL, PHP , Rekursive Funktion

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

  • [MSSQL] MySQL, PHP , Rekursive Funktion

    Hallo,
    Mein Problem: ich versuche eine sich verzweigende Abfrage in der MySQL DB zu starten.
    Z.B., ein Tier=>Hund,KAtze=>Hund/Bob,Katze/Miri
    Wie man schon sieht, bei der Abfrage wird nur ein Zweig bearbeitet, Tier, Katze, Miri. Ich möchte aber alle Ergebnisse Auch Hund/Bob erhalten.
    Wie kann man das erziehlen? Ich wollte eine rekursive Funktion dazu schreiben, ging aber in PHP nicht. Ich nehme an, dass ist ein Problem der SQL-Abfrage.
    Hat schon jemand ein ähnliches Problem gelöst?
    Danke,
    Jeni

  • #2
    Denk am besten nochmal nach, was du genau machen willst und formuliere das so, dass es auch jemand außer dir versteht.
    Dann beschreibe mal genau, was du schon versucht hast, und was genau daran nicht funktioniert hat.
    Dann poste mal dein DB-Layout und deine bisherigen Abfragen.
    hopka.net!

    Kommentar


    • #3
      erklärung

      Hallo,
      danke für den Hinweis. Jetzt will ich verständlicher sein.
      In einer php Funktion schreibe ich folgendes (Die DB ist OK,denn ohne der Funktion läuft alles) :

      ........
      foreach($arr as $key=>$elem){

      function rek($elem){
      $result=mysql("$db","SELECT Wort FROM $tab WHERE Upper LIKE '%$elem'or Link LIKE '%$elem'");
      if(empty ($result)){
      // alternativ$ru=mysql_num_rows($result); if($ru==0){
      while($res=mysql_fetch_array($result,MYSQL_ASSOC)){
      foreach($res as $el){ $A[++$i]=$el; }
      }return $A;
      }
      }//

      }
      }
      } rek($elem); //Aufruf der rekursiven Funktion außerhalb Bedingung, wo sie definiert wurde. Ich möchte einen Array zur Abfrage kriegen, stattdessen kriege ich eine Meldung: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in .\Scripte php4\sem.php3 on line 26

      Das passiert auch,wenn ich die Funktion von außen als eine Datei anbinde und aufrufe.
      Kann man heir etwas tun?
      Danke,
      Jeni

      Kommentar


      • #4
        Gut, erstmal das hier lesen (besonders den Part über mySQL):
        http://www.php-resource.de/forum/sho...threadid=47906

        Die Funktion mysql kenne ich übrigens gar nicht.

        Was willst du mit deinem Code bezwecken - welchem Zweck dient das ganze?
        hopka.net!

        Kommentar


        • #5
          Noch eine Frage

          Vielen Dank für den Hinweis, es läuft!!!

          Ich bekam aber ein Problemchen. Wenn ich jetzt zweite rekursive Funktion deklarieren versuche, bekomme ich die Meldung:

          Fatal error: Cannot redeclare nun() (previously declared in ....Scripte php4\semsuche.php3:29) in ....Scripte php4\semsuche.php3 on line 29

          Ich verstehe nicht ,wie meint er das, dass ich die Funktion schon früher deklariert habe, wenn sie zum ersten mal im Script vorkommt.
          Woran kann es liegen?

          Kommentar


          • #6
            vermutlich versuchst du zweimal die Datei zu includen, in der die Funktion deklariert wird.
            hopka.net!

            Kommentar


            • #7
              MySQl Abfrage

              jetzt läuft es gut.
              wenn ich meine Abrage so formuliere und , z.B. nach dem Wort "auto"suche
              "$db","SELECT distinct X FROM $tab WHERE Y LIKE '%$elem'

              dann finde ich selbstverständlich nur das Wort "auto" und nicht "Autos". Was soll ich in der Abfrage('%$elem' ) ändern, damit auto und autos gefunden werden?
              Danke

              Kommentar


              • #8
                wende den Wildcard % richtig an, dann funz auch. Tipp: macht's dir klar was like '%auto' bedeutet, dann wirst du schon drauf kommen.

                Kommentar


                • #9
                  PHP-Code:

                  function rek($elem){
                    
                  $result=mysql("$db","SELECT Wort FROM $tab
                      WHERE Upper LIKE '%
                  $elem'or Link LIKE '%$elem'"); 
                    if(empty (
                  $result)){
                      while(
                  $res=mysql_fetch_array($result,MYSQL_ASSOC)){
                        foreach(
                  $res as $el){ 
                          
                  $A[++$i]=$el
                        } 
                      }
                      return 
                  $A;
                    } 

                  erm .... btw. denk bitte nochmal über die Definition "rekursive Funktion" nach ... das da ist jedenfalls keine !
                  Rock on, Chummers
                  DrNorton

                  Kommentar


                  • #10
                    Danke für Tipps.
                    Ich habe natürlich auch so ausprobiert:
                    $result=mysql("$db","SELECT distinct Wort FROM $tab WHERE X LIKE '%$elem%'or Y LIKE '%$elem%'");
                    Geht nicht. Autos werden trotz %auto% hier nicht gefunden.
                    P.S. mysql ()ist eigene Funktion.

                    Kommentar


                    • #11
                      - was liefert mysql() zurück?
                      - schau dir mal an:
                      PHP-Code:
                      if(empty ($result)){ ... 

                      Kommentar


                      • #12
                        Habe nachgeschaut. Empty, d.h. nichts gefunden...
                        %% scheint nicht zu funktionieren.

                        Kommentar


                        • #13
                          Original geschrieben von jeni
                          Geht nicht. Autos werden trotz %auto% hier nicht gefunden.
                          case-sensitiven vergleich durchgeführt?
                          (blob statt text?)
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            ich habe das Wort auto statt $elem eingetragen. Und so funktioniert es. Aber damit kann ich wenig anfangen. Ich brauche Variablen.

                            Kommentar


                            • #15
                              zeige mal die Funktion mysql(), oder in der Funktion den 2. Parameter mal per echo ausgeben und hier posten. Ansonsten hilft dir mysql_error() gern bei der Suche nach Fehler.

                              Kommentar

                              Lädt...
                              X