Javascript & PHP Probelm mit Bildergalerie

Hallo zusammen,

ich habe folgenden Code, der ein Verzeichniss öffnet und anzeigt:

<?php
$handle=opendir('/var/www/html/shop/images/products');
while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") {
echo "<img onclick=\"javascript:opener.new_product.products_image_exist.value='$file';window.close();\" src=\"/shop/images/products/$file\">\n";
}
}
closedir($handle);
?>

hier kann duch einfaches klicken auf ein Bild dieses ausgewählt werden, nun zu meinem Problem:

Ich würde die Bilder gerne einheitlich in einer Tabelle anzeigen lassen, finde leider nichts im Internet dazu wie das geht mit open.window, vielleicht könnt ihr mir helfen ?

zudem würde ich gerne alle bilder "name_k.jpg" mit dem _k am ende aussortieren, dies ist jedoch 2. rangig.

danke für eure Zeit.

freundliche Grüsse
Marco
 
ich weis jetzt nich genau ob ich dich richtig verstanden habe aber versuch doch mal sowas:
PHP:
<?php
$handle=opendir('/var/www/html/shop/images/products');
$count=0; //zum mitzählen wieviele bilder ausgegeben wurden

echo "<table>";
while ($file = readdir ($handle) ) {
if ($file != "." && $file != ".." ) {
if ($count == 0)
{
 echo "<tr>"; //wenn noch keine bilder ausgegeben neue zeile
}
echo "<td>";
echo "<img onclick=\"java script:opener.new_product.products_image_exist.value='$file';window.close();\" src=\"/shop/images/products/$file\">";
echo "</td>";
if(count == 3)
{
echo "</tr>"; //wenn 3 bilder in einer reihe TR-tag schließen
count=0;
}else
count++;
}
}
if ($count <3 && $count != 0)
echo "</tr>"; //falls zum schluß nur 2 in einer reihe wahren

echo "</table>";
closedir($handle);
?>

ich kann das gerade leider ncih testen, also wenns nich läuft musst bescheid sagen ;)

mfg

püppi
[EDIT]
okay habs auf den server von meinem schatzi gepackt und ma getestet, siehe da ich hab n paar $ vergessen ;)
also der code läuft bei mir wunderbar:
PHP:
<html>
<body>
<?php
$handle=opendir('bilder/');
$count=1; //zum mitzählen wieviele bilder ausgegeben wurden

echo "<table>";
while ($file = readdir ($handle) ) {
if ($file != "." && $file != ".." ) {
if ($count == 1)
{
 echo "<tr>"; //wenn noch keine bilder ausgegeben neue zeile
}
echo "<td>";
echo "<img src=\"$file\">";
echo "</td>";
if($count == 3)
{
echo "</tr>"; //wenn 3 bilder in einer reihe TR-tag schließen
$count=1;
}else
$count++;
}
}
if ($count <3 && $count != 0)
echo "</tr>"; //falls zum schluß nur 2 in einer reihe wahren

echo "</table>";
closedir($handle);
?>
</body>
</html>

du musst nur den pfad anpassen und dein javascript wieder einfügen =)
[/EDIT]
 
super püppi :) danke vielmals es passt wunderbar ;)

<html>
<body>
<?php
$handle=opendir('/var/www/html/shop/images/products/');
$count=1; //zum mitzählen wieviele bilder ausgegeben wurden

echo "<table>";
while ($file = readdir ($handle) ) {
if ($file != "." && $file != ".." ) {
if ($count == 1)
{
echo "<tr>"; //wenn noch keine bilder ausgegeben neue zeile
}
echo "<th width=100>";
echo "<img onclick=\"javascript:opener.new_product.products_image_exist.value='$file';window.close();\" src=\"/shop/images/products/$file\"width=\"80\">\n";
echo "</th>";
if($count == 4)
{
echo "</tr>"; //wenn 3 bilder in einer reihe TR-tag schließen
$count=1;
}else
$count++;
}
}
if ($count <4 && $count != 0)
echo "</tr>"; //falls zum schluß nur 2 in einer reihe wahren

echo "</table>";
closedir($handle);
?>
</body>
</html>

hier nochma der code, falls jemand etwas nachsehn möchte, der th tag erzwingt das alle bilder gleich gross sind !


nun würde ich gerne einige vorschläge dazu hören wie ich nur die "grossen" bilder anzeigen kann, also alle ohne die Bilder mit der _k endung (name_k.jpg) ?!
 
