InternInhaltsverzeichnisGlossarBausteineLinklisteTutorialsKommentare

Thema: Verzeichnis auslesen und mit einem Link verknüpfen Artikel anzeigen

Andy ✶✶✶✶✶ schrieb am Samstag, den 29 September 2018 #11
irgendwie stehe ich auf dem Schlauch ...

ich versuche eine Tabelle einer Datenbank mit Ordnern auf der Festplatte zu vergleichen. Angezeigt werden sollen alle Ordner der Festplatte die nicht mehr in der Datenbank vorhanden sind. Aber irgendwie schmeißt das Script nur mit Fehlern um sich. Vielleicht hat ja jemand einen Tipp für mich...

Hier das Script:

<?php

error_reporting(E_ALL);

define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', 'user' );
define ( 'MYSQL_KENNWORT', 'password' );
define ( 'MYSQL_DATENBANK', 'database' );
$db_link = mysqli_connect (
MYSQL_HOST,
MYSQL_BENUTZER,
MYSQL_KENNWORT,
MYSQL_DATENBANK
);

$sql = "SELECT * FROM database";

$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysqli_error());
}

$verzeichnis = openDir("images");
while ($file = readDir($verzeichnis)) {
// Höhere Verzeichnisse nicht anzeigen!
if ($file != "." && $file != "..") {
$sql = ($file = mysqli_fetch_array( $db_erg, MYSQL_ASSOC));
$sql = mysqli_num_rows($sql);
if($sql == 0)
{
echo '<table border="1">';
echo "<tr>";
echo "<td>". $file['verzeichnis'] . "</td>";
echo "</tr>";
echo '</table>';
}
}
}

mysqli_free_result( $db_erg );
?>


Als Fehlermeldung kommt:

PHP Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in ...

und ausgegeben wird nichts 😕😕

Vorher schonmal vielen Dank

Gruß Andy
Werner schrieb am Samstag, den 29 September 2018 #12
Hallo Andy,
der Parameter bei mysqli_fetch_array() muss: MYSQLI_ASSOC heißen!
Habe das Script etwas umgebaut, Datenbankanfragen und das auslesen von Verzeichnissen sollten getrennt voneinander stattfinden.

Bei mir hat folgendes funktioniert:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
error_reporting
(E_ALL);

// Verzeichnis auslesen - Verzeichnispfad anpassen!
$verzeichnis array_slice(scanDir("images/"), 2);

define('MYSQL_HOST''localhost');
define('MYSQL_BENUTZER''root');
define('MYSQL_KENNWORT''');
define('MYSQL_DATENBANK''test');

$db_link mysqli_connect(MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORTMYSQL_DATENBANK);

// DB-Tabelle auslesen
// Name der DB-Spalte und den Namen der Tabelle anpassen!
$result mysqli_query($db_link"SELECT `verzeichnis` FROM `meinetabelle`");
while (
$row mysqli_fetch_array($resultMYSQLI_ASSOC)) {
 if (!
in_array($row["verzeichnis"], $verzeichnis)) {
  echo 
'<p>' $row["verzeichnis"] . '</p>';
 }
}
?>
Bernd Gemm schrieb am Sonntag, den 13 Januar 2019 #13
Hallo,

es geht nochmal um das Verzeichnis mit PHP 5 auslesen.

Ich habe jetzt wirklich alles versucht eine Lösung zu finden damit er mir vorhandene Unterordner anzeigt, aber ich komme nicht weiter. Vielleicht könnten Sie mir nochmal helfen? Ich habe auch alle anderen Scripte probiert. Nichts funktioniert.

So ist das Script aktuell:

<?php
$verzeichnispfad = "galerie/";
$verzeichnis = array_slice(scanDir($verzeichnispfad), 2);
foreach ($verzeichnis as $element) {
echo "<a href=". $verzeichnispfad . $element . " target=\"rechts\">". $element."</a><br>";
}
?>

Das Script liegt innerhalb eines Accordeon-Menüs und zeigt auf die Galerie im rechten Frame.

domeflyer.de/galerie/
Hier können Sie es sich anschauen.

Vielen Dank für Ihre Bemühungen.

Mit freundlichen Grüßen

Bernd Gemm
Werner schrieb am Montag, den 14 Januar 2019 #14
Ich habe auf der folgenden Seite ein Beispiel hinzugefügt:
» werner-zenk.de/php/alle_dateien_im_akt_verzeichnis_und_den_unterverz_anzeigen.php
Das Script benötigt allerdings PHP 7 oder höher.
Achim ✶✶✶✶✶ schrieb am Freitag, den 18 Januar 2019 #15
Wie sortiert man die Dateien mit der Anfangsbuchstabenausgabe alphabetisch ?
Werner schrieb am Montag, den 21 Januar 2019 #16
Hallo, normalerweise werden die Dateien bereits sortiert eingelesen. Wichtig ist, das die Dateien richtig benannt werden.

Du kannst folgendes Script verwenden:

1
2
3
4
5
6
7
8
9
10
11
<?php
$verzeichnispfad 
"bilder/";
$verzeichnis array_slice(scanDir($verzeichnispfad), 2);

natcasesort($verzeichnis);

foreach (
$verzeichnis as $element) {
 echo 
'<a href="' $verzeichnispfad $element '">' $element .
 
'</a> <br>';
}
?>

natcasesort kannst du durch: natsort oder arsort ersetzen, dann wird eine andere Reihenfolge angezeigt.
raffi schrieb am Samstag, den 23 März 2019 #17
ist es möglich bei deiner funktion (siehe
unten)eine erweiterung einzubauen, so dass
augegebene dateien nach position angezeigt werden.
zum beispiel nur die erste [0] und vierte [3]
datei. besten dank!

<?php
// Öffnet ein Unterverzeichnis mit dem Namen
"daten"
$verzeichnis = openDir("daten");
// Verzeichnis lesen
while ($file = readDir($verzeichnis)) {
// Höhere Verzeichnisse nicht anzeigen!
if ($file != "." && $file != "..") {
// Link erstellen
echo "<a href=\"daten/$file\">$file</a><br>\n";
}
}
// Verzeichnis schließen
closeDir($verzeichnis);
?>
Werner schrieb am Sonntag, den 24 März 2019 #18
Eine Möglichkeit wäre einen Zähler einzubauen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$position 
= [037]; // Position der Dateien
$zaehler 0;

// Öffnet ein Unterverzeichnis mit dem Namen "daten"
$verzeichnis openDir("daten");
// Verzeichnis lesen
while ($file readDir($verzeichnis)) {
// Höhere Verzeichnisse nicht anzeigen!
 
if ($file != "." && $file != "..") {
  if (
in_array($zaehler$position)) {
   
// Link erstellen
   
echo "<a href=\"daten/$file\">$file</a><br>\n";
  }
  
$zaehler++;
 }
}
// Verzeichnis schließen
closeDir($verzeichnis);
?>
Ludwig aus DA schrieb am Montag, den 25 März 2019 #19
"Bilder aus einem Verzeichnis auslesen und anzeigen"
Hallo Werner,
ich hätte gern über jedem Bild den Dateinamen
und
unter jedem Bild die Beschreibung mit
exif_read_data ($key == "EXIF" && $name == "UserComment")

Könntest Du mir da weiter helfen?

LG
Werner schrieb am Montag, den 25 März 2019 #20
Leider hat jeder Kamera-Hersteller seine eigenen Vorstellungen welche EXiF-Informationen im Bild gespeichert werden.
Exif-Infos eines JPG-Bildes auslesen, ich hoffe das hilft weiter.