Gallerie-Problem [mit PHP, JS und anderen schönen Dingen]

Diskutiere Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] im Web & Grafik Forum im Bereich Internet & Telekomunikation Forum; Moin! Ich versuche für unsere Filmgruppe eine neue Internetseite zu Programmieren und modernen Glanz auf den Informationsgehalt zu projezieren...
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #1
Bond246

Bond246

Bekanntes Mitglied
Dabei seit
03.06.2006
Beiträge
2.544
Reaktionspunkte
0
Ort
127.0.0.1
Moin!

Ich versuche für unsere Filmgruppe eine neue Internetseite zu Programmieren und modernen Glanz auf den Informationsgehalt zu projezieren.

Ich habe da noch mehrere Baustellen, aber die Gallerie ist meine schwierigste.
Ich habe mir für die Visualisierung das JS-Plugin Highslide integriert.

Die Nutzung des Plugins funktionierte wunderbar, bis zu dem Punk, wo ich mir das Eintippen jedes einzelnen Bildes in ungefähr folgendes Format per PHP ersparen wolle:
HTML:
<a class="highslide" id="thumb20" href="highslide/images/thumbstrip01.jpg" alt="Two cabins"	onclick="return hs.expand(this, { slideshowGroup: 20 })">
<img src="highslide/images/thumbstrip01.thumb.png" alt=""/></a>
                                    
<div class="hidden-container">
    <a class="highslide" href="highslide/images/thumbstrip02.jpg" alt="Patterns in the snow" onclick="return hs.expand(this, { thumbnailId: 'thumb20', slideshowGroup: 20 })">
   <img src="highslide/images/thumbstrip02.thumb.png" alt=""/></a>
</div>
Erklärung: Oben wird ein Thumbnail dargestellt. Im Div-Container stehen alle Bilder des jeweiligen Albums.

Um jetzt also nicht für jedes der mittlerweile schon 13 Alben mit jeweils 5-10 Bildern eine derartige Prozedur aufschreiben muss, habe ich mir ein PHP-Script integriert.
PHP:
<?php
$ordner = "bilder/setfotos";
$handle = opendir($ordner);
$galordner="";
$i=1;
while ($file = readdir ($handle)) {
   if($file != "." && $file != "..") {
   $galordner[] = $ordner."/".$file;
   }
}
closedir($handle);
arsort($galordner);
foreach($galordner as $value)
   {
       $handle = opendir($value);
       while ($file = readdir ($handle)) {
           if($file != "." && $file != ".." && $file != "name.php") {
               if($tester==0) 
                   {   ?>
			           <tr>
				       <td id="thumb"><a class="highslide" id="tumb<?php echo "$i";?>" href="<?php echo "$value/$file";?>" alt="test1" onclick="return hs.expand(this, { slideshowGroup: <?php echo "$i";?> })">
                                      <img src="<?php echo "$value/$file";?>" width="200px" alt="" /></a>
										
			              <div class="hidden-container">
            <?php  } 
	          else { ?>
			             <a class="highslide" href="<?php echo "$value/$file";?>" alt="test2" onclick="return hs.expand(this, { thumbnailId: 'thumb<?php echo "$i";?>', slideshowGroup: <?php echo "$i";?> })">
				          <img src="<?php echo "$value/$file";?>" alt="" /></a>
                <?php }                 
                    $tester=1;
          }
   }
       echo "</div></td>
       <td id='title'>";
       include ($value."/name.php");
       echo "</td></tr>";
					
       $i=$i+1;
       $tester=0;
       closedir($handle);
}
            
?>

Der Aufmerksame PHP-Leser wird jetzt laut fluchen: "Was schließt und öffnet dieses Idiot ständig die PHP-Anweisung mit <?php ?>.
Jaaa, ich würds gerne nur mit echo " "; machen.
Das Problem ist, dass HTML-Anweisungen ja bekanntlich mit Anweisungen wie z.B. class=" " arbeiten. Wenn ich diese Anweisungen im echo-Befehl nutze, muss ich (um echo nicht wieder zu schließen) statt class=" " nun class=' ' schreiben.
Soweit schön und gut. Allerdings brauche ich bei folgender Anweisung noch die verschachtelten ' '-Anführungszeichen:
HTML:
onclick="return hs.expand(this, { thumbnailId: 'thumb20', slideshowGroup: 20 })"
Heinweis: Auf die Anweisung thumbnailId achten.
Deswegen schließe ich also den PHP-Teil, nutze normales HTML und öffne den PHP-Teil neu, wenn ich Variablen einfügen oder andere Script-Sachen machen will. Das ist zwar unschön, funktioniert aber.

