Rekursive Verzeichnisliste in MySQL-Tabelle konvertieren

8

Ich muss alle Dateien / Ordner in einem bestimmten übergeordneten Ordner auflisten und in mysql ausgeben.

Bisher habe ich:

%Vor%

Woran ich festhalte, ist, wie ich ID s den Verzeichnissen zuweisen und sie dann ihren Eltern ID zuordnen kann.

Im Moment macht dieser Code-Typ, was ich brauche, ich muss nur in der Lage sein, ihn in mysql-insert-Anweisungen umzuwandeln, behalte aber die assoziative Struktur, und ich bin von einer langen langen Arbeitswoche befreit / p>

Am Ende möchte ich eine Tabellenstruktur ähnlich der folgenden haben:

FileID, FolderID, ParentFolderID, Dateiname

Wie kann ich das tun?

    
Kevin 23.03.2017, 15:54
quelle

6 Antworten

1

Ich habe deinen Code etwas modifiziert. Jetzt für jedes Verzeichnis,

Index 0 zeigt auf Verzeichnisindex

index 1 zeigt auf den übergeordneten Verzeichnisindex

index 2,3, .... n zeigt auf Dateien

%Vor%

Sie können jetzt die Daten direkt in mysql-Tabellen einfügen, indem Sie eine ähnliche rekursive Schleife verwenden (wenn Sie keine automatisch generierte mysql-ID verwenden möchten)

Wenn Sie die automatisch generierte mysql-ID verwenden möchten, sollten Sie das Einfügen in zwei Durchgängen durchführen. Im ersten Durchlauf fügen Sie die Ordnerdaten ein und erhalten die ID von mysql insert id function. Erstellen Sie dann eine assoziative Array-Map

$ array_map [$ aktuelle_folder_id] = mysqli_insert_id ()

Aktualisieren Sie diese ID dann im zweiten rekursiven Durchlauf

    
phpkode 11.04.2017, 11:01
quelle
4

versuche so etwas:

%Vor%     
Sebastian 04.04.2017 16:08
quelle
0

Ich denke, Sie müssen Ordnernamen auch als Datensätze in die DB einfügen, sonst erhalten Sie keine Eltern-ID. Aber in Ihrem Ergebnis fehlen die Ordnernamen als Datensatzelemente. Ich habe Ihren Code mit der Annahme modifiziert, dass Sie das Ergebnis nicht als Array, sondern nur als SQL-Anweisung benötigen.

%Vor%

Sie können den Code & amp; die Abfrage bei Bedarf

    
manian 09.04.2017 02:11
quelle
0

Jede Zeile in Ihrer Mysql-Verzeichnistabelle hat drei Spalten -

Verzeichnis-ID, Verzeichnisname, übergeordnete ID

Für jede Einfügung wird die Eltern-ID den Elternteil des aktuellen Verzeichnisses in einer Zeile angeben. Für die Stammverzeichnis-Eltern-ID ist 0

    
Atul Jindal 09.04.2017 07:15
quelle
0
___ qstnhdr ___ Rekursive Verzeichnisliste in MySQL-Tabelle konvertieren ___ qstntxt ___

Ich muss alle Dateien / Ordner in einem bestimmten übergeordneten Ordner auflisten und in mysql ausgeben.

Bisher habe ich:

%Vor%

Woran ich festhalte, ist, wie ich %code% s den Verzeichnissen zuweisen und sie dann ihren Eltern %code% zuordnen kann.

Im Moment macht dieser Code-Typ, was ich brauche, ich muss nur in der Lage sein, ihn in mysql-insert-Anweisungen umzuwandeln, behalte aber die assoziative Struktur, und ich bin von einer langen langen Arbeitswoche befreit / p>

Am Ende möchte ich eine Tabellenstruktur ähnlich der folgenden haben:

FileID, FolderID, ParentFolderID, Dateiname

Wie kann ich das tun?

    
___ answer43344067 ___

