# Bilder aus Ordner auslesen und sortiert anzeigen



## unacanuma (29. Juni 2004)

Hallo

habe ein Problem bei dem ich alleine nicht weiterkomme .
Habe gesucht und auch gefunden. 
Leider sind die Antworten so umfangreich das ich nicht durchsteige.

Schwierigkeit ist folgende:
Ich lese aus einem Ordner alle jpg dateien aus und lasse sie untereinander anzeigen. 
Nun das Problem: 
Alle Bilder werden unsortiert angezeigt.
Das heißt Bildnr. 0006.jpg kommt vor 0001.jpg  und so weiter.

Sie sollen aber numerisch sortiert angezeigt werden.
Kann mir jemand weiterhelfen?

Thanks  unacanuma 

Ich poste  das Script. im nächsten Posting.


----------



## unacanuma (29. Juni 2004)

Hier also mein aktueller Code :

<?

if ($form=="Bilder anzeigen"))
{
$bilddir=$_POST["artikel_id"];
$artikel_id=$bilddir;
$verz=opendir ("D:/web/bilder/$bilddir/klein/");
echo "<form action=".$_SERVER['PHP_SELF']." method=Post><table width='790' border='0' cellspacing='0' cellpadding='10'><tr><td width='790'>";

function bildanzeige($bilddir, $verz)
{
while ($file = readdir ($verz)) {
if($file != "." && $file != "..")

echo "<a href='D:/web/bilder/$bilddir/gross/$file' target='_new'><img src='D:/web/bilder/$bilddir/klein/$file' >".$file."</a ><input name='bild[]' type='checkbox' value='$file'> &nbsp;&nbsp;&nbsp; "; }
closedir($verz);
}


$bilderschlonz = bildanzeige($bilddir, $verz);
echo "
<INPUT  TYPE='HIDDEN' name='bilddir' value='$artikel_id'>
<INPUT  TYPE='HIDDEN' name='verz' value='$artikel_id'>
<INPUT  TYPE='HIDDEN' name='artikel_id' value='$artikel_id'>
<INPUT  TYPE='SUBMIT' name='form' value='Auswahl-Bilder'>
";
if ($alle_bearbeiten_info=="".$_POST["weiter_bearbeiten"]."")
{
echo "<INPUT TYPE='hidden' name='alle_bearbeiten' value='".$_POST["alle_bearbeiten"]."'>";
echo $_POST["alle_bearbeiten"];
}
echo "</td></tr></table>
</form>";
};

?>

Jemand eine Idee

Gruss unacanuma


----------



## Samuel (29. Juni 2004)

Das ganze sollte nach dem Prinzip gemacht werden.

```
<?php

$pfad = "pfad/zu/den/bildern";
$dir = opendir($dir);
while($filename = readdir($dir)) {
	if(strstr($filename, ".jpg") || strstr($filename, ".gif")) {
		echo "<img src=\"".$pfad."/".$filename."\"><br>";
	}
}

?>
```

natürlich muss das ganze an dein Script angepasst werden

grüße Samuel


----------



## _voodoo (29. Juni 2004)

```
<?
if ($form=="Bilder anzeigen")) {
  echo "<form action=".$_SERVER['PHP_SELF']." method=Post>
  <table width='790' border='0' cellspacing='0' cellpadding='10'><tr><td width='790'>";
  $bilddir=$_POST["artikel_id"];
  $artikel_id=$bilddir;
  $verz=opendir ("D:/web/bilder/$bilddir/klein/");
  $bilder = Array();
  while ($file = readdir ($verz)) {
    if ($file != "." && $file != "..")
      $file = substr($file, 0, strrpos(".", file));
      $bilder[] = $file;
    }
  closedir($verz);
  }

  asort($file);
  reset($file);

  while (list ($key, $val) = each($file)) echo "<a href='D:/web/bilder/$bilddir/gross/$val.jpg' target='_new'><img src='D:/web/bilder/$bilddir/klein/$val.jpg' >".$val."</a ><input name='bild[]' type='checkbox' value='$val'>";

  $bilderschlonz = bildanzeige($bilddir, $verz);
  echo "
<INPUT TYPE='HIDDEN' name='bilddir' value='$artikel_id'>
<INPUT TYPE='HIDDEN' name='verz' value='$artikel_id'>
<INPUT TYPE='HIDDEN' name='artikel_id' value='$artikel_id'>
<INPUT TYPE='SUBMIT' name='form' value='Auswahl-Bilder'>";
  if ($alle_bearbeiten_info=="".$_POST["weiter_bearbeiten"]."") {
  echo "<INPUT TYPE='hidden' name='alle_bearbeiten' value='".$_POST["alle_bearbeiten"]."'>";
  echo $_POST["alle_bearbeiten"];
  }
  echo "</td></tr></table>
</form>";
}

?>
```

Alle Bildernamen das .jpg entfernen und in einen Array einlesen, dieses sortieren und dann alles wieder ausgeben.


----------



## Samuel (29. Juni 2004)

stimmt hab die Sortierfunktion ganz vergessen (lol)
vielen Dank @ _voodoo