Fakt ist, zumindest macht das PHP-Script, so wie ich es momentan nutze das, was ich will.
Wenn ich mir den HTML-Code der generierten Seite ansehe, dann haut alles hin.
Und dennoch will das JS-Script nicht funktionieren. Im Firefox werden mir mittlerweile sogar teilweise einige Album-Cover (also die Links zu dem Highslide-Album) nicht mehr angezeigt, obwohl die Grafikadressen stimmen.
Ich hab es auch schon soweit geschafft, dass die Highslide-Gallerie gestartet wird mit einem Klick auf die Cover. Doch die Gallerie funktioniert nicht.

Als Referenz, ob die JS-Dateien alle ordentlich eingebunden sind, habe ich unten auf der Seite noch ein Album per Hand hingeschrieben, auch das funktioniert. Nur die per PHP erstellen Alben wollen einfach nicht.

Ich hoffe, ihr könnt mir irgendwie helfen.
Wenn ihr noch Fragen habt, dann immer her damit.
Angucken könnt ihr euch eine Vorschau von dem ganzen Spaß unter http://sorbenmafia.so.funpic.de/filmgruppe/?id=fotos

Und wer ohne viel WirrWarr sehen will, wie es funktionieren soll, der kann sich das per Hand geschriebene hier nochmal schön angucken: http://sorbenmafia.so.funpic.de/filmgruppe/?id=team

Gruß
Bond
 
Zuletzt bearbeitet:
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #2
Bond246

Bond246

Bekanntes Mitglied
Dabei seit
03.06.2006
Beiträge
2.544
Reaktionspunkte
0
Ort
127.0.0.1
Hmm...
Scheint noch nicht wirklich wer vorbei gekommen zu sein, der hier irgend einen Denk- oder Schreibfehler im Code erkennt :suspicious:
 
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #3
skyborla

skyborla

Bekanntes Mitglied
Dabei seit
15.03.2003
Beiträge
1.308
Reaktionspunkte
0
Ort
127.0.0.1
Der Aufmerksame PHP-Leser wird jetzt laut fluchen: "Was schließt und öffnet dieses Idiot ständig die PHP-Anweisung mit <?php ?>.
Jaaa, ich würds gerne nur mit echo " "; machen.
Das Problem ist, dass HTML-Anweisungen ja bekanntlich mit Anweisungen wie z.B. class=" " arbeiten. Wenn ich diese Anweisungen im echo-Befehl nutze, muss ich (um echo nicht wieder zu schließen) statt class=" " nun class=' ' schreiben.
Soweit schön und gut. Allerdings brauche ich bei folgender Anweisung noch die verschachtelten ' '-Anführungszeichen:

PHP:
echo '<a href="links.htm" onmouseover="doshinythings(\'bla bla\')"> .... ';
nennt man auch escapen ...

vllt erkennt man den fehler ja, wenn der code mal sauber hingeschrieben ist ...
 
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #4
Bond246

Bond246

Bekanntes Mitglied
Dabei seit
03.06.2006
Beiträge
2.544
Reaktionspunkte
0
Ort
127.0.0.1
Danke für deinen Tipp.
Ich würde den Code ansich auch versuchen übersichtlicher zu Posten, aber das ist garnicht so einfach, wenn man keine Tab-stops nutzen kann, weil dann der Browser zwischen den Schaltflächen schaltet ;)

