Fehler bei der Ausgabe

Wipeout

Erfahrenes Mitglied
Hallo Community,

ich habe folgendes Script zusammen gebastelt, es liest aus einem Ordner Bild Dateien aus und aus einem anderen Ordner die passenden Kommentare.
Soweit klappt es auch wen er den alle Bilder anzeigen würde ;)
Es fehlt immer ein Bild und bei den Kommentaren fängt das Script erst beim zweiten Kommentar an anstatt beim ersten.
Ich habe schon hin und her probiert nur irgendwie fehlt mir momentan die zündende Idee wieso das so ist ;)

PHP:
<?php
/* Fehler Abfrage anschalten */
ini_set("display_errors", 0);
error_reporting(E_ALL);
$anz_bilder ="3";
/* Verzeichniss Angabe wo die Bilder zu finden sind*/
$bilder_verz="bilder_g/".$_GET['verz']."/";

/* Verzeichniss Angabe wo die Kommentare zu finden sind*/
$kommentar_verz="kom/".$_GET['verz']."/";

/* Öffnen des Bilder Verzeichnisses*/
$bilder=opendir ($bilder_verz);

/* Öffnen des Kommentar Verzeichnisses*/
$kommentare=opendir ($kommentar_verz);
$count=1;
?>
<body bgcolor="#fffff">
    <table width="700" border="0" cellspacing="4" cellpadding="4">
        <tr>
            <table width="695" border="0" cellpadding="2" cellspacing="2">
                <tr>
                    <td width="233">&nbsp;</td>
                    <td width="233">&nbsp;</td>
                    <td width="233">&nbsp;</td>
                </tr>
            </table>
        <table><tr>
<?php
/*Lese alle Dateien der Verzeichisse in das ensprechende Array*/
    while (false !== ($bild[] = readdir($bilder)) AND  $kommentar[] = readdir($kommentare)){

    } 
  $bild[] = sort($bild);
  $kommentar[] = sort($kommentar);
echo "Bilder<br><pre>";
print_r($bild);
echo "</pre>";
echo "Kommentare<br><pre>";
print_r($kommentar);
echo "</pre>";
/*Ausgabe des Arrays*/
    $spalte=0;
  for ($zaehler=0, $anzahl = sizeof($bild); $zaehler < $anzahl; $zaehler++)
{ 
                       if($bild != "." && $bild != ".." && is_file($bilder_verz.$bild[$zaehler]))
                       {
                            if($kommentar != "." && $kommentar != ".." && is_file($kommentar_verz.$kommentar[$zaehler]))
                            {
                               $kommentar[$zaehler] = file_get_contents($kommentar_verz.$kommentar[$zaehler]);
?>
    <td>
        <table>
            <tr>
                <td>
                    <a href="<? echo $bilder_verz.$bild[$zaehler]; ?>" rel="lightbox[galerie]" target="_self"><img src="<? echo $bilder_verz.$bild[$zaehler]; ?>" width="200" border="0" cellpadding="2" cellspacing="2" align="middle"></a>
                </td>
            <tr>
                <td>
                    <? echo $kommentar[$zaehler]; ?>
                </td>
            </tr>
        </table>
    </td>
<? 
                            }
                       }
                    
                          $spalte++;
                if ($spalte == $anz_bilder)
                    {
                        echo "</tr>\n<tr>\n";
                        $spalte="0";
                    }
}
?>
    </tr></table>
<?
  echo "Bilder<br><pre>";
print_r($bild);
echo "</pre>";
echo "Kommentare<br><pre>";
print_r($kommentar);
echo "</pre>";
?>

Wäre nett wen mir mal jemand da helfen könnte ;)
 
Was mir aufgefallen ist:
  1. Du verwendest verschachtelte Tabellen als Grundgerüst für dein Layout, was du unterlassen solltest. Dafür gibt es DIV-Boxen.
  2. Du hast in deinem ersten HTML-Teil einen kleinen Fehler: du schließt deine Tabelle, bevor du die Tabellenzeile schließt.
  3. Was macht deine erste WHILE-Schleife? Die hat gar keine Befehle in ihrem Körper!
  4. Die Funktion sort gibt nur einen boolschen Wert zurück und kein Array.
  5. Auch in deinem zweiten HTML-Teil stimmt die Hierarchie deiner Tags nicht.
Es wäre interessant zu wissen, wie es aussehen soll und wie deine Kommentar-Dateien aussehen und deine Bilddateien.

== EDIT ==
Das hier dürfte in etwa dein Problem lösen - sauber, kurz und verständlich:
PHP:
<?php
ini_set('display_errors', 0);
error_reporting(E_ALL);

$directory_comments = 'kom/' . $_GET['verz'] . '/';
$directory_pictures = 'bilder_g/' . $_GET['verz'] . '/';

if(file_exists($directory_comments) && is_dir($directory_comments)) {
	$comments = scandir($director_comments);
	array_filter($comments, function($file) {
		return ($file[0] !== '.');
	});
	$comments = array_values($comments);
}

if(file_exists($directory_pictures) && is_dir($directory_pictures)) {
	$pictures = scandir($directory_pictures);
	array_filter($pictures, function($file) {
		return ($file[0] !== '.');
	});
	$pictures = array_values($comments);
}
?>
<!DOCTYPE html>
<html>
<head>
  <title>Bildergallerie</title>
  <style type="text/css">
    body {
      background-color: #FFFFFF;
    }
    
    #container {
      width: 700px;
    }
  </style>
</head>
<body>
  <div id="container">
    <?php foreach($pictures as $i => $picture): ?>
    <div class="pictures">
      <a href="<?php echo $directory_pictures . $picture; ?>" rel="lightbox[galerie]" target="_self">
        <img src="<?php echo $directory_pictures . $picture; ?>" />
      </a>
    </div>
    <div class="comments">
      <?php echo file_get_contents($directory_comments . $comments[$i]); ?>
    </div>
    <?php endforeach; ?>
  </div>
</body>
</html>
 
Zuletzt bearbeitet:
Tachen,

Zu 1. 2. und 5. Ein bekannter hat die vorgabe gemacht wie die Tabelle aussehen soll, deswegen habe ich mich da nicht drum gekümmert ;)

zu 3. Stimmt, im endeffekt war diese while schleife nur dafür vorhanden die verzeichnisse einzulesen ;)
zu 4. Oh dann habe ich den Befehl wohl falsch verstanden wundert mich nur das er dann die dateien trotzdem sortiert hat.

Also im endeffekt soll die ausgabe ungefähr so aussehen

|--------|--------|----------|
| Bild 1 | Bild 2 | Bild 3 |
|--------|--------|----------|
|Kom1 | Kom 2| Kom 3 |
|--------|--------|----------|
| Bild 4 | Bild 5 | Bild 6 |
|--------|--------|----------|
| kom 4| kom 5 | kom 6 |
|--------|--------|----------|

usw. ich hoffe ist verständlich ;)

Die Kommentar Dateien sind einfache TXT dateien, die text enhalten, also sowas wie "Meine Freundin beim laufen" etc .
 
Aber haben die Dateien der Kommentare und Bilder den gleichen Namen? Und die Kommentare sind letztendlich deine eigenen? Und für genauere Informationen: RTFM ;)
 
Ja die Kommentare und die bilddateien haben die gleiche Namen also 01.jpg und 01.txt etc.
Wie gesagt ich helfe einem Kollegen nur und das sind dann seine Kommentare ;)
 
Zurück