grüße Samuel


----------



## unacanuma (29. Juni 2004)

> _Original geschrieben von Samuel _
> *Das ganze sollte nach dem Prinzip gemacht werden.
> *
> 
> ...





Hallo Samuel
also irgendwie krieg ich das nicht gedüddelt.
Habe
$pfad = $pfad = "d:/web/bilder/10111/klein"; 
angegeben, krieg aber nur eine leere Seite angezeigt. 

arbeite auf win2000 und gehe über intranet auf win98SE . Dort ist apache installiert (WAMP). 

Gruss unacanuma


----------



## unacanuma (29. Juni 2004)

meinte natürlich 
$pfad = "d:/web/bilder/10111/klein";


----------



## Samuel (29. Juni 2004)

Tag der Herr,
hab jetzt gleich Schule aus.

Werd dir aber um ca. 16:00 Uhr ein Script posten das 100%ig funktioniert.
Komm leider erst dann wieder ins Internet.

hoffe das ist noch früh genug.

Grüße Samuel


----------



## unacanuma (29. Juni 2004)

> _Original geschrieben von _voodoo _
> 
> ```
> <?
> ...



Hallo  Vodoo
dank Dir für die antwort. Werde ich doch gleich mal probieren.
Ich hatte schon mit sort($file, sort_numeric)
probiert aber dann nur Fehlerschlonz bekommen.

Gruss unacanuma


----------



## _voodoo (29. Juni 2004)

Wahrscheinlich weil die Inhalte deines Array's nicht numerisch waren [Stichwort: .jpg]


----------



## Samuel (29. Juni 2004)

```
<?php

$pfad = "media/";
$dir = opendir($pfad);
while($filename = readdir($dir)) {
	if(strstr($filename, ".jpg") || strstr($filename, ".gif")) {
		$bilder[] = $filename;
	}
}
asort($bilder);
reset($bilder);
foreach($bilder as $value) {
	echo $pfad.$value."<br />";
}

?>
```

hab noch Zeit bekommen. Konferenz ist doch noch nicht jetzt 
aufjedenfall sollte dieses Script funktionieren. Du musst halt noch an der Ausgabe arbeiten.
Bisher gibt das Script einfach alle Pfade der Bilder aus.

grüße Samuel


----------



## unacanuma (29. Juni 2004)

_voodoo hat gesagt.:
			
		

> Wahrscheinlich weil die Inhalte deines Array's nicht numerisch waren [Stichwort: .jpg]



Dat hab ich mir dann auf dein Posting gedacht 
Du Wissender ] - Coole Matte auf dem Foto.   
Geiler Retrostyle.

Bau grad das Scrpit von Samuel ein und schau ob das klappt. sonst muss ich das wohl knicken weil so schnell krieg ich das allein nicht getüddelt


Gruss unacanuma


----------



## unacanuma (29. Juni 2004)

> _Original geschrieben von Samuel _
> *
> 
> Bisher gibt das Script einfach alle Pfade der Bilder aus.
> ...




Na das  ja 
Geil das ist es ! 
Muss ich mal wenn Zeit genauer studieren.

Konferenz? Schule? Lxxxxx?

Besten Dank einstweilen

 Gruss unacanuma


----------



## _voodoo (29. Juni 2004)

Funktioniert mein Code? Hab mir nur dein snippet geschnappt und verarbeitet ohne zu testen ...


----------



## unacanuma (29. Juni 2004)

> _Original geschrieben von _voodoo _
> *Funktioniert mein Code? Hab mir nur dein snippet geschnappt und verarbeitet ohne zu testen ... *




Hallo Vodoo

ne nicht ganz so doll, 

Fehlermeldung :
Warning: asort() expects parameter 1 to be array, boolean given in c:\phpdev\www\includes\a_bild_bearbeiten.inc.php on line 23

Warning: Variable passed to reset() is not an array or object in c:\phpdev\www\includes\a_bild_bearbeiten.inc.php on line 24

Warning: Variable passed to each() is not an array or object in c:\phpdev\www\includes\a_bild_bearbeiten.inc.php on line 26

Fatal error: Call to undefined function: bildanzeige() in c:\phpdev\www\includes\a_bild_bearbeiten.inc.php on line 28

aber ich denke das sagt dir was, oder? 

Gruss unacanuma


----------



## unacanuma (29. Juni 2004)

*Fertiges SCRIPT*

Dank Samuel (much thanxs)  es jetzt.
hier an alle Suchenden die ein ähnliches problem haben,
mein script-teil so wie es jetzt momentan läuft.

Gruss unacanuma 

<?
if ($form=="Bilder anzeigen" || isset($_POST['express']['Bilder anzeigen']))
{
$bilddir=$_POST["artikel_id"];
$artikel_id=$bilddir;
$verz=opendir ("D:/web/bilder/$bilddir/klein/");
echo "<form action=".$_SERVER['PHP_SELF']." method=Post><table width='790' border='0' cellspacing='0' cellpadding='10'><tr><td width='790'>";


$pfad = "D:/web/bilder/$bilddir/klein/"; 
$dir = opendir($pfad); 
while($filename = readdir($dir)) { 
    if(strstr($filename, ".jpg") || strstr($filename, ".gif")) { 
        $bilder[] = $filename; 
    } 
} 
asort($bilder); 
reset($bilder); 
foreach($bilder as $value) { 
    echo "<a href='D:/web/bilder/$bilddir/gross/$value' target='_new'><img src='D:/web/bilder/$bilddir/klein/$value' >".$file."</a ><input name='bild[]' type='checkbox' value='$value'>".$pfad.$value."<br />"; 
} 


echo "
<INPUT  TYPE='HIDDEN' name='bilddir' value='$artikel_id'>
<INPUT  TYPE='HIDDEN' name='verz' value='$artikel_id'>
<INPUT  TYPE='HIDDEN' name='artikel_id' value='$artikel_id'>
<INPUT  TYPE='SUBMIT' name='form' value='Auswahl-Bilder'>
";
if ($alle_bearbeiten_info=="".$_POST["weiter_bearbeiten"]."")
{
echo "<INPUT TYPE='hidden' name='alle_bearbeiten' value='".$_POST["alle_bearbeiten"]."'>";
echo $_POST["alle_bearbeiten"];
}
echo "</td></tr></table>
</form>";
};
?>


----------



## Murdog (7. Juli 2004)

> _Original geschrieben von Samuel _
> 
> ```
> <?php
> ...



