supersalzi
Erfahrenes Mitglied
Hey,
Ich bin mal wieder am verzweifeln...
Ich versuche Bilder aus einem Ordner einzulesen und diese in zwei varianten neu zu speichern. Das geht auch super. Doch soll Dabei ein MySQL eintrag in einer Datenbank eingefügt werden, in welcher jedes Foto seine Zeile hat.
Die ID im DB ist mir dem neu vergebenen Dateinamen des Fotos identisch.
Nun das Problem.
Es werden alle Fotos in richtiger reihenfolge bearbeitet und bekommen den richtigen Dateinamen. Auch wird dem DB eintrag die richtige ID gegeben. Sprich, die Schleife läuft richtig.
Doch: Im DB stimmt die Rheihenfolge nicht. (ich will die IDs nummerisch aufsteigeigend schön nacheinander haben.)
Das Ergebnis sieht etwa so aus:
id: 3
id:4
id:5
id:6
----- neue Einträge
id:9
id:8
id:7
id:10
id:12
id:12
Kann mir bitte jemand erklären wie es zu dieser unschönene verdrehung kommt?
(ich weis, mit ORDER BY id werden sie richtig ausgegeben, aber ich finde es unschön)
ich tippe mal auf die functions, sowas hab ich das erste mal gemacht... da geht bestimmt was schief.
hier nochmal der Code:
Ganz vielen Dank, salzi
Ich bin mal wieder am verzweifeln...
Ich versuche Bilder aus einem Ordner einzulesen und diese in zwei varianten neu zu speichern. Das geht auch super. Doch soll Dabei ein MySQL eintrag in einer Datenbank eingefügt werden, in welcher jedes Foto seine Zeile hat.
Die ID im DB ist mir dem neu vergebenen Dateinamen des Fotos identisch.
Nun das Problem.
Es werden alle Fotos in richtiger reihenfolge bearbeitet und bekommen den richtigen Dateinamen. Auch wird dem DB eintrag die richtige ID gegeben. Sprich, die Schleife läuft richtig.
Doch: Im DB stimmt die Rheihenfolge nicht. (ich will die IDs nummerisch aufsteigeigend schön nacheinander haben.)
Das Ergebnis sieht etwa so aus:
id: 3
id:4
id:5
id:6
----- neue Einträge
id:9
id:8
id:7
id:10
id:12
id:12
Kann mir bitte jemand erklären wie es zu dieser unschönene verdrehung kommt?
(ich weis, mit ORDER BY id werden sie richtig ausgegeben, aber ich finde es unschön)
ich tippe mal auf die functions, sowas hab ich das erste mal gemacht... da geht bestimmt was schief.
hier nochmal der Code:
PHP:
<?php
$dir_new = "admin/fotos/up/"; // Directory with the new Images
$newImgPath = "content/fotos/img/"; // Path for Images
$newThumbPath = "content/fotos/thumbs/"; // Path for Thumbs
$maxThumbWidth = '96'; // maximum widht of Thumbs in Pixel
$maxThumbHeight = '96'; // maximum height of Thumbs in Pixel
$maxImgWidth = '600'; // maximum widht of Images in Pixel
$maxImgHeight = '600'; // maximum height of Images in Pixel
require_once'scripts/db-access.inc.php'; // log into database
// form data with default values
if($_POST["button_send"] == "send"){
if(!empty($_POST["country"])){
$country = $_POST["country"];
}else{
$country = "deutschland";
}
$region = $_POST["region"];
$place = $_POST["place"];
$cat = $_POST["cat"];
$topic = $_POST["topic"];
$genre = $_POST["genre"];
$series = $_POST["series"];
$select = $_POST["select"];
if(!empty($_POST["by"])){
$by = $_POST["by"];
}else{
$by = "salzi";
}
}
function db_id(){
$sql = "SELECT * from fotos ";
$result = mysql_query($sql);
$last_dbID = mysql_num_rows($result);
return $last_dbID + 1;
}
function db_insert($id, $date, $country, $region, $place, $cat, $topic, $genre, $series, $select, $by){
$sql = "INSERT INTO `fotos` (`id`, `date`, `title`, `country`, `region`, `place`, `cat`, `topic`, `genre`, `series`, `select`, `by`) VALUES ('$id', '$date', '', '$country', '$region', '$place', '$cat', '$topic', '$genre', '$series', '$select', '$by');";
mysql_query($sql);
}
function exif_date($file){
$exif = exif_read_data("$file", 'EXIF');
$date= $exif[DateTimeOriginal];
return $date ;
}
$dir_content = opendir($dir_new);
while (($filename = readdir($dir_content)) !== false) {
if(($filename != "." && $filename != "..") ){
//echo "filename: $filename : filetype: " . filetype($dir_new . $filename) . "<br>\n";
$file = "$dir_new/$filename";
// calculate new image and thumb size
$imgSize = getimagesize($file);
$origWidth = $imgSize['0'];
$origHeight = $imgSize['1'];
if($origWidth > $origHeight){ //wenn Querformat
$ThumbFactor = $origWidth / $maxThumbWidth ;
$newThumbWidth = $origWidth / $ThumbFactor;
$newThumbHeight = $origHeight / $ThumbFactor ;
$imgFactor = $origWidth / $maxImgWidth ;
$newImgWidth = $origWidth / $imgFactor;
$newImgHeight = $origHeight / $imgFactor;
}elseif($origWidth < $origHeight){ //wenn Hochformat
$ThumbFactor = $origHeight / $maxThumbHeight ;
$newThumbWidth = $origWidth / $ThumbFactor;
$newThumbHeight = $origHeight / $ThumbFactor ;
$imgFactor = $origHeight / $maxImgHeight ;
$newImgWidth = $origWidth / $imgFactor;
$newImgHeight = $origHeight / $imgFactor;
}
//insert into database
$newID = db_id();
$newName = $newID.".jpg";
$date = exif_date($file);
db_insert($newID, $date, $country, $region, $place, $cat, $topic, $genre, $series, $select, $by);
// img
$newImg = imagecreatetruecolor($newImgWidth, $newImgHeight);
$newImgTemp = imagecreatefromjpeg($file);
imagecopyresampled($newImg, $newImgTemp, 0, 0, 0, 0, $newImgWidth, $newImgHeight, $origWidth, $origHeight);
imagejpeg($newImg, "$newImgPath$newName", 70);
// thumb
$newThumb = imagecreatetruecolor($newThumbWidth, $newThumbHeight);
$newThumbTemp = imagecreatefromjpeg($file);
imagecopyresampled($newThumb, $newThumbTemp, 0, 0, 0, 0, $newThumbWidth, $newThumbHeight, $origWidth, $origHeight);
imagejpeg($newThumb, "$newThumbPath$newName", 60);
unlink($file);
}
}
header("Location: index.php?app=admin&area=5");
?>
Ganz vielen Dank, salzi