| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

20-06-2009, 19:59
|
|
Tyssen
Registrierter Benutzer
|
|
Registriert seit: Feb 2002
Beiträge: 6
|
|
file_exists mit nur einen Teil des Dateinamens
Hallo,
wie kann ich mit file_exists eine Datei feststellen wenn ich nur einen Teil des Suchstrings (wie folgend die Artikelnummer) habe:
Die Datei liegt so auf den Server: 952129_Artikelnummer_sbdb.jpg
..und weiter: wie bekomme ich den Dateinamen dann zurück um das Bild anzuzeigen.
..geht das überhaupt?
..habt Ihr einen Tipp (Link, Suchtext)?
Danke und Gruß
Michael Tyssen
|

20-06-2009, 20:01
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Eine Datenbank verwenden wär wohl das beste und einfachste. Ansonsten halt mit glob() arbeiten.
|

20-06-2009, 23:48
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Zitat von Tyssen
Hallo,
wie kann ich mit file_exists eine Datei feststellen wenn ich nur einen Teil des Suchstrings (wie folgend die Artikelnummer) habe:
Die Datei liegt so auf den Server: 952129_Artikelnummer_sbdb.jpg
|
Glaub ich nicht. Eher liegt sie wohl hier ...
PHP-Code:
$_SERVER['DOCUMENT_ROOT'] . '/952129_Artikelnummer_sbdb.jpg';
... oder auch da ...
PHP-Code:
getcwd() . '/952129_Artikelnummer_sbdb.jpg';
... oder doch woanders.
Zitat:
|
..und weiter: wie bekomme ich den Dateinamen dann zurück um das Bild anzuzeigen.
|
Indem du die fehlenden Pfadbestandteile ergänzt, sprich: vorne den Pfad zum Verzeichnis und hinten den Rest des Dateinamens anklebst. PHP hat dafür den String-Concatenation-Operator ".":
PHP-Code:
$artikelnummer = '952129';
// überprüfung der Artikelnummer, falls diese aus Benutzereingaben
// stammt
if (preg_match('/\A[0-9]+\z/', $artikelnummer)) {
die('ungültige Artikelnummer');
}
$restlicher_dateiname = '_Artikelnummer_sbdb.jpg';
// sollte immer mit einem Verzeichnistrenner enden
$pfad_zur_datei = '/'; // laut deinen Angaben
file_exists($pfad_zur_datei . $artikelnummer . $restlicher_dateiname);
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|

21-06-2009, 00:55
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Ich denke eher Tyssen kennt den kompletten Dateinamen nicht, dann wird glob wohl am besten sein, wie h3ll schon sagte.
|

21-06-2009, 11:35
|
|
Tyssen
Registrierter Benutzer
|
|
Registriert seit: Feb 2002
Beiträge: 6
|
|
<Glaub ich nicht. Eher liegt sie wohl hier ...
(Danke!!, verstehe ich zwar nicht, warum du darauf hinweist. Kann man sich doch denken und ist auch nicht so wichtig.)
Die Frage hast du aber nicht verstanden. Liegt vielleicht an mein Deutsch.
Also nochmal:
Der Dateiname besteht aus drei Zeichenketten/teilen:
1111_2222_333.jpg
Ich möchte also per file_exists wissen ob es eine Datei ???_2222_??? gibt.
1111 und 3333 sind dabei nicht bekannt. Wenn es die Datei gibt muss ich dann aber den kompletten Namen haben um diese Datei aufzurufen.
ich werde mich mal mit glob beschäftigen DANKE!!!
Gruß
Michael Tyssen
|

21-06-2009, 11:41
|
|
nichtsooft
Registrierter Benutzer
|
|
Registriert seit: Apr 2006
Ort: Wien [AUT]
Beiträge: 383
|
|
Nur anhand der Artikelnummer wird das nix!
Da musst du zumindest wissen in welchem Verzeichnis das Bild liegt. -> Dafür musste aber den Pfad kennen...
Mit dem Pfad lässt du dir alle Dateien in eben diesem Verzeichnis listen und schauste nach welche Datei die Artikelnummer im Dateinamen hat. So kannste das dann machen!
__________________
WHILE (!$asleep) { $sheep++; }
|

21-06-2009, 12:06
|
|
Tyssen
Registrierter Benutzer
|
|
Registriert seit: Feb 2002
Beiträge: 6
|
|
So einfach gates:
foreach (glob("xxxxxx/2826/*_{$bild_id}_*.jpg") as $filename) {
#echo "$filename - Größe: " . filesize($filename) . "\n";
$bilder_anz="< img src=$filename>";
}
|

21-06-2009, 13:59
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Womit dann auch geklärt wäre, dass das hier eine "falsche" Frage war:
Zitat:
|
wie kann ich mit file_exists eine Datei feststellen wenn ich nur einen Teil des Suchstrings (wie folgend die Artikelnummer) habe:
|
|

23-06-2009, 00:02
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Zitat von Tyssen
foreach (glob("xxxxxx/2826/*_{$bild_id}_*.jpg") as $filename) {
#echo "$filename - Größe: " . filesize($filename) . "\n";
$bilder_anz="< img src=$filename>";
}
|
Einfach?
Und was machst du, wenn es mehrere Dateien mit passendem Namen gibt?
In deinem Fall unterschlägt das Script dann alle bis auf die letzte, nach dem Motto: "Wird schon die richtige sein".
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|

23-06-2009, 10:48
|
|
ModestLife
Registrierter Benutzer
|
|
Registriert seit: Sep 2007
Beiträge: 105
|
|
Es ist ganz einfach: Deine Datenstruktur isch schlecht. Es kann nicht sein, dass du nach dem Artikelbild raten musst. Entweder du weisst wo es liegt und wie du darauf zugreifen kannst, oder du musst deine Datenhaltung überdenken.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|