Seite 1 von 1
[3.1] phpbb code Frage
Verfasst: 29.06.2017 21:04
von MissSophie
Hallo , vielleicht kann mir einer Helfen und zwar :
Ich habe einen phpBB Code gebastelt dieser Code zeigt nur 3 Bilder an aber die anderen die im FTP sind werden nicht angezeigt.
Was ist Falsch ?
Code: Alles auswählen
//Slideshow_anfang
$bilder=array( );
$dir=opendir("images/slide");
while($bild=readdir($dir)) if ($bild != "." &&$bild !="..") $bilder[]="<img src=\"images/slide/$bild \" width=\"100px\" height=\"100px\" border=\"1\">";
closedir($dir);
$max=count($bilder)-1;
for($i=0;$i<$max;$i++) {
$bild.=$bilder[$i];
}
//Slideshow_ende
Re: [3.1] phpbb code Frage
Verfasst: 29.06.2017 21:38
von canonknipser
Fangen wir mal an:
Das ist kene phpBB-Code-Frage, sondern eine php-Code-Frage
Spaghetticode 
-> immer nur ein Befehl pro Zeile; Blöcke bilden, wenn möglich, Einrückungen zur Lesbarkeit, Leerzeichen verwenden
Also
Code: Alles auswählen
//Slideshow_anfang
$bilder = array( );
$dir = opendir("images/slide");
while ($bild = readdir($dir))
{
if ($bild != "." && $bild != "..")
{
$bilder[] = "<img src=\"images/slide/$bild \" width=\"100px\" height=\"100px\" border=\"1\">";
}
}
closedir ($dir);
$max = count ($bilder) -1 ;
for( $i = 0; $i < $max; $i++)
{
$bild .= $bilder[$i];
}
//Slideshow_ende
Du verwendest die Variable
$bild
zwei mal - zuerst, um die Dateinamen aus dem Verzeichnis zu lesen, dann ein zweites mal (ohne sie zwischendrin zu initialisieren) für den String mit den Bildern.
Also, noch ein
unset($bild);
hinter
closedir($dir);
oder eine andere Variable, z.B.
$bilderliste
verwenden (das ist sauberer, weil dann jede Variable nur einen use-Case abbildet).
Sind denn alle Bilder lesbar, sprich chmod
444
,
644
,
664
oder
666
Was macht du mit dem String
$bild
. Der enthält ja erst mal nur eine Aneinanderreihung von html-Image-Tags, noch keine "Slideshow"? Wie sieht der Inhalt denn in der Browser-Quellcodeansicht aus?
Re: [3.1] phpbb code Frage
Verfasst: 29.06.2017 21:58
von MissSophie
ok danke für die Antwort.
Aber es werden nur 3 bilder angezeigt nicht die im FTP gespeichert sind
Re: [3.1] phpbb code Frage
Verfasst: 29.06.2017 22:08
von canonknipser
MissSophie hat geschrieben:Aber es werden nur 3 bilder angezeigt nicht die im FTP gespeichert sind
Dann prüfe doch mal hiernach
canonknipser hat geschrieben:Sind denn alle Bilder lesbar,
und hiernach:
canonknipser hat geschrieben:Was macht du mit dem String $bild. Der enthält ja erst mal nur eine Aneinanderreihung von html-Image-Tags, noch keine "Slideshow"? Wie sieht der Inhalt denn in der Browser-Quellcodeansicht aus?
Re: [3.1] phpbb code Frage
Verfasst: 01.07.2017 10:39
von Tastenplayer
Vielleicht würde es mit diesem Script gehen?
Das Script
Code: Alles auswählen
<script type="text/javascript">
var photos=new Array()
var photoslink=new Array()
var which=0
//define images. You can have as many as you want:
[b][color=#FF0000]photos[0]="photo1.jpg"
photos[1]="photo2.jpg"
photos[2]="photo3.jpg"[/color][/b]
//Specify whether images should be linked or not (1=linked)
var linkornot=0
//Set corresponding URLs for above images. Define ONLY if variable linkornot equals "1"
photoslink[0]=""
photoslink[1]=""
photoslink[2]=""
//do NOT edit pass this line
var preloadedimages=new Array()
for (i=0;i<photos.length;i++){
preloadedimages[i]=new Image()
preloadedimages[i].src=photos[i]
}
function applyeffect(){
if (document.all && photoslider.filters){
photoslider.filters.revealTrans.Transition=Math.floor(Math.random()*23)
photoslider.filters.revealTrans.stop()
photoslider.filters.revealTrans.apply()
}
}
function playeffect(){
if (document.all && photoslider.filters)
photoslider.filters.revealTrans.play()
}
function keeptrack(){
window.status="Image "+(which+1)+" of "+photos.length
}
function backward(){
if (which>0){
which--
applyeffect()
document.images.photoslider.src=photos[which]
playeffect()
keeptrack()
}
}
function forward(){
if (which<photos.length-1){
which++
applyeffect()
document.images.photoslider.src=photos[which]
playeffect()
keeptrack()
}
}
function transport(){
window.location=photoslink[which]
}
</script>
Body
Code: Alles auswählen
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" colspan="2" height="22"><center>
<script>
if (linkornot==1)
document.write('<a href="javascripttransport()">')
document.write('<img src="'+photos[0]+'" name="photoslider" style="filter:revealTrans(duration=2,transition=23)" border=0>')
if (linkornot==1)
document.write('</a>')
</script>
</center></td>
</tr>
<tr>
<td width="50%" height="21"><p align="left"><a href="#" onClick="backward();return false">Previous Slide</a></td>
<td width="50%" height="21"><p align="right"><a href="#" onClick="forward();return false">Next Slide</a></td>
</tr>
</table>
<p align="center"><font face="Arial" size="-2">Free DHTML scripts provided by<br>
<a href="http:"></a></font></p>
Oder diesen
http://bxslider.com/(The Responsive jQuery Content Slider. Slides can contain images, video, or any other HTML content!)
Hier eine Demo in einem vBulletin Board, müsste doch wohl auch in einem phpbb Forum funktionieren - oder?
http://forum.toribash.com/showthread.php?t=389165 Leider verstehe ich zu wenig davon, sonst würd ich sofort versuchen den bei mir im 3.2.0 Board einzubauen!
Re: [3.1] phpbb code Frage
Verfasst: 01.07.2017 14:00
von canonknipser
Hallo Tastenplayer,
dein Script setzt voraus, dass man die Dateinamen fest in den Sourcecode codiert. Das im Startbeitrag gepostete Script soll alle Bilder aus einem Verzeichnis lesen und dynamisch verarbeiten.
Re: [3.1] phpbb code Frage
Verfasst: 05.07.2017 15:37
von Tastenplayer
canonknipser hat geschrieben:Hallo Tastenplayer,
dein Script setzt voraus, dass man die Dateinamen fest in den Sourcecode codiert. Das im Startbeitrag gepostete Script soll alle Bilder aus einem Verzeichnis lesen und dynamisch verarbeiten.
Hatte ich nicht geschnallt

Dann war das leider nichts.
Re: [3.1] phpbb code Frage
Verfasst: 14.08.2017 00:32
von BNa
Abgesehen davon, das ich
glob()
eleganter finde....
http://php.net/manual/de/function.glob.php
Code: Alles auswählen
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename - Größe: " . filesize($filename) . "\n";
}
?>
.....sollten die entsprechenden Bedingungen stimmen
(jpg,png,gif)
,
dann werden auch alle entsprechenden Bilder angezeigt...
Gutes Beispiel:
https://stackoverflow.com/questions/173 ... -directory
Wichtig:
Wie in dem Beispiel unter dem Post in dem letzten Link
besser
GLOB_BRACE
wählen:
Also statt
glob("img/thumb/*.jpg")
lieber so
glob("img/thumb/*.{jpg,png,gif}", GLOB_BRACE)
..so werden auch alle Bildformate abgedeckt

