problem mit der klasse...keine abfragen werden abgeschickt

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

  • problem mit der klasse...keine abfragen werden abgeschickt

    hallo,

    ich habe eine klasse für mysql wo die verbindung zur DB erfolgt. dann habe ich noch ne klasse tree:

    include("class_mysql.php");

    class tree extends db{

    function select_submenu($mid){

    $sql = "SELECT a.node_id , a.lft , a.rgt , a.payload
    FROM node AS a
    INNER JOIN node AS b ON (a.lft <= b.lft AND a.rgt >= b.rgt)
    WHERE b.node_id = '".$mid."'
    ORDER BY a.lft";
    $res = $this->sql($sql);
    $level = 2;
    $submenu = "level <= $level";
    while($row = mysql_fetch_array($res)){

    if($level > 2){
    $submenu .= " OR (L > ".$row['lft']." AND R < ".$row['rgt']." AND level = ".$level.")";
    }
    $level++;
    }
    return $submenu;

    }
    }

    in der datei tree.php rufe ich die funktion auf:

    <?
    include("classes/class_tree.php");
    $tree = new tree;
    echo $tree -> select_submenu(12);
    ?>

    jedesmal bekomm ich jetzt ne fehlermeldung, das die abfrage nicht abgeschickt werden konnte.

    hat da jemand en tip?

  • #2
    kann es sein, dass der konstruktor (der vermutlich die verbindung aufbaut) nicht ausgeführt wird?

    Kommentar


    • #3
      vielen dank

      stimmt den hab ich im hauptprogramm vergessen. so konnte ja keine verbindung zustandekommen.

      hätte noch was anderes:

      ich möchte gern innerhalb der klasse einen select ausführen und das ergebnis abspeichern...in nem array.

      nur wie bekomm ich die werte dann wieder ins hauptprogramm damit ich sie anzeigen kann?

      Kommentar


      • #4
        return???

        Kommentar


        • #5
          ich geb also das array zurück.

          gibt es denn noch ne bessere möglichkeit ein zweidimensionals array auszulesen als mit 2 ineinander geschachtelten foreach-schleifen?
          ich bekomm ja als rückgabewert ein solches array zurück nachdem ich das select ausgeführt habe

          Kommentar


          • #6
            ich geb also das array zurück.
            Jup!


            gibt es denn noch ne bessere möglichkeit ein zweidimensionals array auszulesen als mit 2 ineinander geschachtelten foreach-schleifen?
            Nicht das ich wüsste...


            ich bekomm ja als rückgabewert ein solches array zurück nachdem ich das select ausgeführt habe
            Das hast du gut gemerkt
            PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

            Kommentar


            • #7
              jetzt hab ich das mit dem array hinbekommen.

              gibt es denn auch ne möglichkeit gleich innerhalb der klasse das alles noch in ne tabelle zu bringen. nur wo setz ich dann die tags hin?

              Kommentar


              • #8
                du kannst das, was du außerhalb der klasse mit dem funktionsergebnis machst auch innerhalb der funktion machen, oder meinst du was anderes als:
                PHP-Code:
                function xyz()
                {
                  return 
                'rot';
                }

                $text=xyz();
                echo 
                '<span style="color:red;">';
                echo 
                $text;
                echo 
                '</span>';

                function 
                xyz2()
                {
                  return 
                '<span style="color:red;">rot</span>';
                }

                echo 
                xyz2(); 
                ?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  so in der art meine ich das schon, nur wie mache ich das, wenn ich wie in meinem fall als return-wert ein array habe?

                  Kommentar


                  • #10
                    [ ] du hast das prinzip verstanden

                    ich hab nur den code, der der das funktionsergebnis verarbeitet, in die funktion gepackt
                    dabei isses doch egal, ob die funktion nen string oder ein array liefert...
                    PHP-Code:
                    function foo()
                    {
                      return array(
                    'b''r''a''i''n');
                    }

                    echo 
                    implode(''foo());

                    function 
                    bar()
                    {
                      return 
                    implode('', array('b''r''a''i''n'));
                    }

                    echo 
                    bar(); 
                    jetzt aber, oder doch nicht?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      ja so kommt das hin, wie ichs meine.
                      sorry wenn ich nochmal fragen muss, aber ich erhalte ja aus der DB-Abfrage ein zweidimensionales array zurück.
                      ich glaub das wird dann doch etwas schwieriger oder hast du da noch en tip? es soll ja im endeffekt so sein, das ich im hauptprogramm ne funktion aufrufe

                      $tree- > showmenu(id);

                      und dann soll ne komplette tabelle tabelle dargestellt werden.
                      Vielleicht ist es auch besser ich machs ausserhalb der klasse, aber im hinblick auf die flexibilität von meiner navigation könnte man ja alles in der klasse lassen, sonst müsste ich ja jedesmal wieder neu ne tabelle machen.

                      Kommentar


                      • #12
                        ich hab leider keinen zucker mehr da, sonst würd ich dir den auch noch wohin blasen

                        isses so schwer, das zu transferieren?

                        poste mal deinen momentanen ocde zur erstellung der tabelle, dann schauen wir mal
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          sorry wenn ichs ni so schnell raffe. hier mal die klasse

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

                          class tree extends db{

                               function select_submenu($mid){

                                      $sql = "SELECT a.node_id , a.lft , a.rgt , a.payload
                                              FROM node AS a
                                              INNER JOIN node AS b ON (a.lft <= b.lft AND a.rgt >= b.rgt)
                                              WHERE b.node_id = '$mid'
                                              ORDER BY a.lft"; 
                                     
                                      $res=$this->sql($sql);

                                      $level = 2;

                                      $submenu = "level <= $level";

                                      while($row = mysql_fetch_array($res)){

                                           if($level > 2){

                                             $submenu .= " OR (L > ".$row['lft']." AND R < ".$row['rgt']." AND level = ".$level.")";

                                           }

                                           $level++; 

                                      }

                                        return $submenu; 

                                      
                                 }

                              

                                 function show_menu($mid){

                                         $sql = "SELECT pages1.lft AS L, pages1.rgt AS R, 
                                                CONCAT(LPAD(pages1.node_id, 2 ,' '),
                                                REPEAT('  .', COUNT(*) ),
                                                pages1.payload) AS Baum ,
                                                pages1.node_id AS mid,
                                                COUNT(*) AS level
                           
                                                FROM node AS pages1, node AS pages2
                                                WHERE pages1.lft BETWEEN pages2.lft AND pages2.rgt AND pages1.lft > '1'
                                                GROUP BY pages1.lft 
                                                HAVING ".$this -> select_submenu($mid);   

                                         $res = $this -> sql($sql);

                                         while($row = mysql_fetch_array($res)){
                                               
                                             $menu_arr[]=$row;
                                             
                                         }

                                         //hier muss irgendwie die tabelle rein um die dann zurückzugeben
                                             return implode('###',implode('##',$menu_arr)); 

                                  } 

                                      

                          }

                           

                          ?>

                          Kommentar


                          • #14
                            Original geschrieben von mrhappiness
                            zur erstellung der tabelle
                            und bring zucker mit
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              so nu kanns ja losgehen. code hab ich gepostet

                              Kommentar

                              Lädt...
                              X