Hier also der neue PHP-Code:
PHP:
<?php
$ordner = "bilder/setfotos";
$handle = opendir($ordner);
$galordner="";
$i=1;
while ($file = readdir ($handle)) {
    if($file != "." && $file != "..") {
        $galordner[] = $ordner."/".$file;
    }
}
closedir($handle);
arsort($galordner);
foreach($galordner as $value)
	{
        $handle = opendir($value);
        while ($file = readdir ($handle)) {
            if($file != "." && $file != ".." && $file != "name.php" && $file != "Thumbs.db") {
                if($tester==0) 
                    {   
						echo '<tr>
							  <td id="thumb"><a class="highslide" id="tumb'.$i.'" href="'.$value.'/'.$file.'" alt="" onclick="return hs.expand(this, { slideshowGroup: '.$i.' })">
							  <img src="'.$value.'/'.$file.'" width="200px" alt="" /></a>
									
							<div class="hidden-container">';
                    } 
			   else { 
						echo '<a class="highslide" href="'.$value.'/'.$file.'" alt="" onclick="return hs.expand(this, { thumbnailId: \'thumb'.$i.'\', slideshowGroup: '.$i.' })">
							  <img src="'.$value.'/'.$file.'" alt="" /></a>';
                }                 
   					$tester=1;
	            }
            }
				echo '</div></td>
					<td id="title">';
				include ($value."/name.php");
				echo '</td></tr>';
					
				$i=$i+1;
                $tester=0;
                closedir($handle);
        }
            
?>
Den Umweg mit folgendem musste ich gehen, da das PHP den PHP-Code zwischen den Gänsefüßchen als HTML ausgeben würde
PHP:
href="'.$value.'/'.$file.'"
 
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #5
futtlui

futtlui

Bekanntes Mitglied
Dabei seit
21.01.2003
Beiträge
10.439
Reaktionspunkte
2
Hmm...
Scheint noch nicht wirklich wer vorbei gekommen zu sein, der hier irgend einen Denk- oder Schreibfehler im Code erkennt :suspicious:
jetzt wart halt erstmal ab - sind ja noch nichtmal 24 Stunden um.
Vielleicht hatte auch nur keiner Lust, ausgerechnet an Silvester Dein riesiges Posting komplett zu lesen.
Ich hab wenn ich ehrlich bin schon bei der Formulierung "neue Internetseite zu Programmieren und modernen Glanz auf den Informationsgehalt zu projezieren" das Interesse verloren mir das komplett anzutun...
 
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #6
Bond246

Bond246

Bekanntes Mitglied
Dabei seit
03.06.2006
Beiträge
2.544
Reaktionspunkte
0
Ort
127.0.0.1
jetzt wart halt erstmal ab - sind ja noch nichtmal 24 Stunden um.
Vielleicht hatte auch nur keiner Lust, ausgerechnet an Silvester Dein riesiges Posting komplett zu lesen.
Ich hab wenn ich ehrlich bin schon bei der Formulierung "neue Internetseite zu Programmieren und modernen Glanz auf den Informationsgehalt zu projezieren" das Interesse verloren mir das komplett anzutun...

Ja gut, wenn du die netten Umschreibungen wort für wort liest... :D

Ne, mir ist einfach auch schon öfters hier im Forum aufgefallen, dass man wenigstens eine Diskussion anregen kann, wenn man die Leute mit einer "neuen Antwort" ein wenig lockt. :pleased:

So und jetzt wünsche ich allen eine schöne Silvester-Fete und einen guten Rutsch ins neue Jahr.
Bei uns kann man im übrigen wirklich rutschen: Gestern Abend gabs zuerst Regen, später fielen die Temperaturen unter 0, der Regen ist gefroren und das Zeug von oben ist zu Schnee geworden. Zudem schneit es nun auch wieder seit gut 4h :ja:
 
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #7
skyborla

skyborla

