T.or.sten: Bilder in eine HTML-Vorlage laden

Guten Tag,

folgendes Problem habe ich:

Ich habe ein Bilder-Upload-Script, welches ermöglicht, normale Bilder hochzuladen. Danach wird auch ein Link ausgespuckt. Allerdings soll das Bild, welches hochgeladen wird, in eine .html Seite escheinen. Die html-Datei sollte aus einer Vorlage bestehen (wo ich z.B. Texte, Buttons usw. vorher reintun kann) .

Im Prinzip soll das so aussehen:

User lädt Datei "xyz.jpg" hoch. Script generiert das Bild in eine .html-Datei . Die .html-Datei heißt dann "xyz.html" und beinhaltet zentriert das Bild "xyz.jpg" und andere Dinge, die ich vorgegeben habe.

Also muss das Script, in mein Script ;) .

Vielen Dank für die Hilfe!

  1. Hi there,

    Also muss das Script, in mein Script ;) .

    Und was willst Du jetzt wissen?

    1. Ups, entschuldigung das das nicht ersichtlich wurde.

      Wie geht sowas ;) Gibt es so ein script etc. ?

      Hi there,

      Also muss das Script, in mein Script ;) .

      Und was willst Du jetzt wissen?

      1. Hello,

        das nennt sich dann "Template-Technik"

        Du baust eine HTML-Seite ohne Inhalt.
        Anstelle des Inhaltes und er Links enthält sie nur Variablen. Das sieht dann z.B. so aus:

        ...

        <table>
           <tr>
             <td class="mypicture"><!--{BILD}--></td>
             <td class="normaltext"><!--{KURZTEXT}--></td>
           </tr>

        <tr>
             <td class="langtext" colspan="2"><!--{LANGTEXT}--></td>
           </tr>
         </table>

        Wenn nun ein Bild hochgeladen wird, nimmt das Script diese Vorlage, und ersetzt die Variablen durch die richtigen Werte. Die können dann auch erst zur Anzeige aus der Datenbank oder einer Datei geholt werden und eingefügt werden.

        Willst Du so ein System bauen? Dann frag, was Du nicht alleine finden kannst im Manual.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Ich muss ehrlich gestehen, dass ich wenig verstanden habe.

          Also ich habe nun eine Datei, die sich aus einer Datenbank Informationen holt und die dann in eine vorkonfigurierte HTML-Datei getan wird.

          Ich benutze nur keine Datenbank.

          Ist es nicht möglich, dass folgend zu machen (Anmerkung: Ich bin froh, dass ich es soweit geschafft habe) :

          a. User lädt Datei hallo.jpg hoch
          b. Script sieht die Datei, generiert eine vorgefertigte HTML-Datei mit dem Bild
          c. Die Adresse der HTML-Datei wird ausgespuckt (derzeit zeigt er nur den Link zu dem Bild an)

          Mehr brauche ich nicht. Keine großen Spielerein.

          Vielen Dank

          Hello,

          das nennt sich dann "Template-Technik"

          Du baust eine HTML-Seite ohne Inhalt.
          Anstelle des Inhaltes und er Links enthält sie nur Variablen. Das sieht dann z.B. so aus:

          ...

          <table>
             <tr>
               <td class="mypicture"><!--{BILD}--></td>
               <td class="normaltext"><!--{KURZTEXT}--></td>
             </tr>

          <tr>
               <td class="langtext" colspan="2"><!--{LANGTEXT}--></td>
             </tr>
          </table>

          Wenn nun ein Bild hochgeladen wird, nimmt das Script diese Vorlage, und ersetzt die Variablen durch die richtigen Werte. Die können dann auch erst zur Anzeige aus der Datenbank oder einer Datei geholt werden und eingefügt werden.

          Willst Du so ein System bauen? Dann frag, was Du nicht alleine finden kannst im Manual.

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          1. Guten Morgen,

            bitte lösche den von Dir nicht zur Stellungnahme benötigten, automatisch generierten Text im Eingabefeld heraus. (vgl.: TOFU)

            a. User lädt Datei hallo.jpg hoch
            b. Script sieht die Datei, generiert eine vorgefertigte HTML-Datei mit dem Bild
            c. Die Adresse der HTML-Datei wird ausgespuckt (derzeit zeigt er nur den Link zu dem Bild an)

            Tom hatte Dir ein Template-System nahegelegt, was ich hier ebenfalls als sinnvoll erachte. Angenommen, daß für jedes hochgeladene Bild ein neunes HTML-Dokument erstellt werden würde, so ist es nur eine Frage der Zeit, bis Dein Webspace aufgebracht ist, und das nicht mal für die vielen Bilder, sondern wegen denm einzelnen Dokumenten, die sich nur in einer möglichen Bildbeschreibung (Vorschlag von Tom), jedenfalls aber in der Sourcenangebe unterscheiden. Alle anderen Elemente des Dokuments blieben gleich.
             Da in der Programmierung soetwas gerne zusammengefaßt wird, nimmt man eben ein solchens, sich immer gleichbleibendes Grundgerüst als Schablone (englisch: template) und tauscht Pfadangaben und begleitende Texte einfach aus. Soweit die Theorie - nun die Praksis:

            bild.tpl=>

              
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
            <html>  
            <head>  
            <title>Bild</title>  
            </head>  
            <body>  
            <p><!--{BILD}--></p>  
            </body>  
            </html>  
            
            

            index.php=>

              
            <?php  
            # Einlesen des Templates  
            $tpl=file_get_contents('bild.tpl');  
            # Einsetzen der Bildangabe  
            $tpl=str_replace('<!--{BILD}-->','<img src="'.$bildpfad.'" alt="Galeriebild">',$tpl);  
            # Ausgabe als Dokument  
            echo $tpl;  
            ?>
            

            Wie $bildpfad im Script ermittelt werden soll, da Du ja keine Datenbank nutzt, (was sich für mich auch nicht als notwendig darstellt,) hängt auch von der Ablage der Bilder durch das uploade script ab. Vielleicht hast Du die Möglichkeit auf den Quellcode des Scripts zuverweisen, das man sich diesen ansehen kann.

            Oder ist dieses Script noch gar nicht fertig und Du hast bei dessen Erstellung Probleme?

            Am naheliegensten wäre zur Umsetzung Deines Punktes (c.) Verweise auf index.php mit eine Query String zu generieren. Wobei dann $bildpfad aus eben diesen Query String resultiert.

            Gruß aus Berlin!
            eddi

            1. Hallo,

              bild.tpl=>

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
              <html>
              <head>
              <title>Bild</title>
              </head>
              <body>
              <p><!--{BILD}--></p>
              </body>
              </html>

                
              Diese Datei habe ich erstellt und nach meinen Bedürfnissen verändert. Hat gut geklappt (tpl wird erkannt) .  
                
              
              > Wie `$bildpfad`{:.language-php} im Script ermittelt werden soll, da Du ja keine Datenbank nutzt, (was sich für mich auch nicht als notwendig darstellt,) hängt auch von der Ablage der Bilder durch das uploade script ab. Vielleicht hast Du die Möglichkeit auf den Quellcode des Scripts zuverweisen, das man sich diesen ansehen kann.  
                
              Würde den Quellcode ungerne zeigen, allerdings habe es gescriptet, dass er vom Ausgangsordner in ein neuen Ordner hochlädt.  
                
              ~~~php
                
               copy($_FILES['upload']['tmp_name'],"$path$name"); // Datei Uploaden  
              
              

              Am naheliegensten wäre zur Umsetzung Deines Punktes (c.) Verweise auf index.php mit eine Query String zu generieren. Wobei dann $bildpfad aus eben diesen Query String resultiert.

              Wie mache ich das? Wenn die Hauptseite index.php heißt und die Datei von dir index2.php .

              Vielen Dank!

              Mit freundlichen Grüßen

              1. Re:

                Am naheliegensten wäre zur Umsetzung Deines Punktes (c.) Verweise auf index.php mit eine Query String zu generieren. Wobei dann $bildpfad aus eben diesen Query String resultiert.

                Wie mache ich das? Wenn die Hauptseite index.php heißt und die Datei von dir index2.php .

                  
                if(copy($_FILES['upload']['tmp_name'],$path.$name))  
                    echo '<a href="index2.php?'.urlencode($path.$name).'">Bild</a>; // Datei Uploaden  
                
                

                und in index2.php

                  
                $tpl=file_get_contents('bild.tpl');  
                $tpl=str_replace('<!--{BILD}-->','<img src="'.$_SERVER['QUERY_STRING'].'" alt="Galeriebild">',$tpl);  
                echo $tpl;  
                
                

                Gruß aus Berlin!
                eddi

                1. Ich bedanke mich viel mals. Klappt wie gewünscht!

                  Mit freundlichen Grüßen

                2. Hello,

                  $tpl=file_get_contents('bild.tpl');
                  $tpl=str_replace('<!--{BILD}-->','<img src="'.$_SERVER['QUERY_STRING'].'" alt="Galeriebild">',$tpl);
                  echo $tpl;

                  Noch ein Tipp am Rande:
                  Wenn Dir die Template-Technik gefällt, und Du sie weiter ausbauen willst, dann solltest Du Dir auch eine andere Form der Ersetzung mal durch den Kopf gehen lassen:

                  $tpl = str_replace('<!--{BILD}-->',
                                     '<!--{BILD}--><img src="'.$_SERVER['QUERY_STRING'].'" alt="Galeriebild"><!--/{BILD}-->',$tpl);

                  Dann würde der Image-Tag von zwei definierten Begrenzern eingebunden, und könnte später auch leicht wiedergefunden, nochmals ersetzt, oder entfernt werden. Dafür würde man dann wahrscheinlich regular Expressions benutzen.

                  Auf diese Weise wäre es aber möglich, ein CMS auf HTML-Basis zu bauen. Das würde dann nur für die Generierung oder Bearbeitung der Seiten aktive Elemente benötigen. Die erzeugten Seiten wären aber auf einem normalen Browser anzeigbar, auch ohne Datenbankanbindung.

                  Harzliche Grüße vom Berg
                  http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau