Shadowcrow: Ausgabe Array und Aufbau Tabelle

hi $name,

irgendwie habe ich mich gedanklich total verfranzt :-(

ich möchte eine tabelle erstellen, der inhalt soll aus einem array kommen.
das array habe ich so erstellt:

  
$test = array(  
array('2007', 'titel1', 'text1', 'bla1', "$prod"), //inhalt tabellenzeile 1  
array('2007', 'titel2', 'text2', 'bla2', "$prod"), //inhalt tabellenzeile 2  
array('2006', 'titel3', 'text3', 'bla3', "$prod"), //inhalt tabellenzeile 3  
);  

wenn ich mir das mit print_r ausgeben lasse sieht es auch so aus wie ich mir das vorstelle NUR wie bekomme ich das array ausgelesen? wenn ich

  
echo "Ausgabe des Arrays:\n";  
foreach ($test as $value) {  
    echo $value."\n";  
}  

benutze ist die ausgabe nur: Array Array

nachdem ich das geändert habe in:

  
$i="0";  
foreach ($test[$i++] as $value) {  
    echo $value."\n";  
}  

sah die sache schon besser aus: 2007 titel1 text1 bla1 REPEAT
aber immer noch nicht das was ich haben möchte, die gesamte ausgabe des arrays um damit eine tabelle aufzubauen. irgendwie stehe ich gedanklich auf dem schlauch ich weiß einfach nicht wie ich das array ausgeben soll, außerdem ist da ja noch das problem das html für die tabelle (möglichst elegant) in die ausgabe zu packen und wäre für ein paar tips dankbar.

gruss
shadow

--
Programmers don´t die, they GOSUB without RETURN.
Quelle: unbekannt
  1. Servus,

    du benötigst pro Dimension eine Schleife.

    Gruss
    Patrick

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
    1. hi $name,

      du benötigst pro Dimension eine Schleife.

      ok, danke. so in etwa?:

        
      $z = 0;  
      $anzahl = count($test);  
      $anzahl = $anzahl+1;  
        
      for ($i=0; $i<$anzahl; i++) {  
        
      foreach ($test[$z++] as $value) {  
          echo $value."\n";  
      };  
      } 
      

      nicht das es funktionieren würde :-( irgenwo hab ich da einen syntaxfehler drin *grummel* und draufstarren macht es nicht besser.

      gruss
      shadow

      --
      Programmers don´t die, they GOSUB without RETURN.
      Quelle: unbekannt
  2. Hallo

    code lang=php]

    $test = array(
    array('2007', 'titel1', 'text1', 'bla1', "$prod"), //inhalt tabellenzeile 1
    array('2007', 'titel2', 'text2', 'bla2', "$prod"), //inhalt tabellenzeile 2
    array('2006', 'titel3', 'text3', 'bla3', "$prod"), //inhalt tabellenzeile 3
    );
    [/code]

    wenn ich mir das mit print_r ausgeben lasse sieht es auch so aus wie ich mir das vorstelle NUR wie bekomme ich das array ausgelesen? wenn ich

    echo "Ausgabe des Arrays:\n";
    foreach ($test as $value) {
        // Gebe Zeile aus, Inhalt der Zeile findet sich im Array $test ...
    }

      
    Wo ist Dein Problem, eine kleine Funktion zu bauen, der Du ein Array übergibst und die eine Zeile ausgibt?  
      
      
    Freundliche Grüße  
      
    Vinzenz
    
    1. hi $name,

      Wo ist Dein Problem, eine kleine Funktion zu bauen, der Du ein Array übergibst und die eine Zeile ausgibt?

      gute frage, vlt. weil ich als anfänger gerade beginne mich durch die untiefen von php zu kämpfen :-(

      gruss
      shadow

      --
      Programmers don´t die, they GOSUB without RETURN.
      Quelle: unbekannt
      1. Hallo

        Wo ist Dein Problem, eine kleine Funktion zu bauen, der Du ein Array übergibst und die eine Zeile ausgibt?

        gute frage, vlt. weil ich als anfänger gerade beginne mich durch die untiefen von php zu kämpfen :-(

          
        /**  
         * create_table_row  
         *  
         * @param $arr_values Array der Inhalte  
         *  
         * Aufgabe: schreibt jeden einzelnen Wert des Arrays in eine Tabellenzelle  
         *          Gibt eine Zeichenkette zurück, deren Inhalt eine fertige  
         *          HTML-Tabellenzeile darstellt.  
         */  
        create_table_row($arr_values) {  
            // Eine Tabellenzeile beginnt mit einem <tr>  
            $output = '<tr>';  
          
            // Für jeden Wert im Array müssen wir eine Tabellenzelle erzeugen  
            for each ($arr_values as $value) {  
                // Eine Tabellenzelle beginnt mit <td>  
                $output .= '<td>';  
          
                // Du benötigst den Inhalt  
                $output .= $value;  
                // Achtung: Falls der Inhalt aus nichtvertrauenswürdiger Quelle  
                // kommt, solltest Du diesen mit htmlspecialchars() behandeln.  
                // $output .= htmlspecialchars($value);  
          
                // Schließe die Zelle  
                $output .= '</td>';  
             }  
          
             // Beende die Tabellenzeile  
             $output .= '</tr>';  
          
             return $output;  
        }  
        
        

        Weitere Anmerkungen:
        Du könntest diese bisher nicht besonders flexible Funktion noch um die Möglichkeiten erweitern, statt td-Elementen th-Elemente zu erzeugen, dem tr-Element eine Klasse oder eine id zu verpassen, die td/th-Elemente mit einer Klasse auszustatten, ...
        Gerne kannst Du es auch ganz anders lösen.

        Anfänger sollten sehr schnell zu dem Punkt kommen, die Gesamtaufgabe in kleinere, überschaubarere Häppchen aufzuteilen. Solche Häppchen erledigt eine Funktion. Ohne das Funktionsprinzip verstanden zu haben, kann man meiner persönlichen Meinung nach auch nicht objektorientiert programmieren. Und da solltest Du hinwollen :-)

        Freundliche Grüße

        Vinzenz

        1. hi $name,

          Weitere Anmerkungen:
          Du könntest diese bisher nicht besonders flexible Funktion noch um die Möglichkeiten erweitern, statt td-Elementen th-Elemente zu erzeugen, dem tr-Element eine Klasse oder eine id zu verpassen, die td/th-Elemente mit einer Klasse auszustatten, ...

          danke :-))
          ja, das werde ich machen (müssen) damit die tabelle in das design passt, bzw. so aussieht wie die tabelle jetzt ("zu fuss" erstellte).

          Anfänger sollten sehr schnell zu dem Punkt kommen, die Gesamtaufgabe in kleinere, überschaubarere Häppchen aufzuteilen. Solche Häppchen erledigt eine Funktion. Ohne das Funktionsprinzip verstanden zu haben, kann man meiner persönlichen Meinung nach auch nicht objektorientiert programmieren. Und da solltest Du hinwollen :-)

          stimmt, ich werd mir das (nochmal) zu gemüte führen. ich fürchte damit habe ich noch arge probleme.

          nur bekomme ich einen syntax error : Parse error: syntax error, unexpected '(' in C:\xampp\htdocs\ref.php on line 36

          36   create_table_row{$arr_values} (

          und ich frag mich was ihm an der klammer denn nicht gefällt *ratlos*

          gruss
          shadow

          --
          Programmers don´t die, they GOSUB without RETURN.
          Quelle: unbekannt
          1. Hallo Shadowcrow,

            nur bekomme ich einen syntax error : Parse error: syntax error, unexpected '(' in C:\xampp\htdocs\ref.php on line 36

            36   create_table_row{$arr_values} (

            und ich frag mich was ihm an der klammer denn nicht gefällt *ratlos*

            die Parameterliste einer Funktion ist in runde Klammern zu setzen - sowohl bei der Funktionsdefinition als auch beim Aufruf. Der Anweisungsblock einer Funktion  wie jeder Block in geschweifte Klammern. Irgendwie hast Du das verwechselt.

            Freundliche Grüße

            Vinzenz

            1. hi $name,

              die Parameterliste einer Funktion ist in runde Klammern zu setzen - sowohl bei der Funktionsdefinition als auch beim Aufruf. Der Anweisungsblock einer Funktion  wie jeder Block in geschweifte Klammern. Irgendwie hast Du das verwechselt.

              neee.
              1. hatte ich deinen code kopiert und nachdem die fehlermeldung kam hab ich die klammern überprüft AFAIK stimmen die.

              create_table_row($arr_values) //runde klammern { //geschweifte klammer

              gruss
              shadow

              --
              Programmers don´t die, they GOSUB without RETURN.
              Quelle: unbekannt
              1. hi $name,

                *hmpf* das mit der klammer hat sich jetzt gelegt,

                aber wenn ich mir mit var_dump ($output); den inhalt ausgeben lasse bekomme ich als ergebnis NULL. also ist die variable leer?

                gruss
                shadow

                --
                Programmers don´t die, they GOSUB without RETURN.
                Quelle: unbekannt
                1. Hi,

                  aber wenn ich mir mit var_dump ($output); den inhalt ausgeben lasse bekomme ich als ergebnis NULL. also ist die variable leer?

                  *In* der Funktion - oder *ausserhalb* ...?

                  MfG ChrisB

                  1. hi $name,

                    außerhalb

                    gruss
                    shadow

                    --
                    Programmers don´t die, they GOSUB without RETURN.
                    Quelle: unbekannt
                    1. Hi,

                      außerhalb

                      Und wo ausserhalb hast du zuvor eine Variable namens $output definiert?

                      Du moechtest dich mit dem Geltungsbereich von Variablen beschaeftigen.
                      Und mit Funktionen und insb. ihren Rueckgabewerten wohl auch.

                      MfG ChrisB

                      1. hi $name,

                        Hi,

                        außerhalb

                        Und wo ausserhalb hast du zuvor eine Variable namens $output definiert?

                        Du moechtest dich mit dem Geltungsbereich von Variablen beschaeftigen.
                        Und mit Funktionen und insb. ihren Rueckgabewerten wohl auch.

                        hab ich, $output ist doch der rückgabewert der funktion create_table_row, oder? und sollte doch außerhalb der funktion zur verfügung stehen?

                        gruss
                        shadow

                        --
                        Programmers don´t die, they GOSUB without RETURN.
                        Quelle: unbekannt
                        1. Hi,

                          Du moechtest dich mit dem Geltungsbereich von Variablen beschaeftigen.
                          Und mit Funktionen und insb. ihren Rueckgabewerten wohl auch.

                          hab ich,

                          Dann hast du's noch nicht verstanden ... also noch mal lesen.

                          $output ist doch der rückgabewert der funktion create_table_row, oder?

                          Innerhalb der Funktion ist eine Variable namens $output definiert, und deren Inhalt wird am Ende mittels return an die aufrufende Stelle zurueckgegeben, ja.

                          und sollte doch außerhalb der funktion zur verfügung stehen?

                          Nein, warum sollte sie?
                          Sie ist innerhalb der Funktion definiert, existiert also auch nur dort.

                          MfG ChrisB

                          1. hi $name,

                            hab ich,

                            Dann hast du's noch nicht verstanden ... also noch mal lesen.

                            werd ich machen. btw. hat es irgendeinen einfluß wenn register_globals auf on ist? bei mir lokal ist es auf off (wohlweislich) aber auf dem server ist es on.

                            Innerhalb der Funktion ist eine Variable namens $output definiert, und deren Inhalt wird am Ende mittels return an die aufrufende Stelle zurueckgegeben, ja.

                            aber auch wenn ich die funktion aufrufe kommt müll raus - irgendwas geht mir da ab :-(

                            und sollte doch außerhalb der funktion zur verfügung stehen?

                            gute frage

                            ich hab das jetzt anders gelößt (was funktionen angeht muss ich noch einiges nachlesen) und es funktioniert auch (fast):

                              
                            $anzahl = count($referenzen);  
                            $anzahl = $anzahl+1;  
                              
                            for($i=0; $i<$anzahl; $i++)  
                                {  
                              
                                echo '<tr>';  
                              
                                foreach ($referenzen[$i] as $value) {  
                              
                                    echo  '<td>';  
                              
                                    echo  "$value";  
                              
                                    echo  '</td>';  
                              
                                 }  
                              
                               echo  '</tr>'  
                            
                            

                            und es macht auch das was es soll :-)) Nur kommt die warning nvalid argument supplied for foreach().
                            ok, soweit so gut, aber wenn der wert nicht stimmt warum wird dann alles wunschgemäß angezeigt?

                            gruss
                            shadow

                            --
                            Programmers don´t die, they GOSUB without RETURN.
                            Quelle: unbekannt
  3. hi $name,

    also manchmal bin ich einfach zu blöd. ich habs jetzt geschafft (inkl. abwechselnd farbiger tabellenzeilen - ohne irgendwelche fehlermeldungen) als ich mir das fertige ergebnis ansah hab ich mir nur an den kopf gegriffen unbegreiflich das ich damit so schwierigkeiten hatte. danke nochmal an alle für die hilfe :-).

    gruss
    shadow

    --
    Programmers don´t die, they GOSUB without RETURN.
    Quelle: unbekannt