"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

HTML/PHP Lokale dateisuche mit Platzhalter

hachigatsu 14.03.2016 - 15:24 1670 8
Posts

hachigatsu

king of the bongo
Registered: Nov 2007
Location: Salzburg
Posts: 5702
Brauche folgendes...

Lokaler webserver, Apache + PHP
Im htdocs werden Bilder gespeichert, diese tragen folgende namen
zb img_2016172113.jpg, img_2016172346.jpg usw...

Ich benötigte eine Seite (html oder PHP) mit Suchmaske die mir nach der Eingabe von zb "172113" (es müssen 6 zeichen eingegeben werden) einfach das entsprechende bild öffnet.

Perfekt wäre es natürlich das Bild in einer Lightbox zu öffnen, aber das ist nur kosmetik... Es reicht wenn das jpg-file direkt aufgerufen wird.

Ohne DB, so einfach wie möglich. Die Clients sind Handys.

kann ma wer helfen? :)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25377
Wenn du keine Datenbank willst, dann ist es die einfachste Art und Weise, alle Dateien in dem Suchverzeichnis einzulesen und durchzugehen. Sollte es zu viel sein, dann wirst du entweder per File oder besser per Caching-Service (zB memcached) eine Liste aller Dateinamen zwischenspeichern müssen.

Aber mal eines nach dem anderen. Du brauchst prinzipiell einfach nur ein readdir() und ein strpos()

Code: PHP
$keyword = '123456';
$rootpath = $_SERVER['DOCUMENT_ROOT'];

if ($handle = opendir($rootpath)) {
    while (false !== ($entry = readdir($handle))) {
        if (stripos($entry,$keyword) !== false) {
            echo "keyword found in file: <a href="/$entry" target="_blank">$entry</a><br>";
        }
    }

    closedir($handle);
}

Ja, das ist einfach nur ein angepasstes Beispiel aus der PHP-Doku. ;)

hachigatsu

king of the bongo
Registered: Nov 2007
Location: Salzburg
Posts: 5702
Danke, werds mir abends daheim mal ansehen..
Fragt sich was zu viel is :)

es wird in der regel um ~400 Files gehen. Mehr nur in Ausnahmefällen.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25377
Kommt auch auf den Traffic und das OS inklusive File-System an. Machs mal so und bei Bedarf wirst du eben ein Caching einbauen müssen.

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4259
warum fügst du nicht einfach vorne ein "img_2016" hinzu?

Umlüx

Huge Metal Fan
Avatar
Registered: Jun 2001
Location: Kärnten
Posts: 8903
vermutlich will er ein "not found" irgendwie formschön abfangen und nicht bloß ein 404 ausgeben?

meepmeep

Here to stay
Avatar
Registered: Feb 2006
Location: Wien
Posts: 2330
ein vorschlag in html/js
Code: HTML
<script>
	function show() {
		var query = document.getElementById('imgQuery').value	
		changeImageSrc('img_2016'+query+'.jpg')
	}
	function changeImageSrc(src) {
		document.getElementById('image').src = src		
	}
</script>

<form onsubmit="show(); return false;">
	<input id="imgQuery" type="text" pattern="\\d{6}" />
	<input type="submit" value="show" />
</form>
<img id="image" src="default.jpg" onerror="/* redirect, alert, do something */ changeImageSrc('404.jpg')">
Bearbeitet von meepmeep am 14.03.2016, 17:56

Gegi

Here to stay
Registered: Jan 2001
Location: Wien
Posts: 775
Zitat von Umlüx
vermutlich will er ein "not found" irgendwie formschön abfangen und nicht bloß ein 404 ausgeben?

404 kann man genauso auf "schön" machen...

pinkey

Here to stay
Registered: Nov 2003
Location: Tirol/Wien
Posts: 2271
soll jeder dann eine fortlaufende nummer und alle bilder sehen können oder willst du das noch etwas verstecken?

d.h. wenn ich weiß das ich z.b. 2016<zahl mit 6 ziffern>.jpg aufrufen kann, ist es ok, dass ich auch 2016<zahl mit 6 ziffern +1>.jpg aufrufen darf oder is das egal bzw. schon mit den 6 ziffern berücksichtigt?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz