tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
3993
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ihop ihop ist offline Mitglied Bronze
    Registriert seit
    Aug 2003
    Beiträge
    47
    hi
    folgendes problem:
    ich habe da ein script (selber geschrieben) das den ordner modules auslesen soll und alle ordner die nicht in der DB stehen ein gefügt werden. nur irgendwie macht er das nicht er schreibt keine fehlermeldung aber er addet auch nicht die ordner rein.

    modules/fotos
    modules/dvd

    in der db steht nur foto

    das script
    PHP-Code:
    mysql_connect ($DatabaseHost$DatabaseUser$DatabasePassword) or die ("Keine Verbindung zum Server");    
    mysql_select_db ($Database) or die ("Keine Verbindung zur Datenbank");
    $ergebnis mysql_query ("SELECT * FROM navigation") or die ("Tabelle nicht gefunden");
    if (
    $handle opendir('modules')) {
      while (
    false !== ($file readdir($handle))) {
        if (
    $file != "." && $file != ".." && $file != "index.html") {
          while (
    $zeile mysql_fetch_array($ergebnis)) {      
            if(
    $file!=$zeile["ordnername"]){    
              
    mysql_query("INSERT INTO navigation VALUES('','$file','','0','all')") or die(mysql_error());  
            }        
          }                 
        }
      }
      
    closedir($handle);
    }
    mysql_close (); 
     

  2. #2
    Avatar von forsterm
    forsterm forsterm ist offline Mitglied Rubin
    Registriert seit
    Nov 2004
    Ort
    Bayern
    Beiträge
    1.328
    Hallo,
    kann es sein, dass die erste Spalte deiner Tabelle auf auto_increment gesetzt ist?
    Wenn ja dann muss du das nicht extra angeben also könnte dein Script so aussehen:
    PHP-Code:
    mysql_connect ($DatabaseHost$DatabaseUser$DatabasePassword) or die ("Keine Verbindung zum Server");     
    mysql_select_db ($Database) or die ("Keine Verbindung zur Datenbank"); 
    $ergebnis mysql_query ("SELECT * FROM navigation") or die ("Tabelle nicht gefunden"); 
    if (
    $handle opendir('modules')) { 
      while (
    false !== ($file readdir($handle))) { 
        if (
    $file != "." && $file != ".." && $file != "index.html") { 
          while (
    $zeile mysql_fetch_array($ergebnis)) {       
            if(
    $file!=$zeile["ordnername"]){     
              
    mysql_query("INSERT INTO navigation VALUES('$file','','0','all')") or die(mysql_error());   
            }         
          }                  
        } 
      } 
      
    closedir($handle); 

    mysql_close (); 
     
    Wie man Fragen richtig stellt

    Wichtig:
    Bitte markiert eure beantworteten Fragen als "erledigt" (links unten auf "Erledigt" klicken).
    __________________
    .:Mitglied #26 des 1. offiziellen Sven Uwe Fan-Clubs:.

  3. #3
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Probier mal Folgendes:
    PHP-Code:
    <?php

        mysql_connect
    ($DatabaseHost$DatabaseUser$DatabasePassword)
            or die(
    'Verbindung mit Datenbankserver schlug fehl!');
        
    mysql_select_db($Database)
            or die(
    'Auswahl der Datenbank schlug fehl!');

        
    // Sammeln der Datensätze
        
    $records = array();
        
    $query '
            SELECT
                    `ordnername`
              FROM
                    `navigation`
            '
    ;
        
    $result mysql_query($query)
            or die(
    'Datenbankabfrage schlug fehl!');
        while( 
    $records[] = mysql_result($result0) ) {
            continue;
        }

        
    // Sammeln der Dateien
        
    $files = array();
        if( 
    $handle opendir('modules') ) {
            while( 
    false !== ($file readdir($handle)) ) {
                if( 
    $file == '.' || $file == '..' || $file == 'index.html' ) {
                    continue;
                }
                
    $files[] = $file;
            }
            
    closedir($handle);
        }

        
    // Ausgleich der Differenz beider Mengen
        
    $diff array_diff($records$files);
        foreach( 
    $diff as $file ) {
            
    $query '
                INSERT INTO
                        `navigation`
                  VALUES(
                        NULL,
                        "'
    .mysql_real_escape_string($file).'",
                        "",
                        0,
                        "all"
                  )
                '
    ;
            
    mysql_query($query)
                or die(
    mysql_error());
        }

        
    mysql_close();

    ?>
    Übrigens möchte ich dir noch die INSERT INTO-Anweisung mit SET-Klausel nahelegen, da bei dieser Anweisung die Angabe nur einzelner Spaltenwerte möglich ist.
     
    Markus Wulftange

  4. #4
    ihop ihop ist offline Mitglied Bronze
    Registriert seit
    Aug 2003
    Beiträge
    47
    bringt mir den fehler:
    Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /srv/www/httpd/phost/d/com/pytalhost/dvddb/web/mainfile.php on line 45

    das wäre die zeile:
    "'.mysql_real_escape_string($file).'",
     

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Mein Fehler. Ändere mal Folgendes:
    PHP-Code:
    while( $records[] = mysql_result($result0) ) {
        continue;

    Meinen vorherigen Beitrag habe ich entsprechend korrigiert.
     
    Markus Wulftange

  6. #6
    ihop ihop ist offline Mitglied Bronze
    Registriert seit
    Aug 2003
    Beiträge
    47
    das habe ich gemacht dann kommt:
    Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 71 bytes) in /srv/www/httpd/phost/d/com/pytalhost/dvddb/web/mainfile.php on line 21

    das ganze schaut jetzt so aus
    PHP-Code:
     mysql_connect($DatabaseHost$DatabaseUser$DatabasePassword)
            or die(
    'Verbindung mit Datenbankserver schlug fehl!');
        
    mysql_select_db($Database)
            or die(
    'Auswahl der Datenbank schlug fehl!');

        
    // Sammeln der Datensätze
        
    $records = array();
        
    $query '
            SELECT
                    `ordnername`
              FROM
                    `navigation`
            '
    ;
        
    $result mysql_query($query)
            or die(
    'Datenbankabfrage schlug fehl!');
        while( 
    $records[] = mysql_result($result0) ) {
            continue;
        } 

        
    // Sammeln der Dateien
        
    $files = array();
        if( 
    $handle opendir('modules') ) {
            while( 
    false !== ($file readdir($handle)) ) {
                if( 
    $file == '.' || $file == '..' || $file == 'index.html' ) {
                    continue;
                }
                
    $files[] = $file;
            }
            
    closedir($handle);
        } 
     

  7. #7
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!

    Der Dir zugewiesene Arbeitsspeicher langt nicht aus.
    phpinfo() müsste Dir unter memory_limit 16M anzeigen.
    Dein Script benötigt aber mehr wie 16M.
    Wenn Du also kein Zugriff auf die php.ini hast, wirst Du wohl wahrscheinlich die Verzeichnisinhalte aufteilen müssen.
    Aber vieleicht fällt Gumbo da ja noch ein Trick ein.

    Gruss Dr Dau
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Ich glaube kaum, dass die Indexierung eines Verzeichnisses so viele Ressourcen schluckt. Und auch der Rest wird sicherlich nicht so viel benötigen. Ist das denn das Einzige, was das Skript macht?
     
    Markus Wulftange

  9. #9
    ihop ihop ist offline Mitglied Bronze
    Registriert seit
    Aug 2003
    Beiträge
    47
    nein das is nur das script da wird nur die config.php includet mehr nicht
     

Ähnliche Themen

  1. Byte Array in MySQL Datenbank schreiben/auslesen
    Von hebel2 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 5
    Letzter Beitrag: 28.09.10, 15:49
  2. Antworten: 0
    Letzter Beitrag: 06.08.06, 05:22
  3. blob in Datenbank schreiben bzw. auslesen
    Von psykochris im Forum Java
    Antworten: 1
    Letzter Beitrag: 20.06.06, 08:53
  4. Antworten: 3
    Letzter Beitrag: 06.12.05, 20:54
  5. IMG files in Datenbank Schreiben und Auslesen
    Von liquidbeats im Forum PHP
    Antworten: 6
    Letzter Beitrag: 25.05.04, 23:37