Re: [3.1] phpbb code Frage
Verfasst: 16.08.2017 12:56
von gn#36
Noch mal zurück zum ursprünglichen Skript: Dein erstes Problem ist die nicht initialisierte Variable. Die hat canonknipser schon angesprochen.
Dann passt der Wert der Variablen $max
nicht zur Verwendung in der for Schleife, hierdurch lässt du in der Schleife ein Bild aus. Hast du vermutlich nicht gemerkt, weil es durch die nicht initialisierte Variable sowieso schon in der Variablen drin steht. Eleganter wäre die Verwendung von foreach
, da brauchst du dich um so einen Schnickschnack dann gar nicht zu kümmern, du nimmst garantiert alle Elemente im Array her.
Falls in dem Ordner noch andere Dateien liegen können musst du außerdem noch mehr wegfiltern als nur das aktuelle und übergeordnete Verzeichnis. Außerdem durchsucht dein Skript keine Unterordner, falls dort die Bilder liegen sollten.
Allerdings: Die Fehler sollten nur dafür sorgen, dass eine feste Zahl Bilder fehlt, nicht dass es immer genau drei gibt. Also brauchen wir mehr Randbedingungen von dir die das verursachen könnten.
Re: [3.1] phpbb code Frage
Verfasst: 17.08.2017 19:26
von BNa
Also, um es mal konkret (und xhtml 1.0 strict) zu machen.
Dieser Codefetzen sollte (als Test) dafür langen:
Code: Alles auswählen
//Slideshow_Anfang
$bilder = array(); //evtl. garnicht nötig?
foreach (glob("images/slide/*.{jpg,png,gif}", GLOB_BRACE) as $filename){
$bilder .= "<img src='$filename' style='width: 100px; height: auto; border: 1px solid black;' /><br />";
}
echo $bilder;
//Slideshow_Ende
oder (für Klammer-Fanaten)
Code: Alles auswählen
//Slideshow_Anfang
$bilder = array(); //evtl. garnicht nötig?
foreach ((glob("images/slide/*.{jpg,png,gif}", GLOB_BRACE)) as $filename){
$bilder .= "<img src='$filename' style='width: 100px; height: auto; border: 1px solid black;' /><br />";
}
echo $bilder;
//Slideshow_Ende