[Funktion] funktioniert nicht...

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

  • [Funktion] funktioniert nicht...

    hallo

    PHP-Code:
        $p = ($_GET[p]=="") ? $_GET[p]; #$p ist die seite auf der man sich befindet..
        
    $db=mysql_connect('localhost','root','');
             
    mysql_select_db('cms',$db);    
        
    $sql_max="SELECT max(ebene) maximum FROM links;";
             
    $query_ebene=mysql_query($sql_max);
             
    $maximum_ebenemysql_fetch_array($query_ebene);
             
    $maximum_ebene$maximum_ebene[ebene];        #$maximum_ebene hat die höchste ebene gespeichert
             
             
    function all_children($startseite){
            
    $cdfg=$startseite;
            
    $counter=0;
            while(
    $counter<=$maximum_ebene){
                
    $p_in_e mysql_query("SELECT * FROM links WHERE ebene=$counter AND parent=$cdfg") or die(mysql_error());  
                while(
    $data=mysql_fetch_array($p_in_e)){
                    
    $child[] = "$ebene -> \"$data[id]\"";    #hier wird ins array geschrieben, welche einträge die hauptseite als mutterseite haben und auf welcher ebene dieses sind
                
    }
                
    $counter++;
            }
        }
        
    all_children(3);
        echo 
    implode(", "$child);    #explode oder implode? und stimmt $child 
    was ich hiermit bezwecken mag ist:
    er soll in $child speichern, welche einträge in der mysql-tabelle diese seite, die gerade angezeigt wird, als mutterseite haben...

    ich hoffe ich habe das verständlich aufgebaut und das ihr mir helfen könnt..
    wenn ihr etwas nicht versteht, sagt es mir einfach..
    die mysql_tabelle: siehe anhang...

    mfg thomas
    Angehängte Dateien
    [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

  • #2
    Welche Fehlermeldung kommt denn?
    Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
    (Albert Einstein)

    Kommentar


    • #3
      1. diese Zeile is verschwendung: $cdfg=$startseite;
      2. Dein $child bleibt in der Funktion Du solltest das mit return lösen...
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        $maximum_ebene ist im falschen gültigkeitsbereich, bzw brauchst du die variable in einer funktion wo sie nicht im gültigkeitsbereich steht => übergeben oder global machen

        achja: nach der funktion willst du $child weiterverwenden, wiederum falscher gültigkeitsbereich .. versuch mal return ..

        http://de.php.net/functions
        Zuletzt geändert von Coragon Rivito; 26.10.2003, 16:25.
        mfg,
        [color=#0080c0]Coragon[/color]

        Kommentar


        • #5
          ja stimmt: global und return weglassen... das kommt wahrscheinlich daher, dass ich selten eigene funktionen verwende....
          so: wenn ich aber jetzt alles in $child gespeichert habe, wie kann ich das machen, das er mir ausgibt den array ausgibt??
          mit implode oder explode???
          wenn ich echo implode(", ", $childe) schreibe sagt: Warning:implode: bad arguments

          mfg thomas
          [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

          Kommentar


          • #6
            Re: [Funktion] funktioniert nicht...

            PHP-Code:
                $p = ($_GET[p]=="") ? $_GET[p]; #$p ist die seite auf der man sich befindet..
                
            $db=mysql_connect('localhost','root','');
                     
            mysql_select_db('cms',$db);    
                
            $sql_max="SELECT max(ebene) maximum FROM links;";
                     
            $query_ebene=mysql_query($sql_max);
                     
            $maximum_ebenemysql_fetch_array($query_ebene);
                     
            $maximum_ebene$maximum_ebene[ebene];        #$maximum_ebene hat die höchste ebene gespeichert
                     
                     
            function all_children($startseite){
                              global 
            $maximum_ebene;
                    
            $cdfg=$startseite;
                    
            $counter=0;
                    while(
            $counter<=$maximum_ebene){
                        
            $p_in_e mysql_query("SELECT * FROM links WHERE ebene=$counter AND parent=$cdfg") or die(mysql_error());  
                        while(
            $data=mysql_fetch_array($p_in_e)){
                            
            $child[] = "$ebene -> \"$data[id]\"";    #hier wird ins array geschrieben, welche einträge die hauptseite als mutterseite haben und auf welcher ebene dieses sind
                        
            }
                        
            $counter++;
                    }
                      return 
            $child;
                }
                
            $child all_children(3);
                echo 
            implode(", "$child);    #explode oder implode? und stimmt $child 
            ungetestet!

            zu implode / explode: explode trennt einen string und macht ein array
            implode macht aus einem array ein string und verbindet die mit bestimmten zeichen
            deine fehlermeldung kommt, weil du kein array hast
            mfg

            Kommentar


            • #7
              was hast du eigentlich an meiner funktion verbessert???

              ich hab bei mir noch einen fehler entdeckt: es müsste heißen:
              $maximum_ebene = $maximum_ebene[maximum]

              mfg thomas
              [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

              Kommentar


              • #8
                schau dir einfach mein beispiel und deins an
                vergleichen wird nich so schwer sein

                global und return
                das kannst in der docu nachschalgen

                Kommentar


                • #9
                  ja stimmt...

                  ich hab nur deinen code mit dem offline verglichen, und dort hab ich es schon korrigiert... trotzdem danke, jetzt hab ich nämlich eine bestätigung ob ich das global und return richtig eingesetzt habe...
                  [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

                  Kommentar


                  • #10
                    2 all

                    naja... es hat sich einiges getan:
                    ursprünglich:
                    PHP-Code:
                    $p = ($_GET[p]=="") ? $_GET[p]; #$p ist die seite auf der man sich befindet..
                        
                    $db=mysql_connect('localhost','root','');
                             
                    mysql_select_db('cms',$db);    
                        
                    $sql_max="SELECT max(ebene) maximum FROM links;";
                             
                    $query_ebene=mysql_query($sql_max);
                             
                    $maximum_ebenemysql_fetch_array($query_ebene);
                             
                    $maximum_ebene$maximum_ebene[ebene];        #$maximum_ebene hat die höchste ebene gespeichert
                             
                             
                    function all_children($startseite){
                            
                    $cdfg=$startseite;
                            
                    $counter=0;
                            while(
                    $counter<=$maximum_ebene){
                                
                    $p_in_e mysql_query("SELECT * FROM links WHERE ebene=$counter AND parent=$cdfg") or die(mysql_error());  
                                while(
                    $data=mysql_fetch_array($p_in_e)){
                                    
                    $child[] = "$ebene -> \"$data[id]\"";    #hier wird ins array geschrieben, welche einträge die hauptseite als mutterseite haben und auf welcher ebene dieses sind
                                
                    }
                                
                    $counter++;
                            }
                        }
                        
                    all_children(3);
                        echo 
                    implode(", "$child);    #explode oder implode? und stimmt $child 
                    der jetzige funktionierende:
                    PHP-Code:
                        $p = ($_GET[p]=="") ? $_GET[p];
                        
                    $db=mysql_connect('localhost','root','');
                             
                    mysql_select_db('cms',$db);    
                        
                    $sql_max="SELECT max(ebene) maximum FROM links;";
                             
                    $query_ebene=mysql_query($sql_max);
                             
                    $maximum_ebenemysql_fetch_array($query_ebene);
                             
                    $maximum_ebene$maximum_ebene[maximum];        #$maximum_ebene hat die höchste ebene gespeichert
                             
                             
                    function all_children(){
                                 global 
                    $maximum_ebene;
                                 global 
                    $p;
                            
                    $cdfg=$p;
                            
                    $counter=0;
                            while(
                    $counter<=$maximum_ebene){
                                
                    $p_in_e mysql_query("SELECT * FROM links WHERE ebene=$counter AND parent=$cdfg") or die(mysql_error());  
                                while(
                    $data=mysql_fetch_array($p_in_e)){;
                                    
                    $child[] .= "$counter -> \"" $data[page] . "\"";    #hier wird ins array geschrieben, welche einträge die hauptseite als mutterseite haben und auf welcher ebene dieses sind
                                    
                    echo "Ebene: $counter - Seite: $data[page] - Name: $data[name] - parent: $data[parent] <br>";
                                }
                                
                    $counter++;            
                            }
                            return 
                    $child;
                        }
                        
                    $child all_children();
                        echo 
                    implode(", "$child); 
                    mfg thomas
                    [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

                    Kommentar

                    Lädt...
                    X