PHP: mkdir + thumb-problem

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_mkdir_thumb-problem_203911/page_1 - zur Vollversion wechseln!


fatmike182 schrieb am 19.01.2009 um 12:01

Hallo,
ich möchte, dass beim Absenden des Formulars (jeder Beitrag hat eine autoincrement ID) die img-src-Tags geändert werden (da man davor die ID noch nicht kennt).
Weiters soll ein Ordner erstellt werden mit dem Namen der ID und dorthin kommen dann auch die Bilder.
Was mach ich falsch, dass das nicht funktioniert?

thumb problem siehe Post von 26.1.

Code: PHP
// nächste autoincrement Nummer = ID wird bestimmt um bei den img-URLs den Ordnernamen (=ID) anzugeben
		$next_id_query = mysql_query("SHOW TABLE STATUS LIKE '$dbtable'") 
			or die ("<p>Couldn't get the next autoincrement ID, stupid situation, nm</p>");
		$next_id_row = mysql_fetch_assoc($next_id_query);
		$next_id = $next_id_row['Auto_increment'];
		$abstract_edited = str_replace('news/(ID)/', 'news/'.$next_id.'/', $abstract_edited);
		article_edited = str_replace('news/(ID)/', 'news/'.$next_id.'/', article_edited);
		
		mkdir('/'.$next_id) or die ("<p>Was too drunk to create a folder, it' s my fault I know</p>");

Was passiert: nach dem Absenden sollte die selbe Seite dargestellt werden, aber er findet sie nicht.
Springt er dann automatisch in das neuangelegte VErzeichnis?


Spikx schrieb am 19.01.2009 um 12:03

Nach dem Absenden des Formular sollte "der Browser dort stehen", was bei der action angegeben ist, außer du leitest die Abfrage mit header("Location: ..."); um.


fatmike182 schrieb am 19.01.2009 um 12:15

vor dem Einfügen der mkdir-Zeile hat alles wunderbar funktioniert.
Im form-tag steht bei action "<? $_SERVER['PHP_SELF']; ?>"
btw: es wird auch zzt kein directory erstellt, also hats da generell was


kleinerChemiker schrieb am 19.01.2009 um 12:31

schreibrechte vorhanden? schon mal mit full-path versucht?


fatmike182 schrieb am 19.01.2009 um 12:36

selbst dann sollte er ja in localhost den Ordner erstellen (was nicht passiert)
Schreibrechte hab ich


kleinerChemiker schrieb am 19.01.2009 um 12:39

wenn php deinen pfad als fullpath interpretiert, dann müßtest du schon schreibrechte auf / haben. probiers halt einfach aus, mehr als daß es nichts bringt, kann ja nciht passieren ;)


fatmike182 schrieb am 19.01.2009 um 17:03

:bash:,
just my 2 Dollar :D


fatmike182 schrieb am 26.01.2009 um 00:49

weiter gehts:
soweit funktioniert alles, hab jetzt ein file dazu gebastelt, das thumbs von allen files in einem ordner erstellt.
Irgendwas hats da - es werden nicht alle files gethumbed. Scheinbar alte files nicht (?)
Wie kann ich das beheben oder warum ist das so?
(zum screenie. Ordner: der Ordner mit den Originalen, Browser-pic: die thumbs, im thumbsordner befinden sich auch nur die gleichen pics)
click to enlarge

edit: ich seh grad, am Datum liegts auch nicht wirklich, gibt ein älteres file, das gethumbed wurde. an der größe glaub uch auch nicht, gibt noch ein 1MB-Foto das ein thumb hat.
Möchte aber trotzdem verhindern, dass das später nicht mehr passiert oder zumindest der fehler bekannt ist


Spikx schrieb am 26.01.2009 um 10:16

Und den code holen wir uns alle aus unseren magischen Glaskugeln? ;)


COLOSSUS schrieb am 26.01.2009 um 10:22

Zitat von kleinerChemiker
wenn php deinen pfad als fullpath interpretiert, dann müßtest du schon schreibrechte auf / haben. probiers halt einfach aus, mehr als daß es nichts bringt, kann ja nciht passieren ;)

Willst du damit zum Ausdruck bringen, dass wenn du dem PHP-Interpreter mittels mkdir() mitteilst, dass du z. B. unter "/some/path/" (wobei du fuer das Verzeichnis "path" schreib- und ausfuehrberechtigt bist) ein neues Unterverzweichnis erstellen willst, du in / ebenfalls Schreib- und Ausfuehrrechte benoetigst?

Wenn dem so ist kann ich dich naemlich entwarnen - das ist (zumindest unter UNIX und GNU/Linux) keinesfalls so. Ob man einen Pfad absolut oder relativ zum CWD angibt ist den Libraryfunktionen, die diese Aktionen dann tatsaechlich ausfuehren, voellig wurscht.


fatmike182 schrieb am 26.01.2009 um 10:25

naja, ich wüsste leider nicht, welcher Code-Teil da sinnvoll wäre. Wie man sieht sind alle Bilder bis auf Picture 7 & 8 gethumbed worden und ich kann mir nicht erklären, warum gerade diese.
Aber code wäre zum thumben:

Code: PHP
 
function create_thumbs($file_dir, $file, $width, $height, $type, $longer_2be, $preview_quality, $save_dir)
	{
	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);
};


watchout schrieb am 28.01.2009 um 11:34

Dazu müsste man wissen, was das für Bilder sind; Welche Formate (PNG, JPEG, ...?), was drauf ist (PNG-Transparenz?) und welchen Aspect-Ratio sie haben.

Ausserdem,

Code:
error_reporting(E_ALL);
Ohne Error Output geht nix.

Übrigens hab ich genau so nen Code wo rumliegen, kann mich an Probleme mit transparenten PNGs erinnern


fatmike182 schrieb am 28.01.2009 um 11:47

waren screenshots, so wie die anderen pngs auch (wenn nix dabeisteht isses png, 2 sind jpgs, steht dann aber dabei), Transparenz solle also keine da sein.
bzgl error-rep:
das kommt doch einfach in die 1. php Zeile und gilt dann fürs ganze Dokument, oder?
Error schiebt er keinen leider


watchout schrieb am 09.02.2009 um 12:39

Schon mal in die Console geschaut? (Läuft ja am Mac oder? Sonst Apache error.log)

"ssdad" geht mir übrigens auch ab... bist du dir sicher dass du nicht irgendwo zum testen ein Limit eingebaut hast? Oder kommst du in ein Timeout, Memory aus, ...? (siehe console)

error_reporting(E_ALL) gilt für den rest der runtime, funktioniert aber nicht unbedingt überall. z.B. parsing Fehler werden da nicht reported, eh klar, weil PHP die Anweisung ja erst ausführen würde wenn bereits geparsed wurde, ... Sowas umgehst du mit einem einfachen wrapper-file:

Code: PHP
error_reporting(E_ALL);
include("myfilewithparseerrors.php");

Ich glaub auch nicht (mehr) dass es am Thumb-Code liegt, weil dann hättest du wahrscheinlich kein Thumb drin, aber trotzdem die Zeile im Output (halt ohne Bild)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025