Ich habe deinen Code etwas modifiziert. Jetzt für jedes Verzeichnis,

Index 0 zeigt auf Verzeichnisindex

index 1 zeigt auf den übergeordneten Verzeichnisindex

index 2,3, .... n zeigt auf Dateien

%Vor%

Sie können jetzt die Daten direkt in mysql-Tabellen einfügen, indem Sie eine ähnliche rekursive Schleife verwenden (wenn Sie keine automatisch generierte mysql-ID verwenden möchten)

Wenn Sie die automatisch generierte mysql-ID verwenden möchten, sollten Sie das Einfügen in zwei Durchgängen durchführen. Im ersten Durchlauf fügen Sie die Ordnerdaten ein und erhalten die ID von mysql insert id function. Erstellen Sie dann eine assoziative Array-Map

$ array_map [$ aktuelle_folder_id] = mysqli_insert_id ()

Aktualisieren Sie diese ID dann im zweiten rekursiven Durchlauf

    
___ answer43212402 ___

versuche so etwas:

%Vor%     
___ answer43302310 ___

Ich denke, Sie müssen Ordnernamen auch als Datensätze in die DB einfügen, sonst erhalten Sie keine Eltern-ID. Aber in Ihrem Ergebnis fehlen die Ordnernamen als Datensatzelemente. Ich habe Ihren Code mit der Annahme modifiziert, dass Sie das Ergebnis nicht als Array, sondern nur als SQL-Anweisung benötigen.

%Vor%

Sie können den Code & amp; die Abfrage bei Bedarf

    
___ tag123php ___ PHP ist eine weit verbreitete, dynamische, objektorientierte und interpretierte Skriptsprache, die primär für die serverseitige Webentwicklung entwickelt wurde. ___ antwort43335261 ___

json_encode das gesamte Array und fügen Sie es in die Datenbank ... Sie brauchen auch nur eine Spalte ...

    
___ antwort43332843 ___

Eine wirklich nützliche Möglichkeit, Ihre Datenbank zu strukturieren, sind verschachtelte Sätze. Joomla verwendet dies für Dinge wie Artikelkategorien. Diese können unendlich ineinander verschachtelt sein.

Linkbeschreibung hier eingeben

    
___ answer43304051 ___

Jede Zeile in Ihrer Mysql-Verzeichnistabelle hat drei Spalten -

Verzeichnis-ID, Verzeichnisname, übergeordnete ID

Für jede Einfügung wird die Eltern-ID den Elternteil des aktuellen Verzeichnisses in einer Zeile angeben. Für die Stammverzeichnis-Eltern-ID ist 0

    
___ tag123recursion ___ Rekursion ist eine Art Funktionsaufruf, bei dem sich eine Funktion selbst aufruft. Solche Funktionen werden auch rekursive Funktionen genannt. Strukturelle Rekursion ist eine Methode zur Problemlösung, bei der die Lösung eines Problems von Lösungen für kleinere Instanzen des gleichen Problems abhängt. ___ tag123mysql ___ MySQL ist ein freies, relationales Datenbank-Managementsystem (RDBMS), das die strukturierte Abfragesprache (SQL) verwendet. Verwenden Sie dieses Tag NICHT für andere DBs wie SQL Server, SQLite usw. Dies sind verschiedene DBs, die alle SQL verwenden, um die Daten zu verwalten. ___
David Hayes 10.04.2017 21:02
quelle
-1
___ qstnhdr ___ Rekursive Verzeichnisliste in MySQL-Tabelle konvertieren ___ qstntxt ___

Ich muss alle Dateien / Ordner in einem bestimmten übergeordneten Ordner auflisten und in mysql ausgeben.

Bisher habe ich:

%Vor%

Woran ich festhalte, ist, wie ich %code% s den Verzeichnissen zuweisen und sie dann ihren Eltern %code% zuordnen kann.

Im Moment macht dieser Code-Typ, was ich brauche, ich muss nur in der Lage sein, ihn in mysql-insert-Anweisungen umzuwandeln, behalte aber die assoziative Struktur, und ich bin von einer langen langen Arbeitswoche befreit / p>

Am Ende möchte ich eine Tabellenstruktur ähnlich der folgenden haben:

FileID, FolderID, ParentFolderID, Dateiname

Wie kann ich das tun?

    
___ answer43344067 ___

Ich habe deinen Code etwas modifiziert. Jetzt für jedes Verzeichnis,

Index 0 zeigt auf Verzeichnisindex

index 1 zeigt auf den übergeordneten Verzeichnisindex

index 2,3, .... n zeigt auf Dateien

%Vor%

Sie können jetzt die Daten direkt in mysql-Tabellen einfügen, indem Sie eine ähnliche rekursive Schleife verwenden (wenn Sie keine automatisch generierte mysql-ID verwenden möchten)

Wenn Sie die automatisch generierte mysql-ID verwenden möchten, sollten Sie das Einfügen in zwei Durchgängen durchführen. Im ersten Durchlauf fügen Sie die Ordnerdaten ein und erhalten die ID von mysql insert id function. Erstellen Sie dann eine assoziative Array-Map

$ array_map [$ aktuelle_folder_id] = mysqli_insert_id ()

Aktualisieren Sie diese ID dann im zweiten rekursiven Durchlauf

    
___ answer43212402 ___

versuche so etwas:

%Vor%     
___ answer43302310 ___

Ich denke, Sie müssen Ordnernamen auch als Datensätze in die DB einfügen, sonst erhalten Sie keine Eltern-ID. Aber in Ihrem Ergebnis fehlen die Ordnernamen als Datensatzelemente. Ich habe Ihren Code mit der Annahme modifiziert, dass Sie das Ergebnis nicht als Array, sondern nur als SQL-Anweisung benötigen.

%Vor%

Sie können den Code & amp; die Abfrage bei Bedarf

    
___ tag123php ___ PHP ist eine weit verbreitete, dynamische, objektorientierte und interpretierte Skriptsprache, die primär für die serverseitige Webentwicklung entwickelt wurde. ___ antwort43335261 ___

json_encode das gesamte Array und fügen Sie es in die Datenbank ... Sie brauchen auch nur eine Spalte ...

    
___ antwort43332843 ___

Eine wirklich nützliche Möglichkeit, Ihre Datenbank zu strukturieren, sind verschachtelte Sätze. Joomla verwendet dies für Dinge wie Artikelkategorien. Diese können unendlich ineinander verschachtelt sein.

Linkbeschreibung hier eingeben

    
___ answer43304051 ___

Jede Zeile in Ihrer Mysql-Verzeichnistabelle hat drei Spalten -

Verzeichnis-ID, Verzeichnisname, übergeordnete ID

Für jede Einfügung wird die Eltern-ID den Elternteil des aktuellen Verzeichnisses in einer Zeile angeben. Für die Stammverzeichnis-Eltern-ID ist 0

    
___ tag123recursion ___ Rekursion ist eine Art Funktionsaufruf, bei dem sich eine Funktion selbst aufruft. Solche Funktionen werden auch rekursive Funktionen genannt. Strukturelle Rekursion ist eine Methode zur Problemlösung, bei der die Lösung eines Problems von Lösungen für kleinere Instanzen des gleichen Problems abhängt. ___ tag123mysql ___ MySQL ist ein freies, relationales Datenbank-Managementsystem (RDBMS), das die strukturierte Abfragesprache (SQL) verwendet. Verwenden Sie dieses Tag NICHT für andere DBs wie SQL Server, SQLite usw. Dies sind verschiedene DBs, die alle SQL verwenden, um die Daten zu verwalten. ___
Sandeep Kothari 11.04.2017 01:21
quelle

Tags und Links