tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
530
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    Hi,
    meine Website nutzt ein relativ simples "Template-System".
    Ich habe HTML-Dateien mit Platzhaltern ( {content} etc.) und PHP-Dateien, die den Code enthalten und in denen die Inhalte erzeugt werden.
    Am Ende jeder PHP-Datei kommt ein Teil, der immer gleich aufgebaut ist.
    Mittels str_replace() ersetze ich die Platzhalter durch die dynamischen Inhalte. Die HTML-Dateien lade ich per file_get_contents() in das PHP-Script.
    So weit, so gut

    Nun habe ich für den Admin-bereich meiner Seite ein kleines Script geschrieben, mit dem sich Bilder in die DB eintragen lassen. Klappt auch wunderbar.
    Das Problem liegt nun aber im Template Teil. Ich bekomme nur eine Fehlermeldung ausgegeben, kann diese aber absolut nicht nachvollziehen.
    Hier zunächst mal mein Code:

    PHP-Code:
    <?php
    /* alkbrueder.de alkeys_insertpics.php last changed 02.06.05 by philipp@alkbrueder.de */

    include("vars.inc.php");

    if (isset(
    $_POST["Submit"])) 
    {
        
    $directory '/blabla/'.$_POST["datum"];
        
    chdir($directory);
        
    $handle opendir($directory);
        
        
    $res mysql_connect("localhost""YYY""XXX");
        if (!
    $res)
        {
            echo 
    "Kann z.Z. keine Verbindung zum Datenbankserver aufbauen.\n";
            exit;
        }
        
    mysql_select_db("alkbrueder_de");
        
        
    $i 1;
        
        while(
    $file readdir($handle))
        {
            
    $type explode("."$file);
            
            if(
    $type['1'] == "JPG" || $type['1'] == "SWF")
            {
                if(!
    is_dir($file))
                {
                    
    $sqlab 'INSERT INTO `gallery` (name, date, id2) VALUES ("'.$file.'", "'.$_POST['datum'].'", "'.$i.'")';
                    
    $res mysql_query($sqlab) or die(mysql_error());
                    if(
    $insert $res)
                    {
                        
    $query_output .= 'Datei: <b>'.$file.'</b> eingef&uuml;gt<br>';
                    }
                    else
                    {
                        
    $query_output .= 'Datei: '.$file.' nicht eingef&uuml;gt<br>';
                    }
                    
    $i++;
                }
            }
        }
        
    mysql_close();
        
        
    $alkeys_insertpics_output str_replace("{output}"$query_outputfile_get_contents("templates/message.html"));
    }
    else
    {
        
    $alkeys_insertpics_output file_get_contents("templates/alkeys_insertpics.html");
    }

    $tpl str_replace('{content}'$alkeys_insertpics_outputfile_get_contents("templates/index.html"));
    $tpl str_replace('{rightbar}'""$tpl);
    $tpl str_replace('{leftbar}',  ""$tpl);
    $tpl str_replace('{welcome}',  $welcome$tpl);
    $tpl str_replace('{navi}'$tpl_navi$tpl);
    $tpl str_replace('{paging}'""$tpl);

    print 
    "$tpl";
    ?>
    Der Fehler tritt nur in der if-Abfrage auf, also wenn das Formular abgeschickt wurde. Der else-teil funktioniert super.

    Wenn ich das Script ausführe, erhalte ich folgende Meldung:
    Warning: file_get_contents(templates/message.html): failed to open stream: No such file or directory in /blabla/alkeys_insertpics.php on line 46
    Zeile 46 ist diese hier:
    PHP-Code:
        $alkeys_insertpics_output str_replace("{output}"$query_outputfile_get_contents("templates/message.html")); 
    Nach genau diesem prinzip (und auch mit der Template-datei message.html) funktioniert es in anderen teilen meiner Site aber bestens.
    Einen Rechtsschreibfehler kann ich nicht entdecken.
    Ich hab sogar schon, den ganzen teile darüber auskommentiert, um einen fehler in diesem Bereich zu vermeiden.
    Hat alles nichts geholfen
    Entweder hab ich nun Tomaten auf den Augen und übersehe etwas total offensichtliches oder der fehler liegt ganz woanders.
    Bitte helft mir!
     

  2. #2
    Registriert seit
    Sep 2003
    Ort
    Fürth(Franken)
    Beiträge
    1.060
    Blog-Einträge
    3
    Naja...offensichtlich findet dein Script die Datei nicht, die sie öffnen soll!

    greetz
    daddz
     
    be inspired...simplify...

  3. #3
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    ...

    Wie oben erwähnt, rufe ich die selbe Datei auch in anderen scripts im selben Verzeichniss auf - und da klappts ja merkwürdigerweise
    Grad deswegen weiß ich ja auch nicht weiter
     

  4. #4
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    Es wäre mir echt wichtig, dass ihr mir hier helft.
    Ich hab echt schon alles ausprobiert, den Fehler aber nicht gefunden...
     

  5. #5
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Ich denke das Problem liegt hier:
    PHP-Code:
    $directory '/blabla/'.$_POST["datum"]; 
    Denn ich behaupte jetzt mal, dass "blabla" ein Unterverzeichnis des Verzeichnisses mit dem Script ist.
    Du gibst einen absoluten Pfad an, und zwar /blabla
    Falls Dein Script in /var/www/htdocs liegt und darunter auch blabla zu finden ist wirst Du aber entweder den absoluten Pfad /var/www/htdocs/blabla oder den relativen Pfad blabla (also ohne den / am Anfang) angeben muessen.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  6. #6
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    Da wär ich im Leben nicht drauf gekommen

    Obene heisst es korrekt:
    PHP-Code:
    $directory '/is/htdocs/45697/www.alkbrueder.de/gallery/'.$_POST["datum"]; 
    Nun habe ich auf deinen Post hin, bei den Templates auch den absoluten Pfad auf dem Server angegeben - siehe da: Jetzt gehts
    PHP-Code:
    file_get_contents("/is/htdocs/45697/www.alkbrueder.de/templates/message.html")); 
    Kannst du mir evtl. noch erklären, warum das so ist?!
     

  7. #7
    Avatar von Eistee
    Eistee Eistee ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Sauerland
    Beiträge
    195
    Hat keiner ne Idee, warum dieser Fehler aufgetaucht ist?
    Ich würd sowas in Zukunft gern vermeiden
     

  8. #8
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Wenn Du ein relatives Verzeichnis angibst musst Du am Anfang den / weglassen damit das System auch weiss, dass der Pfad relativ ist, also innerhalb des aktuellen Ordners.

    Beispiel:
    Du befindest Dich in /usr, willst nach /usr/local wechseln.
    Dazu kannst Du entweder mit dem absoluten Pfad arbeiten indem Du cd /usr/local eingibst, oder mit dem relativen indem Du cd local eingibst.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

Ähnliche Themen

  1. Find den fehler nicht
    Von floMatic im Forum PHP
    Antworten: 7
    Letzter Beitrag: 31.10.08, 03:03
  2. Antworten: 6
    Letzter Beitrag: 06.01.06, 17:01
  3. arrg, ich find den Fehler nicht
    Von meilon im Forum PHP
    Antworten: 2
    Letzter Beitrag: 22.04.04, 13:40
  4. ich find den fehler nicht ;(
    Von apex im Forum PHP
    Antworten: 4
    Letzter Beitrag: 02.04.03, 20:50
  5. Antworten: 5
    Letzter Beitrag: 06.05.02, 11:54