php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.01.2012, 13:37  
Neuer Benutzer
 
Registriert seit: 11.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
peter8500 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank fürs vorlesen Dark Gurdian. Ich krieg es nicht auf die Reihe (Kaffee kocht schon, vielleicht liegt es daran). Sorry nochmals. Ich möchte ein Verzeichnis auslesen und eine Liste mit den darunterliegenden Unterordnern in einer HTML-Tabelle anzeigen lassen.

So

Ordner 1 Ordner2
Unterordner1 Unterordner1
Unterordner2 Unterordner2
Unterordner 3 Unterordner3

Mehr eigentlich nicht... ich krieg es nicht gebacken... DANKE euch nochmal.
peter8500 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.01.2012, 13:37  
Neuer Benutzer
 
Registriert seit: 11.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
peter8500 befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:

<table border="1">

<?php 

foreach ($it as $key => $value)
{
if (
$it->getDepth() ==1) {
     
$ausgabe    = (is_array$value )) ? $key $value;
     echo 
"<th>" substr(strrchr($ausgabe"/"), 1) . "</th>";


echo
"<tr>";
if (
$it->getDepth() ==2)  {
     
$ausgabe    = (is_array$value )) ? $key $value;
     echo 
"<td>" substr(strrchr($ausgabe"/"), 1) . "</td>";    
     echo 
"</tr>";
}
}

?>


