readdir und Ordner-Vergleich mit DB

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • readdir und Ordner-Vergleich mit DB

    Hallo alle zusammen,

    Ich lese die Ordner von bestimmten Verzeichnissen aus und vergleiche sie mit den Einträgen
    in der Datenbank auf schon vorhandene Ordner (wegen REPLACE).
    Das klappt auch soweit.

    1. Problem:

    Es klappt lokal aber nicht online (unter php4 und php5 getestet)
    könnte das am Apache liegen?

    online hab ich

    SERVER_SOFTWARE Apache/1.3.33 (Unix)

    local hab ich:

    Apache Version Apache/2.0.54 (Win32) PHP/5.1.0RC1

    folgendes liegt zusammen mit readdir in einer while-schleife innerhalb einer Funktion:

    PHP-Code:
       if($lnkname!=$row['file'] && $row['modulname']==NULL){
       
    $sql="REPLACE INTO ".$db.".".$tabelle." (file) VALUES ('".$lnkname."')";
       
    $result=send_sql($db$sql);    
       } 
    2. Problem:

    Wenn ich die Module erneut einlese ist auch alles in Ordnung
    allerdings, wenn ich einen Ordner aus der DB lösche, kommt er beim nächsten Einlesen
    durcheinander und ändert auch die darunter liegenden. Die sollten eigentlich bestehen bleiben,
    weil diese später per UPDATE über $row['modulname'] schon eine Bezeichnung bekommen haben.
    Denke mal das des mit den keys zu tun hat im array, aber sehe keine lösung

    hoffe, das kann man lösen

    Gruß D

  • #2
    problem #1: was klappt denn nicht? ist es mysql? wie steht's um E_ALL und mysql_error()?

    problem #2: habe ich nicht verstanden, denn ich kenne die architektur deiner anwendung nicht.

    Kommentar


    • #3
      mysql gibt keinen fehler aus, es klappt ja auch lokal.
      er liest online immer nur den letzten ordner ein.

      lokal aber alle

      Kommentar


      • #4
        zum Problem 2

        Tabelle für die Ordner:

        $sql="SELECT file,modulname FROM ".$db.".mod";
        $res=send_sql($db, $sql);


        Ich lese die Ordner ein und schreibe sie in eine Tabelle

        Ordner=$row['file']
        Ordnerbezeichnung=$row['modulname']

        danach vergebe ich für die Ordner Bezeichnungen ---> $row['modulname']

        klappt alles

        lösche ich später einen Ordner aus der DB werden
        beim nächsten Einlesen der Ordner auch die in Ordner in den Zeilen
        darunter aus der Tabelle geändert (REPLACE).
        Die sollten aber Bestehen bleiben, weil ich für diese schon Namen vergeben habe
        Zuletzt geändert von ; 29.09.2005, 18:41.

        Kommentar


        • #5
          Problem 2 erledigt, aber des erste nicht

          Problem 2 hat sich inzwischen erledigt.
          Dadurch, dass ich das verzeichnis beim löschen aus der DB mit lösche,
          tritt das Problem auch nicht mehr auf.

          Nochmal zum 1. Problem, vielleicht kann ja doch noch jemand helfen:

          Ich vergleiche die gelesenen Verzeichnisse mit den Einträgen in der Datenbank.
          Replace soll nur ausgeführt werden, wenn der Eintrag in der DB noch nicht existiert,
          oder noch keine Bezeichnung für das Verzeichnis in der DB eingetragen wurde.
          Das kanze klappt lokal auf Apache 2 und PHP5.
          Wenn ich es hochlade (bei 1und1 , Apache 1.3 und php4.xx)
          wird nur das letzte Verzeichnis in die DB eingetragen.
          Ich hab bei 1und1 nach Anleitung für PHP5 die Dateiendungen alle auf *.php5 geändert
          und die Links angepasst - das gleiche Problem.

          Jetzt stehe ich im Wald und sehe Ihn vor lauter Bäumen nicht

          PHP-Code:
          $handle=opendir($ordner);

          while (
          $filereaddir ($handle)) {
              if (
          $file != "." && $file != "..") { 
          if (
          is_dir($ordner."/".$file)) {
              
          rawurlencode($file);
              
          $lnkname=$file;
              
          $lnkname=str_replace("_"," ",$lnkname);
              
          $row=mysql_fetch_row($res); 
              
          #echo $row['file']."<br>";
              
          if($lnkname!=$row['file'] && $row['modulname']==NULL){
              
          $sql="REPLACE INTO ".$js_db.".".$tabelle." (file) VALUES ('".$lnkname."')";
              
          $result=send_sql($js_db$sql);
             }
          }}
          }
          closedir($handle); 
          MFG Diggedag

          Kommentar

          Lädt...
          X