tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1035
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    johnny26 Tutorials.de Gastzugang
    Hallo,

    ich bin zufällig durch Google auf euer Forum gekommen.
    Ich habe einen PHP-Code von einem kleinen, selbst-programmierten CMS. Via PHP werden dort aus einem temporären Verzeichnis Bilddateien ausgelesen. Die Bilder sind mit 1.jpg, 2.jpg. usw. nummeriert. Leider habe ich dabei das Problem, dass die Bilder immer in zufälligen Reihenfolge ausgelesen werden..... und dadurch kommen z.B. Bilder, die in der logischen Reihenfolge zuerst dran sind, etwas später in der Galerie... kurzum: Es ist kunterbunt.

    ich habe schon probiert, an verschiedenen Stellen zu drehen, aber leider bekomme die "Macke" nicht weg, dass er die Bilder immer zufällig in die Datenbank einliest, und eben nicht der Nummerierung nach.
    An was liegt das?

    Anbei der Code. Als Hinweis: Zuerst wird eine Galerie erstellt, danach die einzelnen Bilder ebenfalls in die Datenbank eingelesen.

    mfg Andi



    Und hier der Code:
    PHP-Code:
    <?php
    session_start
    ();

    include(
    "../../../includes/config_inc.php");



    If(
    $_POST['sendButton'] == "JETZT ERSTELLEN")
    {

            
    $idEdit $_POST['idEditGet'];
            
    $idConnectionGet $_POST['idConnectionGet'];

    //SESSIONS WERDEN GESCHRIEBEN
            
    $_SESSION['title_for_ses'] = $_POST['title_for'];

        
    //FEHLERMELDUNGEN WERDEN ERZEUGT    
        
    If($_POST['title_for'] == ""){
          
    $mistake "1";
          
    $_SESSION['title_for_msg_ses'] = "Titel darf nicht fehlen!";
        }


        
    //BILDDATEN
        
    if ($_POST["idEditGet"]) {
          
    $Uploaddatei $_FILES['datei']['name'];
          
    $imgsize getimagesize$_FILES['datei']['name']); 
          
    $groesse filesize($_FILES['datei']['name']);
          
         
    $Uploaddatei strtolower("$Uploaddatei");

          
    $path $Uploaddatei;
          
    $path explode(".",$path);
          
    $ext $path[count($path)-1];

        if((
    $imgsize[2] != "2") or ($Uploaddatei == "")){
          
    $mistake "1";
          
    $_SESSION['datei_for_msg_ses'] = "Bild hat nicht das Format jpg!";
        } ElseIf(
    $groesse "2560000"){ //1536000 1,5MB
          
    $mistake "1";
          
    $_SESSION['datei_for_msg_ses'] = "Bilddatei zu grosse max.1.5 MB!";
        }
        }


    $idEditttt $_POST['idEditGet'];

        if(
    $mistake == "1"){
          
    header("location: ../../?ID=$idConnectionGet&toDo=create");
        } else {
        

        
    $vn "../../../ZWISCHENSPEICHER/";
        
    $vnToGo "../../../images/content/pics/thumbs/";
        
    $vnToGo2 "../../../images/content/pics/zoom/";
        
        
    $i 0;
        
        
    $verzeichnis opendir($vn);
        while(
    $file readdir($verzeichnis)) {

            
    $s = @getimagesize($vn."/".$file);

            if(
    in_array($s[2], array(1,2,3)))
                
    $auswahl[] = $file;
                
                if (
    $s[2] == "2") {
                
    $i++;

                
                
                
    //erstellung der galerie
                
    if ($i == 1) {
                
                    
    $INSERT mysql_query("INSERT INTO $tabnamePics SET 
                    title = '"
    .$_POST['title_for']."',
                    status = '1',
                       time = '"
    .time()."',
                    month = '"
    .$month."',
                    year = '"
    .$year."' ") ;
                       
    $id_entry mysql_insert_id();
                    
    $id_entry_code md5($id_entry);
                    
    $hsakjhdasjd $id_entry_code;
        
        
                    
    $UPDATE mysql_query("Update $tabnamePics SET idCertification = '".$id_entry_code."'  WHERE idEntry = '".$id_entry."'");
                    
                    
    $stValue 1;
                 
                } else {
                
    $stValue 0;
                }
                
                
                
            
    $INSERT2 mysql_query("INSERT INTO $tabnamePics SET 
            idConnection = '"
    .$id_entry_code."',
            status = '1',
            time = '"
    .time()."',
            startpic = '
    $stValue' ") ;
            
    $id_entry2 mysql_insert_id();
            
    $id_entry_code2 md5($id_entry2);
            
            
    $UPDATE2 mysql_query("Update $tabnamePics SET idCertification = '".$id_entry_code2."'  WHERE idEntry = '".$id_entry2."'");
                
                
                
                
                
                    
    $url $vn.$file;
                    
    $thumb_width 150;
                    
    $quality=90
                    
    $newFileName $id_entry_code2.".jpg";
                    
                    
    $thumb_width2 640;
                    
                     

                        
    $UPDATE mysql_query("Update $tabnamePics SET pic = '".$newFileName."'  WHERE idEntry = '".$id_entry2."'");
                    
                    
    //org bild öffnen
                    
    $org_image imagecreatefromjpeg($url);
                    
    $org_image_daten getimagesize($url);
                    
    $org_width $org_image_daten [0];
                    
    $org_height $org_image_daten [1];
                        
                    
    //seitenverhältnis berechnen
                    
    $skale_faktor $org_width $thumb_width;
                    
    $thumb_height round ($org_height $skale_faktor);
                    
                    
    //var_dump ($org_image_daten);
                     
    if($org_width $org_height){
          
                              
                      
    $thumb_image imagecreatetruecolor(13886);
                    
    imagecopyresampled($thumb_image,$org_image,0,0,0,0,13886,13886);
                              
                              
                          } else {
                              
    $thumb_image imagecreatetruecolor($thumb_width$thumb_height);
                    
    imagecopyresampled($thumb_image,$org_image,0,0,0,0,$thumb_width$thumb_height,$org_width$org_height);
                          }
              
                    
    $thumb_image imagecreatetruecolor($thumb_width$thumb_height);
                    
    imagecopyresampled($thumb_image,$org_image,0,0,0,0,$thumb_width$thumb_height,$org_width$org_height); 
            
                
                    if (
    imagejpeg($thumb_image$vnToGo.$newFileName ,$quality)){
                        
    imagedestroy ($thumb_image);
                        
    imagedestroy ($org_image);
                        
    //echo "<p>Thumb wurde erzeugt</p>";
                        //echo "<p><img src=\"".$vnToGo.$newFileName."\" /></p>";
                
                    
    }
                    
                    
    //org bild öffnen
                    
    $org_image imagecreatefromjpeg($url);
                    
    $org_image_daten getimagesize($url);
                    
    $org_width $org_image_daten [0];
                    
    $org_height $org_image_daten [1];
                    
                    
    //seitenverhältnis berechnen
                    
    $skale_faktor2 $org_width $thumb_width2;
                    
    $thumb_height2 round ($org_height $skale_faktor2);
                    
                    
    //var_dump ($org_image_daten);
                    
    $thumb_image2 imagecreatetruecolor($thumb_width2$thumb_height2);
                    
    imagecopyresampled($thumb_image2,$org_image,0,0,0,0,$thumb_width2$thumb_height2,$org_width$org_height); 
            
                
                    if (
    imagejpeg($thumb_image2$vnToGo2.$newFileName ,$quality)){
                    
                        
    imagedestroy ($thumb_image2);
                        
    imagedestroy ($org_image);
                        
    //echo "<p>Thumb wurde erzeugt</p>";
                        //echo "<p><img src=\"".$vnToGo.$newFileName."\" /></p>";
                
                    
    }
                    
                    
                    
    unlink($vn."$file");
                    
        
                  }
        
        }

           
            if (
    $i == 0) {
                
    $_SESSION['title_for_msg_ses'] = "Im Ordner ZWISCHENSPEICHER FEHLEN DIE BILDER!";
                
    header("location: ../../?ID=$idConnectionGet&toDo=create");
            } else {
            
                
    //DEL SESSIONS
                 
    $_SESSION['title_for_ses'] = "";
                 
    $_SESSION['title_for_msg_ses'] = "";
                 
    $_SESSION['text_for_ses'] = "";
                 
    $_SESSION['text_for_msg_ses'] = "";
                 
    $_SESSION['datei_for_msg_ses'] = "";

         
                  
    $_SESSION['msg_ses'] = "Erfolgreich gespeichert";
                  
    header("location: ../../?ID=$idConnectionGet&idEdit=$hsakjhdasjd");
            
            }    

        }

    }
    ?>
    Geändert von Maik (29.04.10 um 20:25 Uhr) Grund: Code in [php] [/php]-Tag gepflanzt
     

  2. #2
    bergonline bergonline ist offline Mitglied Platin
    Registriert seit
    Jul 2006
    Beiträge
    518
    Hey,

    äähm wieso fügst du mit einem Script nicht alle Bilder zur Datenbank ( Ort, Title , Beschreibung etc)
    und mit einem Script liest du die Datenbank dementsprechend aus!

    Zudem solltest du deinen Code in {CODE} - Tags nehmen ( mit [ eckigen Klammern ] )

    mfg

    bo
     

  3. #3
    Nord-Süd-Richtung Nord-Süd-Richtung ist offline Mitglied Platin
    Registriert seit
    Feb 2008
    Beiträge
    522
    Noch besser wären [ php][/php] tags
     
    Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
    Die Naz!s trugen braune Hosen ...

  4. #4
    johnny26 Tutorials.de Gastzugang
    Danke für die Tipps.

    Mein hauptsächliches Problem ist eigentlich, dass die Reihenfolge so durcheinander ist.
    Ich habe jetzt auch andere Posts gelesen, bei denen das genau gleich ist.

    Da stand dann, dass man das ganze in ein Array einlesen soll.
    Nur leider bin ich nicht so der Experte, dass ich es jetzt gleich selber hinkriege. Hat bei mir viel mit Trial & Error zu tun .

    Das Teil, das ich nicht kapier hier, ist die variable $s, die im Zusammenhang steht mit dem Auslesen eines Arrays (array_in).
    Wozu brauch ich das denn hier? Kann ich da mein neues Array draus bauen?

    Sorry für die vielen Fragen, hab gedacht, es wäre nur n kleines Problem, die Sortierung mit dem bestehenden Script zu ändern, aber das scheint es wohl (für mich zumindest) nicht zu sein.
    Danke nochmals für eure Antworten.


    mfg
    Andi
     

  5. #5
    Sprint Sprint ist offline Mitglied Platin
    Registriert seit
    Apr 2004
    Ort
    Die heimliche Hauptstadt des Bieres
    Beiträge
    579
    Hi,

    zuerst mal was Grundsätzliches zu deinem Problem. Dateisysteme selbst achten überhaupt nicht auf irgendwelche Reihenfolgen der Dateien, weder beim Schreiben noch beim Lesen. Wer noch die alten MS-DOS Zeiten kennt, weiß, daß auch DOS die Dateien und Verzeichnisse völlig unsortiert aufgelistet hat. Eine Sortierung nach was-auch-immer ist stets die Sache des ausgebenden Elements, also der Fenstersteuerung bzw. des Betriebssystems. Und im Falle des Internets bist du das Betriebssystem und mußt selbst für eine Sortierung sorgen.

    Generell würde ich die Bilder bzw. Bildnamen nicht in einer Datenbank ablegen, wenn immer ein ganzes Verzeichnis oder Blöcke, die anhand bestimmter Kriterien identifiziert werden können, angezeigt werden sollen. Denn da mußt du zuerst auf die Datenbank zugreifen um alle passenden Datensätze auslesen. Ich mache es in solchen Fällen so, daß ich alle Dateinamen eines Verzeichnisses auslesen und dann sortieren lasse. Spart jede Menge DB-Zugriffe.

    Generell ist es aber richtig, alle Ergebnisse in ein Array schreiben und sortieren zu lassen.

    Hier mal ein Beispiel, wie das Auslesen eines ganzen Verzeichnisses mit anschließender Sortierung bei mir gelöst wird. Zuerst werden alle Dateinamen in der Reihenfolge in das Array "dateiliste" aufgenommen, die das Dateisystem ausgibt. Mit is_file() werden alle Verzeichnisse und . bzw. .. übergangen. Zum Schluß wird mit natcasesort() die Liste natürlich sortiert.

    PHP-Code:
    $dateiliste '';
    $pfad 'galerie/'.$galerie.'/';
    if (
    $handle = @opendir($pfad)){
        while (
    $file readdir($handle)){
            if (
    is_file($pfad.$file)){
                
    $dateiliste[] = $file;
            }
        }
        
    closedir($handle);
        
    natcasesort($dateiliste);

     
    Think Different.

  6. #6
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Zudem sendet dein Server ohnehin das der Browser die Bilder nicht cachen soll, und jedes mal erneut abgefragt werden sollen.

    Wenn du die Rechte dazu hast, solltest du in die htaccess noch Expires aktivieren, etwa mit:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    ExpiresActive On
    ExpiresByType image/gif "access plus 336 hours"
    ExpiresByType image/jpeg "access plus 336 hours"
    ExpiresByType image/png "access plus 336 hours"
    ExpiresByType text/css "access plus 12 hours"
    ExpiresByType text/javascript "access plus 336 hours"
    ExpiresByType application/x-javascript "access plus 336 hours"


    PS: Generell arbeitete euer CMS auch relativ langsam. Bei mir verbraucht das generieren der HTML Seite ~ 1,5 Sekunden von 2,1 Sekunden Gesamtladezeit.
    Geändert von Michael Engel (30.04.10 um 17:26 Uhr)
     
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

Ähnliche Themen

  1. Bilder aus Ordner auslesen
    Von mkdgf im Forum PHP
    Antworten: 22
    Letzter Beitrag: 13.09.09, 20:34
  2. Bilder aus Ordner auslesen
    Von Falloutboy6 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 15.11.08, 14:14
  3. Antworten: 6
    Letzter Beitrag: 21.05.06, 17:50
  4. Bilder in einem Ordner zählen!
    Von maeg im Forum PHP
    Antworten: 5
    Letzter Beitrag: 24.05.05, 11:00
  5. bilder aus ordner auslesen
    Von black-dog im Forum ASP
    Antworten: 6
    Letzter Beitrag: 27.02.02, 14:17