</table>
...negativ (
peter8500 ist offline   Mit Zitat antworten
Alt 23.01.2012, 13:42  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

... oje ^^

Also du willst jetzt zwei unterschiedliche Ordnerstrukturen in einer Tabelle nebeneinander darstellen?
Dazu solltest du entweder beide Strukturen parat halten und jeweils immer einen Schritt in beiden weitergehen oder zwei einzelne Tabellen erstellen.
Aber ich denke, dass du dir trotzdem nochmal die HTML-Tabellen-Basics richtig anschauen solltest, andernfalls wirst du zwar vielleicht irgendwas hinschreiben, was dir hier jemand sagt, aber ganz sicher nicht verstehen, was das soll. Vorallem, weil HTML-Tabellen eigentlich nicht sehr kompliziert sind.


MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 23.01.2012, 14:10  
Neuer Benutzer
 
Registriert seit: 11.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
peter8500 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Connar. Das ist ein Ordnerstruktur....
peter8500 ist offline   Mit Zitat antworten
Alt 23.01.2012, 14:22  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von peter8500 Beitrag anzeigen
Aber jetzt steht alles untereinander...
Jo. PHP ist gemein und macht genau das, was Du getippert hast.

Guck Dir doch erst mal das HTML Handbuch an. Und danach entwickelst Du einen Algorithmus, der HTML und Daten so ausgibt, wie Du es gerne hättest.
  Mit Zitat antworten
Alt 23.01.2012, 15:34  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.631
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Vielen Dank fürs vorlesen Dark Gurdian.
Bitte Danke.

Zitat:
Zitat von peter8500 Beitrag anzeigen
...negativ (
Du probierst ja auch nur wild herum.

Zerleg dein Problem in Teilprobleme.

1. Dein Ziel ist:
Code:
<table>
   <tr>
      <th>Order 1</th>
      <th>Order 2</th>
   </tr>
   <tr>
      <td>Unterorder 1</td>
      <td>Unterorder 1</td>
   </tr>
   <tr>
      <td>Unterorder 2</td>
      <td>Unterorder 2</td>
   </tr>
</table>
2. In welcher Reihenfolge brauchst du die Daten damit das geht?
Antwort: Order 1, Order 2, Unterordner 1 (von Ordner 1), Unterordner 1 (von Ordner 2).... etc.

3. In welcher Reihenfolge liefert der Iterator die Daten?
Antwort (von mir angenommen da es von dir keine Angabe dazu gibt): Ordner 1, Unterordner 1 (von Ordner 1), Unterordner 2 (von Ordner 2), Ordner 2, Unterordner 1 (von Ordner 2)... etc.

4. Wie bekommst du Struktur A in Struktur B?
---> Das ist dein eigentliches Problem. Oder anders formuliert: Mit dem Gruppenbruchverfahren nach der Ordnertiefe hast du eine Aufteilung nach Spalten, du brauchst aber eine Aufteilung nach Zeilen, da sich HTML Tabellen nur zeilenweiße aufbauen lassen (was dir durch SelfHTML deutlich werden sollte).

PHP-Code:

//die Ausgangssituation
$arrayList  = array('O 1''UO 1''UO 2''O 2''UO 1''UO 2''UO 3''O 3');

//das Ziel
$arrayRows = array();

//der weg
$currentCol 0//wir merken uns die spalte in der wir sind/
foreach ($arrayList AS $value) {
   if (
strpos('UO'$value)===false) { //das kriterium wann wir eine spalte verlassen, hier als Beispiel: wenn UO in wert nicht vorkommt
      
$currentRow 0//wir setzen unseren Zeilenzähler auf die erste Zeile
      
$currentCol++; //wir erhöhen die Spalte um 1
   
}

   if (!
is_array($arrayRows[$currentRow])) {
      
$arrayRows[$currentRow] = array(); //wir legen für die Zeile ein unterarray an, falls es noch kein ist um vorhandene werte nicht zu überschreiben
   
}

   
$arrayRows[$currentRow][$currentCol] = $value//wir hängen den aktuellen wert an die Zeile an
   
$currentRow++; //wir erhöhen unseren Zeilenzähler um 1, womit der nächste wert in der nächsten Zeile landet

Was passiert da?

Die Schleife durchläuft alle Werte wie bei dir. Als erstes erfolgt eine Prüfung ob ein Ordner (O), oder ein Unterordner (UO) vorliegt. Wenn kein Unterordner vorliegt, setzen wir den Zähler für die Zeile in der wir uns befinden wieder auf 0. Das heißt wir kehren zur ersten Zeile zurück. Danach wird für diesen Zeileindex ein Unterarray erzeugt welches die Werte für uns festhält, welche in diese Zeilen gehören. Dann wird der Wert an das Array der aktuellen Zeile angehängt (mit dem Index aus $currentCol) und die Zeile um 1 erhöht.

Code:
Array (
   0 => Array (
      0 => 'O 1'
   )
);
So sieht unser Array $arrayRows nach dem ersten Schleifendurchlauf aus. $currentRow steht jetzt auf 1.

Da $currentRow 1 ist, und UO im nächsten Wert vorkommt wird es nicht auf 0 zurück gesetzt, womit unser Array nach dem zweitem Durchlauf so aussieht:

Code:
Array (
   0 => Array (
      0 => 'O 1'
   )
   1 => Array (
      0 => 'UO 1'
   )
);
Das zieht sich so weiter bis der nächste Wert ohne UO kommt, hier "O 2". Jetzt wird $currentRow wieder auf 0 gesetzt und $currentCol um 1 erhöht (jetzt den Wert 1). Daher sieht das Array nach dem Durchlauf so aus:

Code:
Array (
   0 => Array (
      0 => 'O 1',
      1 => 'O 2'
   )
   1 => Array (
      0 => 'UO 1'
   )
   2 => Array (
      0 => 'UO 2'
   )
);
Der Zähler steht dann erneut auf 1. Womit UO 1, welches nach dem zweitem O 2 kommt, in nächsten Zeile angehängt wird.

Code:
Array (
   0 => Array (
      0 => 'O 1',
      1 => 'O 2',
      2 => 'O 3'
   )
   1 => Array (
      0 => 'UO 1',
      1 => 'UO 1'
   )
   2 => Array (
      0 => 'UO 2'
      1 => 'UO 2'
   )
   3 => Array (
      1 => 'UO 3'
   )
);
$currentCol ist der Index für das Unterarray. Dieser wird gebraucht da ansonsten im Beispiel "UO 3" den Index 0 bekommen würde, und somit in der ersten Spalte landet, obwohl er in die 2te gehört.

Daraus kann man nun eine HTML Tabelle generieren.

Zu beachten sind: Die erste Zeile enthält 3 Einträge, daher muss jede Zeile 3 Spalten (td-Elemente) haben. Alle Zeilen haben aber nur 2. D.h. sie müssen auf 3 aufgefüllt werden. Die letzte Zeile hat nur ein Element an der mittleren Position 1. Die Spalten 0 un2 2 sind nicht belegt, weswegen auch hier entsprechend aufgefüllt werden muss.

Zur Verdeutlichung:
PHP-Code:
echo '<table>';

foreach (
$arrayRows AS $columns) {
   echo 
'<tr>';

   foreach (
$columns AS $value) {
      echo 
'<td>'.$value.'</td>';
   }

   echo 
'</tr>';
}

echo 
'</table>'
würde ausgeben:


Code:
<table>
   <tr>
      <td>O 1</td>
      <td>O 2</td>
      <td>O 3</td>
   </tr>
   <tr>
      <td>UO 1</td>
      <td>UO 1</td>
   </tr>
   <tr>
      <td>UO 2</td>
      <td>UO 2</td>
   </tr>
   <tr>
      <td>UO 3</td>
   </tr>
</table>
korrekt ist aber:

Code:
<table>
   <tr>
      <td>O 1</td>
      <td>O 2</td>
      <td>O 3</td>
   </tr>
   <tr>
      <td>UO 1</td>
      <td>UO 1</td>
      <td></td>
   </tr>
   <tr>
      <td>UO 2</td>
      <td>UO 2</td>
      <td></td>
   </tr>
   <tr>
      <td></td>
      <td>UO 3</td>
      <td></td>
   </tr>
</table>
Wenn du es verstanden hast sollte eine Übertragung auf deinen Fall kein Problem mehr sein. Wenn nicht lass dir von deinem Ausbilder o.Ä. helfen. Wenn du das selbstständig machst dann schau dir die entsprechenden Grundlagen dazu an:

-> HTML Tabellen
-> Arrays mit mehreren Dimensionen
-> Verschachtelte Schleifen
-> Gruppenbruch
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

Geändert von Dark Guardian (23.01.2012 um 16:00 Uhr).
Dark Guardian ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sonderzeichen werden nicht richtig ausgegeben franc PHP Einsteiger 9 14.06.2011 17:22
[Erledigt] Ausgabe einer MySQL Tabelle umdrehen Index PHP Einsteiger 11 22.01.2011 19:42
Scriptsuche Daten aus HTML Tabelle A in HTML Tabelle B einfügen headbannger83 Scriptbörse 1 10.01.2011 15:39
HTML Tabelle Werte ändern -> direkt mit AJAX speichern Atikos JavaScript, Ajax und mehr 3 31.12.2010 01:15
PHP Script wird nicht richtig ausgegeben Ribase HTML, Usability und Barrierefreiheit 8 21.12.2010 13:32
Design einer DB für mehrsprachigkeit Squall Software-Design 35 08.10.2010 13:09
Datum wird richtig ausgegeben aber falsch in DB geschrieben marcrizzo PHP Tipps 2010 5 03.05.2010 21:00
[Erledigt] Intertabellarische Berechnungen, wie? dave303 Datenbanken 13 05.03.2010 11:58
tabelle in 3 Spalten richtig darstellen test022 PHP Tipps 2007 15 28.03.2007 15:38
Normalisierung einer chaotischen Tabelle maeck Datenbanken 10 12.12.2006 18:17
Zeilenanzahl einer tabelle mit WHERE aber ohne schleife? sovereign Datenbanken 13 17.04.2006 20:34
code-schnipsel -> tabelle richtig erstellen, aber wie? PHP Tipps 2005 1 08.05.2005 03:45
[HTML] Tabelle wird nicht richtig angezeigt HTML, Usability und Barrierefreiheit 14 02.03.2005 17:52
[Erledigt] Letzter Eintrag in einer Tabelle und Top Five einer Tabelle Datenbanken 2 27.09.2004 06:50
Tabelle ordnen und richtig anzeigen PHP Tipps 2004 3 12.09.2004 09:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
peter8500

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum