URL: https://www.overclockers.at/coding-stuff/php_mkdir_thumb-problem_203911/page_1 - zur Vollversion wechseln!
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>");
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.
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
schreibrechte vorhanden? schon mal mit full-path versucht?
selbst dann sollte er ja in localhost den Ordner erstellen (was nicht passiert)
Schreibrechte hab ich
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
,
just my 2 Dollar
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)
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
Und den code holen wir uns alle aus unseren magischen Glaskugeln?
Zitat von kleinerChemikerwenn 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
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: PHPfunction 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); };
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,
Ohne Error Output geht nix.Code:error_reporting(E_ALL);
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
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: PHPerror_reporting(E_ALL); include("myfilewithparseerrors.php");
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025