Archivlink: javarea.de Forum > PHP, MySQL & CGI > galerie
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > galerie

Pages: [1]

geschrieben von H3LLFIRE am 02.10.2007 - 16:55
hi, ich hab mal wieder ein problem...
und zwar, wollte ich mit php daten aus einem ordner auslesen, und die dann in einer tabelle anzeigen...
das glaubt auch, jedoch, wenn es zu viele bilder sind, dann wird die tabelle immer länger und länger,
gibts es eine möglichkeit, dass er hingeht, und wenn die 4te spalte erreicht ist, automatisch in die nächste zeile umspringt?
hier der code:
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 

<?
$dir
="bilder";
$verz=opendir ($dir);
while (
$file readdir ($verz)) {
if(
$file != "." && $file != "..")
echo 
"
<td>
<a href='
$dir/$file' rel='gb_imageset[$dir]' title='$file' border='0'><img src='$dir/$file' height='100' /></a>
</td>
"
;
}
closedir($verz);
?>


vielen dank bereits im vorraus

geschrieben von Klaush am 02.10.2007 - 19:56
Naja, so ganz vollautomatisch geht das nicht, hier musst du die Anzahl der Zeilen berechnen und die Anzahl der Spalten definieren.

Ich mache das mit 2 Schleifen, eine andere Möglichkeit sehe ich momentan nicht.

In deinem Fall, könnte es so aussehen:

PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 

<?
$dir          
"images";         // Bilderstammverzeichnis
$verz         opendir($dir);    // Verzeichnis oeffnen
$galerieArray = Array();          // Array fuer die Galerie anlegen
while($file readdir($verz))
{
  if (
$file != "." && $file != "..")
    
$galerieArray[] = $file;      // Galerie-Array fuellen
}


$tableCols 4;                   // Anzahl Spalten
$tableRows ceil(count($galerieArray)/$tableCols);  // Anzahl der Zeilen, berechnet aus Anzahl Dateien / Spalten

// Tabellenheader
$galerie_header "
<table width=\"100%\" cellspacing=\"1\" cellpadding=\"1\" border=\"1\">
<tr>
<td align=\"center\" colspan=\""
.$tableCols."\">Galerie</td>\n</tr>";

// Schleifendurchlauf fuer Tabellenzeilen
for ($i=0$i<$tableRows$i++) 
{
  
$galeriebit.= "\n<tr>\n";

  
// Tabellendurchlauf der Spalten
  
for ($j=0$j<$tableCols$j++) 
  {                
    
// Berechnung des ArrayKeys, damit der richtige Wert aus dem Array geholt wird
    
$y $j+ ($i $tableCols);

    if (
$galerieArray[$y])
      
$galariePic $galerieArray[$y];
    else
      
$galariePic "&nbsp;";

    
$galeriebit.= "<td align=\"center\">".$galariePic."</td>\n";
  }
  
$galeriebit.= "</tr>\n";
}
// Tabellenfuss
$galerie_footer "</table>";        

// Ausgabe der gesamten Tabelle samt Inhalt
echo $galerie_header.$galeriebit.$galerie_footer;
?>



Im Anhang findest du das Beispiel noch einmal als txt Datei vor.

geschrieben von Matneu am 02.10.2007 - 21:51
Zitat
 Original geschrieben von H3LLFIRE am 02.10.2007 - 16:55
gibts es eine möglichkeit, dass er hingeht, und wenn die 4te spalte erreicht ist, automatisch in die nächste zeile umspringt?

Einfach eine Laufvariable mitzählen und mod 4 rechnen. Wenn mod 4 == 0, dann eben ein </tr> und wieder ein <tr> einfügen. Zwite Schleife ist damit überflüssig.

So far...
Matthias

Edited: Mod ist % in PHP, also $i % 4

geschrieben von Klaush am 02.10.2007 - 22:39
JO, dass geht auch,..... habe die einfache Variante nicht gesehen ...... warum einfach, wenn's auch komplizierter geht .

geschrieben von H3LLFIRE am 03.10.2007 - 01:31
Zitat
 Original geschrieben von Matneu am 02.10.2007 - 21:51

Zitat
 Original geschrieben von H3LLFIRE am 02.10.2007 - 16:55
gibts es eine möglichkeit, dass er hingeht, und wenn die 4te spalte erreicht ist, automatisch in die nächste zeile umspringt?

Einfach eine Laufvariable mitzählen und mod 4 rechnen. Wenn mod 4 == 0, dann eben ein </tr> und wieder ein <tr> einfügen. Zwite Schleife ist damit überflüssig.

So far...
Matthias

Edited: Mod ist % in PHP, also $i % 4


sry, aber das ist nun für mich bahnhof, sprich totales neuland.....klingt logisch, und weiß auch was du meinst, aber wie setze ich das um?
danke für die schnelle hilfe bis hierher
ihr seid einfach SPITZE!!! (das musste an dieser stelle nun mal gesagt werden)

geschrieben von René am 03.10.2007 - 12:59
Hallo Matthias,

gibt in PHP auch eine Funktion dafür http://www.php.net/manual/de/ref.bc.php bzw. http://www.php.net/manual/de/function.bcmod.php

geschrieben von Matneu am 04.10.2007 - 10:47
Zitat
 Original geschrieben von René am 03.10.2007 - 12:59
gibt in PHP auch eine Funktion dafür http://www.php.net/manual/de/ref.bc.php bzw. http://www.php.net/manual/de/function.bcmod.php

Naja, man kann natürlich auch mit Kanonen auf Spatzen schiessen. Zumal die Genauigkeit bei Integer reichlich irrelevant ist oder willst Du die Laufvariable über Floats zählen lassen? :P

Zitat
 sry, aber das ist nun für mich bahnhof, sprich totales neuland.....klingt logisch, und weiß auch was du meinst, aber wie setze ich das um?

Guck Dir folgendes an:
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 

<?
$int 
rand(1100); // Liefert eine Zufallszahl zwischen 1 und 100

$rest $int 4// Speichert den Rest, der bei der Division durch 4 übrig bleibt, in der Variablen

if ($rest == 0) {
    echo (
"Die Zahl $int ist ein Vielfaches von 4");
} else {
    echo (
"Die Zahl $int ist KEIN Vielfaches von 4");
}
?>



Das sollte reichen denke ich.

So far...
Matthias


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.