Ergebnis 1 bis 19 von 19

Thema: Galerie

  1. #1

    Galerie

    Hallo, ich habe mal wieder eine PHP Frage^^
    Und zwar geht es um eine Galerie.
    Ich möchte gerne einen Ordner auslesen, und alle in ihm sich befindlichen Bilder anzeigen lassen.
    Das ist soweit auch kein Problem. Nur möchte ich es gerne so haben, dass jedes einzelne Bild in ein <td> Tag einer Tabelle kommt.
    Wenn ich in so einen <td> Tag die Variable einfüge, die den Ordner ausgelsen hat, dann werden in diesesm Tag eben alle Bilder des Ordners angezeigt.
    Ich möchte logischerweise nur ein Bild pro <td> angezeigt haben, also wie funktioniert das?

    Hier nochmal der Code

    HTML-Code:
    <?php
    
    $ordner="./bilder/";
    $lesen = opendir ($ordner); 
    while($file = readdir($lesen))
    {
        if ($file != "." && $file != ".." && $file != "index.php") {
    
    print "<img src=".$ordner."/".$file."><br>";
     }
    }
    closedir($lesen);
    ?>
    
    
    <table width="95%" border="2">
    <tr>
    <td width="200" height="200">1</td>
    <td width="200" height="200">2</td>
    <td width="200" height="200">3</td>
    </tr>
    <tr>
    <td width="200" height="200">4</td>
    <td width="200" height="200">5</td>
    <td width="200" height="200">6</td>
    </tr>
    <tr>
    <td width="200" height="200">7</td>
    <td width="200" height="200">8</td>
    <td width="200" height="200">9</td>
    </tr>
    <tr>
    <td width="200" height="200">10</td>
    <td width="200" height="200">11</td>
    <td width="200" height="200">12</td>
    </tr>
    </table>
    Danke schonmal im Vorraus.

  2. #2
    Ich würde dir einfach raten, die Tabelle aufzumachen und dann den PHP-Code zu schreiben:
    PHP-Code:
    <table width="95%" border="2">

    <?php

    $ordner
    ="./bilder/";
    $lesen opendir ($ordner); 
    $i 0;
    while(
    $file readdir($lesen))
    {
        if (
    $file != "." && $file != ".." && $file != "index.php") {
            if (
    $i == 0) { // Jedes dritte Mal
                
    echo "<tr>"// wird ein <tr>-Tag ausgegeben,
            
    //    um eine neue Zeile anzufangen.

            
    echo "<td><img src=".$ordner."/".$file."></td>"// Das Bild wird in einer Zelle ausgegeben
            
    $i++;

            if (
    $i == 0) { // Jedes dritte Mal 
                
    echo "</tr>"// wird das <tr>-Tag geschlossen, 
            
    // damit nachher ein neues aufgemacht werden kann
        
    }
    }
    if (
    $i != 0) { //Am Ende muss evtl. noch das letzte <tr>-Tag geschlossen werden
        
    echo "</tr>";
    }
    closedir($lesen);
    ?>

    </table>
    Ich hoffe es ist richtig, nicht getestet, nur aus dem Kopf. Aber dürfte passen, sonst wird sicher ohnehin gleich jemand über mich herfallen!

    Geändert von drunken monkey (11.04.2006 um 15:31 Uhr)

  3. #3
    Du könntest aber mit JS die <img>s dynamisch in die Zellen packen. (Jaa, ich weiß, blöde Idee^^)

  4. #4
    Oja danke drunken monkey, klappt alles perfekt ; )

    Aber eine Frage noch: Wie könnte ich eine Blätterfunktion realisieren?

    Soll bedeuten, dass wenn die Galerie eine Bestimmte Anzahl an Bildern erreicht hat, die neuen Bilder in einer neuen Seite dargestellt werden.

    Geändert von Antares (11.04.2006 um 18:52 Uhr)

  5. #5

    mit JS

    Eine frage kann noch mal jemand nen script posten wie das ganz aussähe mit einem Javascript das das dann halt links oben oder so kommt, bin begeisteter PHP + MYsql coder aber irgendwie stoße ich da an meine grenzen!!

    Danke für den Code oben der ist echt klasse damit hatte ich 300 bilder in 2 sec in ner Table

  6. #6

    code???

    Code:
    <?php
    
    $PfadThumbnails="./pic_old/tumb/";
    $PfadBilder="./pic_old/";
    $AnzahlThumbnailsProZeile=3;
    
    if($Verzeichniszeiger=opendir($PfadThumbnails))
    {
    	$Table="<table border=\"0\" cellpadding=\"2\" cellspacing=\"5\"><tr>";
    	$i=0;
    	while($Datei=readdir($Verzeichniszeiger))
    	{
    		if(substr($PfadThumbnails.strtolower($Datei), -4)==".jpg" || substr($PfadThumbnails.strtolower($Datei), -5)==".jpeg" || substr(strtolower($PfadThumbnails.$Datei), -4)==".gif" || substr($PfadThumbnails.strtolower($Datei), -4)==".png")
    		{
    			$Bilddaten=getimagesize($PfadBilder.substr($Datei, 3));
    			$Bildbreite=$Bilddaten[0];
    			$Bildhoehe=$Bilddaten[1];
    			$Thumbnaildaten=getimagesize($PfadThumbnails.$Datei);
    			$Thumbnailbreite=$Thumbnaildaten[0];
    			$Thumbnailhoehe=$Thumbnaildaten[1];
    			if($i%$AnzahlThumbnailsProZeile==0 && $i!=0)
    			{
    				$Table.="</tr><tr>";
    			}
    			$Table.="<td><a href=\"javascript:GrafikAnzeigen('".$PfadBilder.substr($Datei, 3)."', '".$Bildbreite."', '".$Bildhoehe."');\"><img border=\"0\" height=\"".$Thumbnailhoehe."\" src=\"".$PfadThumbnails.$Datei."\" title=\"Zum Vergrößern aufs Foto klicken\" width=\"".$Thumbnailbreite."\"></a></td>";
    			$i++;
    		}
    	}
    	$Table.="</tr></table>";
    	closedir($Verzeichniszeiger);
    }
    
    ?>
    
    <html>
    <head>
    <title>Grafik passend in einem PopUp Fenster öffnen (mit PHP)</title>
    <script>
    <!--
    
    function GrafikAnzeigen(GrafikURL, Breite, Hoehe)
    {
    	Fensteroptionen="toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0";
    
    	Grafikfenster=window.open("", "", Fensteroptionen + ',width=' + Breite + ',height=' + Hoehe);
    	Grafikfenster.focus();
    	Grafikfenster.document.open();
    	with(Grafikfenster)
    	{
    		document.write("<html><head>");
    		document.write("<title>Grafikanzeige</title>");
    		document.write("</head>");
    		document.write("<body leftmargin=\"0\" marginheight=\"0\" marginwidth=\"0\" topmargin=\"0\">");
    		document.write("<img border=\"0\" onclick=\"window.close();\" src=\""+ GrafikURL +"\" title=\"Zum Schließen auf das Foto klicken\">");
    		document.write("</body></html>");
    	}
    }
    
    //-->
    </script>
    </head>
    <body>
    
    <?php
    
    echo $Table;
    
    ?>
    
    </body>
    </html>
    den code habe ich von einer seite, aber irgendwie kann der die tumb's laden aber die anderen großen datein nicht ein Beispiel gibts auf http://klasse9bonline.kl.funpic.de/gallery.php

    Es kamen auch noch mass Fehlermeldungen:
    Code:
    Warning: getimagesize(./pic_old/909_123404.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    
    Warning: getimagesize(./pic_old/913_094524.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    
    Warning: getimagesize(./pic_old/913_095950.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    
    Warning: getimagesize(./pic_old/913_110206.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    
    Warning: getimagesize(./pic_old/913_110246.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    
    Warning: getimagesize(./pic_old/913_110507.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    ....
    ......
    Code:
    Warning: getimagesize(./pic_old/_harte_leben_eines_cs_zockers.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    ....
    Code:
    Warning: getimagesize(./pic_old/pert_im_Duplokasten.gif): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    
    Warning: getimagesize(./pic_old/psoon.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15
    
    Warning: getimagesize(./pic_old/eie___is_das_rutschig.jpg): failed to open stream: No such file or directory in /usr/export/www/vhosts/funnetwork/hosting/klasse9bonline/gallery.php on line 15

  7. #7
    Erstmal willkommen hier im Forum! Allerdings weiß ich nicht, was da der Fehler sein könnte, von Trivia wie nicht vorhandenem Verzeichnis/File (wie's ja in der Fehlermeldung steht) mal abgesehen.

    Zitat Zitat von Antares
    Oja danke drunken monkey, klappt alles perfekt ; )

    Aber eine Frage noch: Wie könnte ich eine Blätterfunktion realisieren?

    Soll bedeuten, dass wenn die Galerie eine Bestimmte Anzahl an Bildern erreicht hat, die neuen Bilder in einer neuen Seite dargestellt werden.
    Bitte!

    Und zur Blätterfunktion:
    PHP-Code:
    <table width="95%" border="2">

    <?php

    $ordner
    ="./bilder/";
    $lesen opendir ($ordner); 
    $i 0;
    if (isset (
    $_GET['page'])) {
        
    $bereich $_GET['page'];
    } else {
        
    $bereich 1;
    }
    $bereich *= 30// Statt 30 Anzahl der Bilder pro Seite einfügen
    while($file readdir($lesen))
    {
        if (
    $file != "." && $file != ".." && $file != "index.php") {
            if (
    $i >= $bereich) { // Falls die entsprechenden Bilder
                
    break;           // eingefügt wurden wird 
            
    }                    // die Schleife unterbrochen
            
    if ($i >= ($bereich 30) { // Nur im richtigen Bereich werden Bilder eingefügt
                
    if ($i == 0) { // Jedes dritte Mal
                    
    echo "<tr>"// wird ein <tr>-Tag ausgegeben,
                
    //    um eine neue Zeile anzufangen.

                
    echo "<td><img src=".$ordner."/".$file."></td>"// Das Bild wird in einer Zelle ausgegeben
                
    $i++;

                if (
    $i == 0) { // Jedes dritte Mal 
                    
    echo "</tr>"// wird das <tr>-Tag geschlossen, 
                
    // damit nachher ein neues aufgemacht werden kann
            
    }
        }
    }
    if (
    $i != 0) { //Am Ende muss evtl. noch das letzte <tr>-Tag geschlossen werden
        
    echo "</tr>";
    }
    closedir($lesen);
    ?>

    </table>
    Sollte eigentlich funktionieren.
    Mit Links auf "?page=2" usw. könntest du dann auf die weiteren Seiten verweisen.

  8. #8
    Hm, danke vielmals, aber es gibt leider noch einen Fehler.

    Code:
    Parse error: syntax error, unexpected '{' in /usr/export/www/vhosts/funnetwork/hosting/myrpgsquare/main/galerie.php on line 20
    Wenn ich dieses { entferne gibt es einen Fehler in Line 21.

  9. #9
    Zitat Zitat von Antares
    Hm, danke vielmals, aber es gibt leider noch einen Fehler.

    Code:
    Parse error: syntax error, unexpected '{' in /usr/export/www/vhosts/funnetwork/hosting/myrpgsquare/main/galerie.php on line 20
    Wenn ich dieses { entferne gibt es einen Fehler in Line 21.
    Kannst du mir sagen, welche Zeile das in deinem Code ist, bzw. ihn posten? Und welcher Fehler kommt in Zeile 21, wenn du's wegnimmst?

  10. #10
    Momentan hab ich den Code noch 1 zu 1 kopiert.
    Demnach ist Zeile 20 diese:

    PHP-Code:
    if ($i >= ($bereich 30) { // Nur im richtigen Bereich werden Bilder eingefügt 
    Aber wäre es nicht unlogisch, wenn man dieses { entfernen würde?

  11. #11
    Zitat Zitat von Antares
    PHP-Code:
    if ($i >= ($bereich 30) { // Nur im richtigen Bereich werden Bilder eingefügt 
    Es gehört eine zweite Klammer zu, das war der einzige Fehler! >_< Jetzt wo ich die Zeile so sehe, ist's sofort klar! Also:
    PHP-Code:
    if ($i >= ($bereich 30)) { // Nur im richtigen Bereich werden Bilder eingefügt 
    Ich sollte schlafen gehen...

  12. #12
    Jo Fehler behoben, alles klar danke

    Aber...gibt leider noch ein Problem

    Angenommen ich habe die Zahl der Bilder, die Pro Seite angezeigt werden auf 6 gestellt, so werden auf Seite 1 6 Bilder angezeigt, soweit so gut.
    Aber, wenn ich jetzt auf Seite 2 klicke (habe mal nen Link hinzugefügt "galerie.php?page=2")
    dann werden die restlichen Bilder einfach an die 6 Bilder drangehängt, anstatt dass sich ne neue Seite mit den neuen Bildern (ohne die alten) öffnet.

    Heißt ja, dass der Code funktioniert, nur sollte er eben dann die "alten" Bilder nicht anzeigen.

  13. #13
    Mein heißester Tipp ist, dass du Zeile 20 nicht auch geändert hast: dort gehört natürlich auch "6" statt "30" hin. Also die zum zweiten Mal ausgebesserte Zeile 20:
    PHP-Code:
    if ($i >= ($bereich 6)) { // Nur im richtigen Bereich werden Bilder eingefügt 
    Dachte es sei klar, hätte es aber auch hinschreiben können.

  14. #14
    Ist mir später auch noch eingefallen, aber da war ich nicht mehr on.
    Naja sorry

    Aber danke nochmals für deine große Hilfe

  15. #15

    Warnung, OT

    Zitat Zitat von drunken monkey
    Ich würde dir einfach raten, die Tabelle aufzumachen und dann den PHP-Code zu schreiben:
    Ich möchte nur darauf hinweisen, daß so etwas grauenerregend schlechter Stil ist und unter allen Umständen vermieden werden sollte. Inline-Code ist das PHP-Äquivalent zu GOTO: Er führt sehr schnell zu einem unwartbaren Haufen Spaghetticode, den selbst der Autor nur noch mit Mühe entwirren kann. Frag' mal SDS, warum niemand die RMXP-Erweiterung für's Atelier schreiben wollte.

    Wenn man mit PHP HTML-Code generiert sollte man Templates nutzen, wann immer das möglich ist. Mit Templates kann man ohne Probleme Interface und Programmlogik voneinander trennen - und sie sind gar nicht mal schwer umzusetzen.

    Ein einfaches Templatesystem könnte so aussehen:
    PHP-Code:
    ### Diesen Kram könnte man wunderbar in ein Include packen
    <?php
      
    // Lädt ein Template in einen String und escapt alle Anführungszeichen. Gibt
      // FALSE zurück, wenn die gewünschte Datei nicht existiert
      
    function load_template($file)
      {
        if (!
    is_file($file)) return false;
        return 
    str_replace('"','\"',implode('',file($file)));
      }

      
    // Diese Funktion nimmt den Content, wickelt ihn in eine Basisseite ein und
      // schickt ihn an den Browser
      
    function send_page($content$basefile)
      {
        
    $template load_template($basefile);
        
    $template str_replace('{CONTENT}'$content$template);

        echo 
    stripslashes($template);
      }
    ?>
    Den Kram benutzt man dann so:
    PHP-Code:
    <?php
      
    require('Die Datei da oben');

      
    // Hier kommt Code, der eine Liste von Zeilen erzeugt, die wir brauchen.
      // Beispielsweise Bild-URLs. Der Kram wird in $zeilen geschrieben.

      // Wir laden das Template, das die einzelnen Zeilen darstellt
      
    if (!$td_template load_template('res/td.htm'))
        die(
    'zOMG, konnte das Template nicht finden!!1');
      
    // Ein String, der hinterher die fertigen Tabellenzeilen beinhaltet
      
    $zeilen_liste '';

      foreach (
    $zeilen as $url)
      {
        
    // Wir schreiben den URL dahin, wo beim Template {URL} steht und
        // hängen das Ergebnis an die Liste an
        
    $zeilen_liste .= str_replace('{URL}'$url$td_template);
      }

      
    // Jetzt geben wir den Kram aus
      
    send_page($zeilen_liste'res/gallerie.htm');
    ?>
    Zum Schluß noch die beiden Templates:

    HTML-Code:
    ### res/gallerie.htm
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <title>Galerie</title>
      </head>
      <body>
        <table>
    {CONTENT}
        </table>
      </body>
    </html>
    
    ### res/td.htm
          <tr><td><img src="{URL}" alt=""></td></tr>

    Das ist an sich alles, was man für Templates braucht. Man kann in einem Template mehrere Variablen verbauen (die man dann ersetzt, indem man mehrmals str_replace() mit verschiedenen Werten drüber laufen läßt) und man kann Templates in Templates verschachteln und so komplexe Seitenlayouts umsetzen (indem man einfach eine durchgearbeitete Templatevariable nimmt und sie per str_replace() in eine andere einfügt) und hat damit alle Möglichkeiten, die man ohne Templates auch hat. Aber der Code ist sauber getrennt (zwischen HTML und PHP) und man hat später kaum Schwierigkeiten, den Kram zu warten.

    Und ja, man sollte für jedes kleine poplige Projekt Templates verwenden (zumindest solange es HTML ausgibt). Wenn man sie nicht verwendet gewöhnt man sich daran, sie nicht zu verwenden und tut da irgendwann auch in einer Seite, die man (oder gar jemand anders) später noch mal warten können muß. Und das kann einem die Arbeit nur schwerer machen.

  16. #16
    Zitat Zitat von Jesus_666
    ...Bahnhof...billige Zahnpasta...
    ZOMG, ich verstehe kein Wort!
    Nein, im Ernst: ich hatte keine Ahnung, dass sowas überhaupt geht, ich habe einfach nur den einfachsten Code, der mir eingefallen ist genommen. Und genau das sind dann die Sachen, die gute Programmierer von Leuten trennen, die bloß funktionierende Sachen hinfetzen.

    Vielen Dank, du hast meinen Horizont erweitert! Fast so wie die Leute, die mir nach meiner ersten Homepage eine "Feuertaufe" verpasst haben!

    Aber am Anfang habe ich echt kein Wort verstanden. Jetzt habe ich's mir nochmal genau durchgelesen und kapiere immerhin halbwegs, um was es geht, vielen Dank!

  17. #17
    Freut mich, daß ich dir was vermitteln konnte. Templates sind in PHP wirklich einfach umzusetzen und sie sind verdammt praktisch. (Rate mal, wie man wechselbare Seitendesigns mit wenig Aufwand hinkriegt...)

  18. #18
    @Jesus_666

    Also der erste PHP Code wird includet, soweit klar.
    Aber wo kommt mein Code hin ?
    PHP-Code:
    <?php

    $ordner
    ="./bilder/";
    $lesen opendir ($ordner); 
    while(
    $file readdir($lesen))
    {
        if (
    $file != "." && $file != ".." && $file != "index.php") {

    print 
    "<img src=".$ordner."/".$file."><br>";
     }
    }
    closedir($lesen);
    ?>

  19. #19
    Zitat Zitat von Jesus_666
    Freut mich, daß ich dir was vermitteln konnte. Templates sind in PHP wirklich einfach umzusetzen und sie sind verdammt praktisch. (Rate mal, wie man wechselbare Seitendesigns mit wenig Aufwand hinkriegt...)
    Mir konntest du auch was vermitteln.
    klingt ja recht interessant mit den Templates. Und gut, dass ich das hier gelesen habe, bevor ich mit der Überarbeitung / komplett-neu-Schreibung meiner Homepage angefangen habe.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •