Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Dateien in einem Verzeichnis aufgrund des Namens einer Ausgabe zuordnen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Dateien in einem Verzeichnis aufgrund des Namens einer Ausgabe zuordnen


 
baerndorfer
02-06-2008, 17:57 
 
Hallo Community,

Ich stehe vor folgendem Problem.

1) Es gibt eine Datenbank, wo jedem Zeileneintrag eine bestimmte ID zugeordnet ist.
2) Es gibt ein Verzeichnis am Webserver, wo Bilddaten in folgendem Format gespeichert sind.

1_1
1_2
2
4_1
5_1
5_2
6
6_1
6_2
usw.

Es ist nun so, dass der ID 5 in der Datenbank 2 Bilddaten zuzuordnen sind, nämlich 5_1 sowie 5_2
Der ID 6 sind demnach 3 Bilder zuzuordnen (6, 6_1, 6_2)
usw.

Wie stelle ich das am Besten an?

Ausgeben muss ich das Ganze ja auch noch.

Folgendes habe ich bis jetzt gemacht..


<?php
include("./include/bla.inc");
$dbverbindung = mysql_connect ($db_host, $db_user, $db_password)
or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db($db_name)
or die("Auswahl der Datenbank fehlgeschlagen");

$sqlabfrage = "SELECT id, name4, desc1 FROM fish_db";
$sqlabfrage .= " WHERE name4 LIKE '$anfrage%' OR desc1 LIKE '%$anfrage%'";

$filename = "/www/pfadzudendateien/images/$id";
if (file_exists($filename)) {
$exists = 1;
} else {
$exists = 0;
}



$res = mysql_query($sqlabfrage) or die("Anfrage fehlgeschlagen: " . mysql_error());;
$num = mysql_num_rows($res);
echo "<font color='red'><b>$num Datens&auml;tze</b> lt. Anfrage gefunden</font><hr noshade size='1'>";
if ($num==0)
echo "keine passenden Datensätze gefunden";

for ($i=0; $i<$num; $i++)
{
$id = mysql_result($res, $i, "id");
$name4 = mysql_result($res, $i, "name4");
$desc1 = mysql_result($res, $i, "desc1");
echo "$name4<br>"; if ($exists == 1) {
echo"<img src=./pfad/images/$id>$desc1";
}
else {
echo"$desc1";
};

}

mysql_close($dbverbindung);
?>


Mein Script funktioniert leider nur, wenn die Daten ohne _1 oder _2 vorliegen.
Also eine Datei mit dem simplen Namen 8 oder 123 wird dargestellt, alles andere NICHT.

Wie kann ich das lösen?

Herzlichen Dank für Eure Antworten.

lg
-baerndorfer

 
combie
02-06-2008, 18:04 
 
$filename = "/www/pfadzudendateien/images/$id";
Wo kommt da $id her?

Und, warum nummerierst du die Bilder nicht einfach mit auto_increment duch?
Eine solche Namensvergabe ist unpraktisch

 
baerndorfer
02-06-2008, 18:16 
 
Die Namensvergabe ist in der Vergangenheit leider schon so passiert.

Na die $id soll halt der Name des Bildes sein..

 
combie
02-06-2008, 20:15 
 
$sqlabfrage = " SELECT id, name4, desc1
FROM fish_db
WHERE name4 LIKE '$anfrage%' OR
desc1 LIKE '%$anfrage%' ";

$res = mysql_query($sqlabfrage)
or die("Anfrage fehlgeschlagen: " . mysql_error());;

while($row = mysql_fetch_assoc($res))
{
$id = $row['id'];
$desc1 = $row['desc1'];
$name4 = $row['name4'];
$filename = '/www/pfadzudendateien/images/'.$id;

$dateien = glob($filename.'_*');
if(file_exists($filename))
array_unshift($dateien,$filename);

echo $row['name4'].'<br>';
foreach($dateien as $datei)
echo '<img src="./pfad/images/'.basename($datei).'"><br>';
echo $row['desc1'].'<hr>';
}



*ungetestet*

 
baerndorfer
02-06-2008, 21:45 
 
Vielen herzlichen Dank,

Das funktioniert bestens !!!!

lg
baerndorfer


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:04 Uhr.