Mehrere while Schleifen ineinander

Hallo zusammen,

ich glaube, meine Frage ist ziemlich leicht zu beantworten, da sie, wahrscheinlich, einfach nur auf einem Denkfehler beruht^^. Dennoch sitze ich jetzt seit einiger Zeit daran und finde keine Lösungsmöglichkeit, auch mit dem Inkrement einer Variable, damit eine Schleife nur einmal ausgeführt wird, führt nicht zum gewünschten Ergebnis. Vielleicht kann mir hier ja jemand weiterhelfen, bzw. hatte das gleiche Problem auch mal ;-)

Erstmal zum Vorhaben: Ich hole aus einer MySQL Datenbank die Spalte "Namen", diese Spalte beinhaltet, wer hät's gedacht, einige Namen. Der zweite Teil ist, dass ich mit der php Funktion "opendir" ein Verzeichnis auf dem Server öffne und alle Verzeichnisse dahinter auslese. Sprich: Ich öffne mit php den Ordner Namen, dann listet er mir die Verzeichnisse (sind mit Namen betitelt) dahinter auf. Soweit so gut, einzelnd funktioniert das auch super. Das Problem kommt erst, wenn ich beides gleichzeitig mache, dazu später mehr... Am Ende möchte ich die Namen, die ich aus der Datenbank geholt habe, von den Verzeichnisnamen abziehen, dies erfolgt mit string replace.

Nun der Code:

    $abfrage = "SELECT Name FROM blabla ORDER BY ID ASC";
    $ergebnis = mysql_query($abfrage);  
    while($row = mysql_fetch_object($ergebnis))
    {   
    echo $row->Name;

    if ($handle = opendir('../../../Namen/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo $file;
        }
    }
    closedir($handle);
    }
    }

In der ersten while Schleife hole ich den Inhalt aus der Datenbank und gebe ihn aus, passt, dann öffne ich das Verzeichnis "Namen" auf dem Server und lasse die Verzeichnisse dahinter auflisten. Als Seitenoutput bekomme ich jetzt allerdings den ersten Namen der Datenbank, dann die Verzeichnisse auf dem Server, dann wieder ein Name der Datenbank und die Verzeichnisse auf dem Server, dann wieder ein Name der Datenbank usw. Ist logisch, da ich ja beide while Schleifen ineinander verschachtelt habe, somit bekomme ich jedes Mal, wenn etwas aus der Datenbank geholt wird, den Serverinhalt mit. Das soll aber nicht sein...

Nun zu meiner Frage: Wie bekomme ich es hin, dass ich $row->Name (erste while) von $file (zweite while) abziehen kann, ohne dass mir hunderte Sachen (while Ergebnisse) ausgegeben werden? Irgendwie stehe ich auf dem Schlauch...

Über eine Antwort und eine kurze Erklärung würde ich mich wirklich sehr freuen!

Grüße, Hummel

...zum Beitrag

Lagere die 2. While Schleife aus (wird somit nur 1x ausgeführt und nicht immer wieder) und speichere die Ordnernamen in Arrays:

$server_dirs = $db_dirs = array();

if ($handle = opendir('../../../Namen/')) {
while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
        $server_dirs[] = $file;
    }
}
closedir($handle);


$abfrage = "SELECT Name FROM blabla ORDER BY ID ASC";
$ergebnis = mysql_query($abfrage);  
while($row = mysql_fetch_object($ergebnis)) {   
    $db_dirs[] = $row->Name;
}

#Ziehe die gefundenen Server-Verzeichnisse von denen in der Datenbank ab
$cleaned_dirs = array_diff($db_dirs, $server_dirs);

print_r($cleaned_dirs);

Im Array $cleaned_dirs sind nun alle übrig gebliebene Verzeichnisse drin und können weiter verarbeitet werden.

...zur Antwort

hier ist bereits ne ähnliche Frage:

https://www.gutefrage.net/frage/wo-schliesse-ich-an-der-speedport-entry-fax-und-telefon-an

Wie es aussieht kannst du nur 1 analoges Telefon anschliessen. Weitere Telefone gehen z.B. mit IP-Telefone, die du an den LAN-Port einsteckst, oder du tauschst den Router gegen einen der 2 TAE-Buchse hat, z.B. Speedport W724v

...zur Antwort

erstelle eine Datei mit Namen '.htaccess', füge folgenden Text ein und speichere sie im Hauptverzeichniss:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

nun kannst du die Endung .html in der URL weglassen. Die Dateien müssen aber weiterhin die Endung .html beibehalten.

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.