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

Photogallery (php,mysql)

fatmike182 15.04.2008 - 11:42 3127 39
Posts

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25404
Gib mal Table-Struktur und das genaue SQL-Statement raus, dann werden wir den Fehler schon finden.

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
ok, funktioniert...
isses doch an der Zeit gelegen?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25404
Die Glaskugel sagt "Ja!".

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
thx - wär nie draufgekommen.
dafür sind meine thumbs jetzt auf einmal schwarz (die 225x168 100% qualität thumbs sind schwarz, die 40x30 70% qualität passen; gleiche Funktion wird aufgerufen, Ort & Orientierung passt). Aber da komm ich morgen irgendwann slebst drauf.

edit: verdächtige den header-pfad.
falls wer mal ein kurzes thumb-script brauchen sollte (man findet auch schlechtere Skripts als das im Netz)
Code: PHP
function create_thumbs($file_dir, $file, $width, $height, $type, $longer_2be, $preview_quality, $save_dir)
	{
	include 'connect.php';
	switch ($type)
	{
		case 1:
			$image = imagecreatefromgif($file_dir.$file);
			header('Content-type: image/gif');
			break;
		case 2: 
			$image = imagecreatefromjpeg($file_dir.$file);
			header('Content-type: image/jpeg');
			break;
		case 3: 
			$image = imagecreatefrompng($file_dir.$file);
			header('Content-type: image/png');
			break;
		default:
		return false;
		break;	
	}
	
	if ($width < $height)
	{
		$resize_factor = (float) ($height/$longer_2be);
		$new_height = (int) $longer_2be;
		$new_width = round($width/$resize_factor);
	}
	else
	{
		$resize_factor = (float) ($width/$longer_2be);
		$new_width = (int) $longer_2be;
		$new_height = round($height/$resize_factor);
	}
	
	$preview = imagecreatetruecolor($new_width, $new_height);
	imagecopyresampled($preview, $image, 0,0,0,0, $new_width, $new_height, $width, $height);
	imagejpeg($preview, $save_dir.$file, $preview_quality);
};
Bearbeitet von fatmike182 am 21.04.2008, 01:57

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
mittlerweile haut alles so hin wie es das tun sollte, bis auf eine Kleinigkeit:
Derzeit wickle ich alles im selben File (browse.php) ab. Ich starte von der Datei um die Uebersicht aller upgeloadeten Bilder aus dem Upload-ordner zu bekommen und teile die dann auf verschiedene Alben auf. Dafuer hab ich thumbs erstellt, die mir die Zuordnung zu Alben vereinfachen.
Wenn ich allerdings dann das Formular (Bilder werden aus der einfachn for-schleife in die DB eingetragen, evtl muessen Ordner erstellt werden, Uebersichts-thumbs werden per unlink geloescht, Bilder werden vom Upload-folder in den Bilder-Folder verschoben, neue/groeszere Thumbs werden fuers Album erstellt) abschicke, bekomme ich eine Bestaetigung und kann per <a href="browse.php"> wieder zur Uebersicht gelangen.

-> Bilder die einem Album zugeordnet wurden sollten nichtmehr da sein, sind sie aber noch. Erst wenn man refreshed stimmt alles.

Wie kann ich dieses Cache-Problem loesen? Nachdem ich 4 alben gleichzeitig zuordnen kann wird das sicher nicht oft notwendig sein, aber trotzdem stoerts mich.


edit:
Wollte eigentlich eine Zufallszahl anhaengen, aber es geht auch ohne:
<a href="browse.php?">
Muss noch testen, ob das nur bei meinem Browser geht
Bearbeitet von fatmike182 am 21.04.2008, 14:54

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4280
es gibt ja diverse header die cachen unterbinden sollen, sowohl html als auch php.


für php: header('Cache-Control: no-store, no-cache, must-revalidate');
für html: selfhtml.de ;)

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
abhängig davon wie kompatibel das mit dem Fragezeichen am Schluss ist find ich die Lösung aber dann sogar "eleganter" ;)

Der Grund warum ich frage ist, dass ichs mir nicht erwartet hätte, dass es zu einem cachingproblem kommt (was aber glaub ich eh mehr ein Browser-bug ist als ein coding-bug?)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25404
It's not a bug, it's a feature. Caching ist stark vom Browser abhängig, am problematischsten ist Opera in seinem "Super-Duper Caching-Modus". Es gibt eine Menge HTTP-Header, die du vorweg schicken kannst um den Browser über den Inhalt aufzuklären. Wäre nicht schlecht wenn du auch ein Last-Modified-Datum angibst. Mehr dazu gibts hier.

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
thx - ich werd das dann irgendwann mal durchtesten. Zzt ist diese Funktion eh nur für mir gedacht, andere bekomme nur die index.php zu sehen.

Aber wiedermal hab ich ein paar Fragen:
für diese index.php möchte ich in der linken Bildschirmhälfte die Albennamen untereinander mit Infos wie Erstllungsdatum, Fotoanzahl auflisten wobei der Albumname gleich als Link fungiert. Wenn man über den Link hovert soll in der rechten Bildschirmhälfte jeweils ein div agezeigt werden, welches die Albumbeschreibung + 3 Bilder (zufällig ausgewählt) anzeigt (Titelbild ist also keines vorgesehen).
Falls man sich dazu entschließen sollte den Albumtitel anzuklicken kommt man auf die Albumübersichtseite mit 4x3 Thumbs angeordnet...

Komm ich an der albumspezifischen Tabelle vorbei (ID, Albumid, bildrname oder Bildid)?
Wollte grad probieren einfach eine album_entry_number bei der Bilder-tabelle zu nehmen, aber das ist nicht ganz so leicht wie gedacht, da man (falls ich das richtig durchüberlegt hab) bei den bereitsbestehenden Alben die Anzahl der Bilder abfragen muss und dann erst eintragen kann... Nachdem ich eh schon übermäßig viele DB-Abfragen hab möcht ich das vermeiden.
Eine andere Idee wäre, bei jeder Albumserstellung eine Variable zu genereieren die dann immer erhöht wird, wenn ein Bild ins gleiche Abum kommt. Das ist bei wenigen Alben sicher kein schlechter weg, wirkt aber bei mehreren Alben bissal unsauber imho.

ica

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9817
also ich habs mir jetzt zwei mal durchgelesen und verstehe noch immer nicht was dein problem ist.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz