2017-07-15 1 views
0

Ich mache ein Skript, das Ordner sortieren und in Zeilen und Spalten im Web anzeigen sollte. Es sollte 4 Spalten sein und einfach weiterfahren, bis keine weiteren Ordner gefunden werden. Ich habe alles außer dem magischen Teil, wo es die Objekte in Reihen und Spalten sortiert. Meine Idee ist, dass ich zwei Variablen mache: $hor (Spalte) $ver (Zeile) und dann verwende ich CSS, um die Objekte zu platzieren, die das Skript macht. Hat jemand eine Idee, wie man damit umgeht? Javascript ist keine Option aufgrund der AnforderungenWie sortiere ich HTML-Objekte, die von PHP generiert werden

Das ist mein Skript so weit ist:

<?php 


error_reporting(E_ALL); 
ini_set('display_errors', 1); 


$directory = '/path/to/directory'; 
$scanned = array_diff(scandir($directory), array('..', '.')); 
$count = count($scanned); 
echo $count; 

for ($i = 2; $i <= $count + 1; $i++) { 
    $x = $i - 2; 

    // Magic code that sorts into horizontal and vertical numbers 

    echo '<div id="' . $x . '" class="' . $hor . ' ' . $ver . '"><a href="/' . $scanned[ $i ] . '"><div class="inner"><p>' . $scanned[ $i ] . '</p></div></a></div>'; 
} 

?> 
+1

Sie sollten zumindest erklären, wie die Elemente in Zeilen und Spalten verteilt werden sollen: Wie viele Spalten? Ein fester Betrag oder etwas, das dynamisch bestimmt wird? Sortiert von links nach rechts zuerst, und dann von oben nach unten oder zuerst von oben nach unten und dann nur von links nach rechts? – trincot

+0

Ja, ich habe die Frage bearbeitet – cbh1608

+0

https://www.google.com/search?q=sortable.js – mplungjan

Antwort

1

Wenn ich dich richtig verstanden habe, ist das vielleicht was du versuchst zu erreichen.

Der Initialisierungszähler teilt der Schleife mit, in welchen Eintrag im Array er starten soll, und der Inkrementierungszähler teilt der Schleife mit, wie viele Einträge zu überspringen sind. Sie können die Anzahl der Spalten jederzeit ändern, indem Sie eine Schleife hinzufügen/entfernen und den Inkrementzähler in allen Schleifen ändern. Wenn eine Schleife hinzugefügt haben Sie von 1.

für den Wert des init gegen increas (init Zähler; Testzähler, Zähler erhöhen)

gewinnen die $ver und $hor wir verwenden Init-Zähler zur Berechnung der Position.

$directory = "/path/to/directory"; 
    $scanned = array_diff(scandir($directory), array("..", ".")); 
    $count = count($scanned); 

    for ($i = 2; $i <= $count + 1; $i += 4) { 
     $x = $i - 2; 
     $v = $i + 2; 
     $ver = $v/4; 
     $hor = 1; 
     echo "<div id=\"" . $x . "\" class=\"ver" . $ver . " hor" . $hor . "\"><a href=\"/" . $scanned[ $i ] . "\"><div class=\"inner\"><p>" . $scanned[ $i ] . "</p></div></a></div>"; 
    } 

    for ($i = 3; $i <= $count + 1; $i += 4) { 
     $x = $i - 2; 
     $v = $i + 1; 
     $ver = $v/4; 
     $hor = 2; 
     echo "<div id=\"" . $x . "\" class=\"ver" . $ver . " hor" . $hor . "\"><a href=\"/" . $scanned[ $i ] . "\"><div class=\"inner\"><p>" . $scanned[ $i ] . "</p></div></a></div>"; 
    } 

    for ($i = 4; $i <= $count + 1; $i += 4) { 
     $x = $i - 2; 
     $v = $i; 
     $ver = $v/4; 
     $hor = 3; 
     echo "<div id=\"" . $x . "\" class=\"ver" . $ver . " hor" . $hor . "\"><a href=\"/" . $scanned[ $i ] . "\"><div class=\"inner\"><p>" . $scanned[ $i ] . "</p></div></a></div>"; 
    } 

    for ($i = 5; $i <= $count + 1; $i += 4) { 
     $x = $i - 2; 
     $v = $i - 1; 
     $ver = $v/4; 
     $hor = 4; 
     echo "<div id=\"" . $x . "\" class=\"ver" . $ver . " hor" . $hor . "\"><a href=\"/" . $scanned[ $i ] . "\"><div class=\"inner\"><p>" . $scanned[ $i ] . "</p></div></a></div>"; 
    } 
0

Verwendung scandir(); für Ihr Verzeichnis, die Ihre Dateien als Array zurückgeben dann durchlaufen Sie sie mit foreach drucken Sie jede Datei als Tabelle Zelle verwenden Zähler, um die Zeile zu beenden, wenn es 4 Spalten mit darin ist.

$files=scandir($directory); 
$i=0; 
echo "<table>"; 
echo"<tr>"; 
foreach ($files as $file){ 
echo "<td>".$file."</td>"; 
$i++; 
if(($i%4)==0){ 
echo"</tr>"; 
} 
} 
if(($i%4)==3) echo "<td></td><td></td><td></td></tr>"; 
if(($i%4)==2) echo "<td></td><<td></td></tr>"; 
if(($i%4)==1) echo "<td></td></tr>"; 
echo "</table>"; 
+0

Können Sie bitte Ihre Antwort erklären? – cbh1608