wie kann man machen das gleich die bilder aus dem verzeichnis angezeigt werden?


----------



## Chino (7. Juli 2004)

> _Original geschrieben von Murdog _
> *wie kann man machen das gleich die bilder aus dem verzeichnis angezeigt werden? *


 HTML-Basics! 


```
<?php 

$pfad = "media/"; 
$dir = opendir($pfad); 
while($filename = readdir($dir)) { 
    if(strstr($filename, ".jpg") || strstr($filename, ".gif")) { 
        $bilder[] = $filename; 
    }
}

asort($bilder);
reset($bilder);
foreach($bilder as $value) {
    $arrImg = getimagesize($pfad.$value);
    echo '<img src="'.$pfad.$value.'" '.$arrImg[3].' border="0" alt=""><br />'; 
}
?>
```


----------



## Murdog (7. Juli 2004)

danke für die schnelle antwort


----------



## Chino (7. Juli 2004)

> _Original geschrieben von Murdog _
> *danke für die schnelle antwort *


 Keine Ursache. Aber halte doch in Zukunft bitte an die Netiquette.


----------



## Murdog (7. Juli 2004)

ich hab noch was ich hab die suchfunktion schon benutzt auch alles durch geschaut aber nichts gescheites gefunden.

ich möchte eine blätterfunktion machen das nach 20 bildern eine seite 2 gibt und ich will das alles ohne mysql machen. ich hab schon vieles versucht hat aber nichts geklappt.


----------



## Sven Petruschke (7. Juli 2004)

Wo ist denn nur das Problem? Tutorials zu Blätterfunktionen gibt es wie Sand am Meer. Die Logik und Mathematik ist immer ähnlich: Es wird ermittelt, ab dem wievielten Bild wieviele Bilder ausgegeben werden müssen.  Und die Ausgabe einer bestimmten Bildanzahl ab einem bestimmten Bild sollte doch nun wirklich kein Problem sein. Die für die Berechnung der Seitenanzahl notwendige Anzahl der Gesamtbilder kannst Du doch auch ganz einfach ermitteln.

Du willst programmieren. Das heisst, dass Du auch selbst in der Lage sein musst, die Programmlogik in die Syntax umzusetzen.

snuu


----------



## Murdog (8. Juli 2004)

ja nur das es die bilder aus dem verzeichnis nimmt und sie rein macht. darum weis ich nicht genau wie ich es machen muss? hab schon so viel probiert.


----------



## Chino (8. Juli 2004)

> _Original geschrieben von Murdog _
> *ja nur das es die bilder aus dem verzeichnis nimmt und sie rein macht. darum weis ich nicht genau wie ich es machen muss? hab schon so viel probiert. *



Wie wärs wenn Du erstens mal ein wenig auf die Netiquette achtest und zweites, ein wenig Code von Deinen "Versuchen" posten würdest, damit man Dir vielleicht hier und da einen kleinen Tipp geben kann? Aber wie snuu schon richtigerweise geschrieben hat: Von der Logik her ist die Funktion "Blättern" bei dem Anzeigen einer bestimmten Anzahl an Bilder nicht viel anders als beispielsweise eine bestimmte Anzahl von Einträgen aus einer Datenbank darzustellen.


----------



## Theeagle (9. Juli 2004)

hab mal das fertige scipt bei mir auspobiert.
irgendwie komm das keine bilder...hab auch alle pfade korrekt angepasst!


----------



## Murdog (9. Juli 2004)

```
$lines = file("edit.txt"); 
$total = count($lines); 
$proseite = 3;
```

kann man aus dem machen das es nicht aus der .txt raus liest sondern die bilder aus dem verzeichnis?


----------