Bekanntes Mitglied
Dabei seit
15.03.2003
Beiträge
1.308
Reaktionspunkte
0
Ort
127.0.0.1
also ich hab jetzt mal kurz drüber geschaut ... scheint mir alles zu passen, ich versteh nur nicht so ganz, was du mit der $tester willst. vielleicht liegts ja daran auf den ersten blick scheint mir das ganze nämlich keinen validen html-code auszugeben. d.h. mal durch den validator (http://validatio.w3c.org) jagen. und die fehlerkonsole (im firefox unter extras -> fehlerkonsole) schauen. es kann nämlich durchaus sein, dass das javascript nicht läuft, wenn die html syntax nicht stimmt.

btw. auch wenns komisch klingt, hast du dir wirklich mal den quellcode angeschaut, der im browser ankommt und verglichen, ob da wirklich das gleiche bei rauskommt? ich hab nämlich das gefühl, dass dem nicht der fall ist ...
 
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #8
Bond246

Bond246

Bekanntes Mitglied
Dabei seit
03.06.2006
Beiträge
2.544
Reaktionspunkte
0
Ort
127.0.0.1
Also wie man sieht ist das ganze ja eine Tabelle.
Und jedes Album wird mit einem anderen Tabellen-Teil "eröffnet" (siehe erste HTML-Box), als dann der Rest integriert wird (siehe 2. HTML-Box).
HTML:
<a class="highslide" id="thumb20" href="highslide/images/thumbstrip01.jpg" alt="Two cabins"	onclick="return hs.expand(this, { slideshowGroup: 20 })">
<img src="highslide/images/thumbstrip01.thumb.png" alt=""/></a>

<div class="hidden-container">
HTML:
    <a class="highslide" href="highslide/images/thumbstrip02.jpg" alt="Patterns in the snow" onclick="return hs.expand(this, { thumbnailId: 'thumb20', slideshowGroup: 20 })">
   <img src="highslide/images/thumbstrip02.thumb.png" alt=""/></a>
Die $tester-Variable sorgt dafür, dass nur für das erste Bild des jeweiligen Ordners auch der obere HTML-Code generiert wird und beim allen folgenden Dateien der andere.
(Keine Angst, der div-Container wird an jedem Ende auch wieder geschlossen, das habe ich auch schon im generierten Code überprüft.)

Und du hast Recht, manchmal wird der HTML-Code nicht korrekt ausgegeben, wenn man den mal im Browser überprüft. Wenn man aber einfach dann nochmal die Seite neu lädt, stimmt der Code. Die Code-Formatierung ist zwar etwas gewagt, aber wie ich das richtig hinbekomme in dem PHP-schriebsel, weiß ich nicht genau. Die Code-Formatierung selbst sollte auch egal sein (wenn man mal vom menschlichen Auge absieht).

Durch den Validator hab ichs auch schon gejagt. Der regt sich aber nur über für ihn ungültige Links im Menü und einige "mehrfach vergebene ID's" auf, was eigentlich kein Problem darstellt (war ja auch ohne die Nutzung von PHP schon so).
Die Firefox-Fehlersuche sagt übrigens keine Fehler, solange ich in einem geöffneten Album nicht versuche ein andere Bild anzuklicken. Ab dann lässt sich das Album nicht mehr schließen und Firefox generiert folgenden Fehler:
Code:
Fehler: hs.getExpander(hs.upcoming) is null
Quelldatei: http://sorbenmafia.so.funpic.de/filmgruppe/highslide/highslide-with-gallery.js
Zeile: 2042
Das verwundert mich, denn die Fehlermeldung entsteht erstens nur in dem Code, der nicht funktioniert und von PHP stammt. Der per Hand eingetippte Code erzeugt keine Fehler und funktioniert bekanntlich auch, obwohl er quasi identisch ist :wah:
 
  • Gallerie-Problem [mit PHP, JS und anderen schönen Dingen] Beitrag #9
Bond246

Bond246

Bekanntes Mitglied
Dabei seit
03.06.2006
Beiträge
2.544
Reaktionspunkte
0
Ort
127.0.0.1
Hmm, Edit war leider nicht mehr. Wenn ein Mod langeweile hat, kann er es ja noch an meinen letzten Beitrag anhängen:


Edit: Ich hab mir eben die Mühe gemacht, den Browser-Code in meinen Dreamweaver zu laden und dann hab ich jede einzelne Zeile mit funktionierendem Code überprüft, alles ist identisch, wenn man mal von den Dateipfaden absieht. Und da kam mir sogar noch die Idee, dass das Ding vielleicht ein Problem mit Groß- und Kleinschreibung hat und so habe ich testweise von einem Ordner alle Dateien umbenannt.
Ergebnilos...
 
Thema:

Gallerie-Problem [mit PHP, JS und anderen schönen Dingen]

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.173
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben