If-Schleife UND dazugehörige else-Schleife wird ausgeführt??

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • If-Schleife UND dazugehörige else-Schleife wird ausgeführt??

    Hi,
    ich habe mir eine Art Gallery gecoded. Sie soll die Bilder zu Thumbnails resizen, eine Löschmöglichkeit bieten, und die Möglichkeit des Hochladens bieten.
    Das funktioniert ja auch alles soweit ich das sehe, aber ein Problem habe ich:
    Bei jedem Aufrufen der Seite werden immer neue Thumbnails erstellt.
    Dagegen habe ich in Zeile 59 eine If-Schleife eingebaut.
    Jedoch wird der "echo"-Befehl der If-Schleife ausgeführt ("file existiert!" - 2mal), UND zusätzlich
    werden die Thumbnails neu generiert. (else-Schleife)
    Genug geredet, hier der Code:

    edit: sorry für den Scrollbalken, bin schon am bearbeiten^^
    PHP-Code:
    <table cellpadding="0" cellspacing="5" border="0">
        <tr>
            <td><a href="index.php?site=pic_upload&action=upload">
    Neues Bild hochladen</a></td>
        </tr>
    <?php
    $_REQUEST
    ['action']=$action;
    //Wenn auf Upload geklickt wurde, aber noch nichts hochgeladen wurde:
    if($action=="upload"&&!isset($_FILES['datei'])){
    ?>
    <form action="index.php?site=pic_upload&action=upload" method="post"
     enctype="multipart/form-data">
    <input type="file" name="datei" /><br>
    <input type="submit" value="Hochladen" />
    </form>
    <?php
    }

    //Wenn schon was hochgeladen wurde
    if($action=="upload"&&isset($_FILES['datei'])){
    move_uploaded_file($_FILES['datei']['tmp_name'], "../images/".$_FILES['datei']['name']); 
    echo 
    "Bild sollte nun hochgeladen sein.
    <br>Link:<a href='../images/"
    .$_FILES['datei']['name']."
    '>"
    .$_FILES['datei']['name']."</a>";
    }

    //Löschfunktion
    if(isset($_POST['delete'])){
    $datei=$_POST['dateiname'];
    unlink($datei);
    echo 
    "Bild erfolgreich gel&ouml;scht (?)";
    }

    //Bilder darstellen
    $i=0;

    $pfad="../images/";
    $verz=opendir($pfad);

    while(
    $file[$i]=readdir($verz)) {
        if (
    filetype($pfad.$file[$i])!="dir"){
            
    $link[$i]=$pfad.$file[$i];
            
    $i++;
        }
    }


    while(
    $i>=0){
    //Bild zu Thumbnail
    $size=getimagesize($link[$i]);
    $breite[$i]=$size[0];
    $hoehe[$i]=$size[1];
    $neueBreite=200;
    $neueHoehe=300;

    if(
    file_exists("../images/TN".$file[$i])){
    echo 
    "file existiert!";
    }else{
    if(
    $size[2]==1) {
    // GIF
        

        
    $altesBild[$i] = imagecreatefromgif($link[$i]);
    $neuesBild[$i] = imagecreate($neueBreite,$neueHoehe);
     
    imageCopyResized($neuesBild[$i],$altesBild[$i],0,0,0,0,
    $neueBreite,$neueHoehe,$breite[$i],$hoehe[$i]);
     
    imageGIF($neuesBild[$i],$pfad."TN".$file[$i]);
    }

    if(
    $size[2]==2) {
    // JPG
    $altesBild[$i] = imagecreatefromjpeg($link[$i]);
    $neuesBild[$i] = imagecreate($neueBreite,$neueHoehe);
     
    imagecopyresized($neuesBild[$i],$altesBild[$i],0,0,0,0,
    $neueBreite,$neueHoehe,$breite[$i],$hoehe[$i]);
     
    imagejpeg($neuesBild[$i],$pfad."TN".$file[$i]);
    }

    if(
    $size[2]==3) {
    // PNG
    $altesBild[$i] = imagecreatefrompng($link[$i]);
    $neuesBild[$i] = imagecreate($neueBreite,$neueHoehe);
     
    imagecopyresized($neuesBild[$i],$altesBild[$i],0,0,0,0,
    $neueBreite,$neueHoehe,$breite[$i],$hoehe[$i]);
     
    imagepng($neuesBild[$i],$pfad."TN".$file[$i]);

    }
    $thumbnail[$i]=$pfad."TN".$file[$i];

    ?>
    <tr>
        <td rowspan="2">
        <img src='<?php echo $thumbnail[$i]; ?>' border='0' />
        </td>
        <td valign="top">
        <?php echo $file[$i]; ?>
        <form action="index.php?site=pic_upload" method="post">
    <input type="checkbox" name="delete"/>L&ouml;schen<br /><input type="submit"
    value="Senden" />
        <input type="hidden" name="dateiname" value="<?php echo $link[$i]; ?>" /></form>
        </td>
    </tr>
    <?php
    $i
    --;
    }
    closedir($verz);
    ?>
    </table>
    Zuletzt geändert von Tarik; 08.02.2008, 20:54.

  • #2
    eine If-Schleife eingebaut.
    Gibt es nicht. Schau dir folgenden Code genau an:
    PHP-Code:
    while($file[$i]=readdir($verz)) {
        if (
    filetype($pfad.$file[$i])!="dir"){
            
    $link[$i]=$pfad.$file[$i];
            
    $i++;
        }
    }


    while(
    $i>=0){

    $size=getimagesize($link[$i]);
    ...
    if(
    file_exists("../images/TN".$file[$i])){ 
    Du schreibst die Bilder in das Array $link, greifst dann auch darauf zu. Wenn du dann versuchst zu überprüfen ob das Thumb schon vorhanden ist greifst du aber plötzlich auf $file zu - kann nicht funktionieren. Das ganze ist übrigens doppelt gemoppelt - und quatsch - warum ließt du zu erst alles ein und durchläufst dann nochmal alles in einer Schleife?
    PHP-Code:
    $_REQUEST['action']=$action
    Meinst du das nicht eher umgekehrt?
    PHP-Code:
        <img src='<?php echo $thumbnail[$i]; ?>' border='0' />
    Um das zu nutzen musst du das Array natürlich noch füllen wenn die Thumbs bereits existieren.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      ich danke dir, habe es nun hinbekommen!

      Kommentar

      Lädt...
      X