du könntest entweder die bilder in nem extra verzeichnis speichern, oder du überprüfst vor der ausgabe ob _k.jpg im dateinamen ist:
dazu musst du zeile 10 so anpassen
PHP:
if ($file != "." && $file != ".." &&  strstr ($file,"_k.jpg" )) {
 
wow cool, es funktioniert, leider gibt es mir genau die bilder aus die ich nicht wollte ^^

mit dem ! kann man die funktion doch umkehren oder ? bzw. machen das sie alle ohne _k ausgibt ?

*edit*

if ($file != "." && $file != ".." && ! strstr($file,"_k" ) ) {

so nun zeigts mir die reichitgen bilder an :D

danke für deine rasche hilfe Püppchen! :)

freundliche Grüsse
Marco

*edit2*

omg - mein chef möchte nun noch die namen der bilder darunter angezeigt haben ...also falls jemand gerade ne idee hat -.-
 
Ich hoffe, das hier kommt dem Sinn recht nahe:
PHP:
<html>
<body>
<?
/* cmnt by boppy:
 * Ich programmiere grundsätzlich strukturiert, dass heißt, dass ich darauf achte,
 * dass der HTML-Quelltext leicht verständlich ist. desahlb setze ich öft neue
 * Zeilen (\n) und viele leertasten ein. Du kannst Sie bei bedarf natürlich
 * löschen!
 *
 * Beste Grüße
 *  Henning Bopp
 *  aka boppy
 */


// Initialisiert das einzulesende Verzeichnis
$handle = opendir("/var/www/html/shop/images/products/");

// Konstruiert die Tabelle und beginnt direkt eine Zeile
echo("\n<table>\n  <tr>");

// durchläuft das Verzeichnis
while ($file = readdir($handle)) {
    if($file != "." && $file != ".." && !strstr($file,"_k")) {
        // prüft, ob der rest aus $n durch 5 gleich 0 ist oder ob es durchgang 1 ist.
        //  wenn eins von beiden richtig (TRUE) ist, beginnt er eine neue zeile!
        //  Da wir nur eine Zeile als Befehl haben, können wir die geschwungenen
        //  Klammern weg lassen
        if($n%5 == 0 && $n!=0) echo("\n  </tr>\n  <tr>");
        
        // Tabellenzelle wird erstellt. Unter das Bild wird der Dateiname geschrieben.
        // Der Link ist in einer <a> ausgelagert, damit es keine Probleme gibt mit
        //  älteren browsern
        echo("\n    <td width=\"100\">");
        echo("<a href=\"#\" onclick=\"java script:opener.new_product.products_image_exist.value='$file';window.close();\">");
        echo("<img src=\"/shop/images/products/$file\" width=\"80\"><br>$file</a>\n");
        echo("</td>"); //statt th (TableHead) solltest du TD benutzen!

        // erspart dir den counter oben. $n wird, wenn nötig, angelegt und um 1
        //  erhöht... (Im ersten durchgang ist $n also null)
        $n++;
    }
}

// Wenn wir keine durch 5 teilbare anzahl an Bidlern im Verzeichnis haben, sollten
// wir die Tabelle mit leeren Zellen füllen, damit es keine Probleme gibt!
if($n%5!=0) for($i=0;$i<($n%5-1);$i++) echo("\n    <td> </td>");

// Recht HTML-Konform wird nun die letze Zeile noch geschlossen und die tabelle beendet
echo("\n  </tr>");
echo("\n</table>");
closedir($handle);
?>
</body>
</html>
 
ups, ja sorry stimmt musste noch n ! davor, ja das passiert wenn man eigentlich schon auf m weg ins fitti is *g*
den namen unten drunter schreiben is eigentlich ganz einfach musst nur das ändern (in der while schleife)
PHP:
echo "<th width=100>";
echo "<img onclick=\"java script:opener.new_product.products_image_exist.value='$file';window.close();\" src=\"/shop/images/products/$file\"width=\"80\">\n<br>";
$name = strtok($file, ".");
echo $name;
echo "</th>";

*g* schön das ich deine arbeit machen durfte

mfg

püppi
[EDIT]
@boppy:
das: if($file != "." && $file != ".." && !strstr($file,"_k")) {
kannst du nicht schreiben da _k auch im normalen namen vorkommen kann, deshalb hab ich noch .jpg dazu genommen ;)
[/EDIT]
 
Original von PuppE
[EDIT]
@boppy:
das: if($file != "." && $file != ".." && !strstr($file,"_k")) {
kannst du nicht schreiben da _k auch im normalen namen vorkommen kann, deshalb hab ich noch .jpg dazu genommen ;)
[/EDIT]
*g* da muss ich zugeben, dass ich es nur kopiert habe und nicht nachgedacht habe... du hast natürlich recht!
 
o.O eigendlich geht ja alles, leider funktionierte heute morgen der upload nicht mehr, ich denke mir das es etwa hiermit zu tun hat:

if (isset($HTTP_POST_VARS['products_image_exist']))
{
$formularfeldname = "products_image_exist";
}

else {
$formularfeldname = "products_image";

}
$products_image = new upload($formularfeldname);
$products_image->set_destination(DIR_FS_CATALOG_PRODUCT_IMAGES);
if ($products_image->parse() && $products_image->save()) {
$products_image_name = $products_image->filename;
}


kann es sein das in der obersten if abfage etwas vertauscht wurde oder so ?

freundliche Grüsse
Marco
 
Zurück
Oben