8792 sujets

Développement web côté serveur, CMS

Salut a tous! Donc je vous explique mon problème. Je suis en train de faire une zone d'upload et j'ai une partie qui ne fonctionne pas.
J'ai la pasge index.php sur laquelle je demande dans quel dossier l'utilisateur veut uploader ses images, pour cela, je liste tous les dossier présents dans le répertoire /pics qui est le repertoire général des images, chaque sous dossier correspond a un thème. Puis dans la liste je propose de créer un dossier.
Ensuite je demande a l'utilisateur combien d'images il veut uploader. Après quoi il valide son choix et il se retrouve sur la page upload.php, sur cette page je commence par vérifier si les variables existent et si l'utilisateur veut uploader ses images dans un dossier existant ou en créer un nouveau puis après tout sa il y a une boucle qui crée autant d'input file que l'utilisateur a d'images a uploader.
Bon après cette longue explication voici les source (j'ai enlever la parti html pour plus de lisibilité)
index.php


<form method="post" action="upload.php" enctype="multipart/form-data">
    <fieldset class="out">
        <fieldset class="in">
        <h5>Dans quel dossier voulez-vous uploader vos images?</h5>
<?php
    $rep = opendir("pics/");
    while($dossier = readdir($rep))
    {
        if (($dossier!=".") && ($dossier!=".."))
        {
            echo "<label><input type=\"radio\" name=\"dossier\"value=".$dossier."/>".$dossier."</label><br/>";
        }
    }
    closedir($rep);
?>
                    <label><input type="radio" name="dossier" value="0"/></label><label>Nouveau : <input type="text" name="new_dossier"/></label><br/>
    </fieldset>
    <fieldset class="in">
    <h5>Combien d'images voulez-vous uploader?</h5>
        <input type="text" size="3" name="nb_img"/><br/>
    </fieldset>
<center><input class="button" type="submit" value="-Go!-"/><input class="button" type="reset" value="-Effacer-"/></center>
</fieldset>
</form>



upload.php

<?php
    $up_failed = 0;
    if(isset($_POST['dossier']))
    {
        if($_POST['dossier']='0')
        {
            if((isset($_POST['new_dossier'])) AND (!empty($_POST['new_dossier'])))
            {
                mkdir('/pics'.$_POST['new_dossier'].'');
                $dossier = $_POST['new_dossier'];
            }
            else
            {
                header('Refresh: 2; URL=http://raptor21.free.fr/upload/new_dossier');
                $resultat = "<p>Vous avez oublier de spécifier le nom du nouveau dossier, veuillez réessayer.</p>";
                $up_failed++;
            }
        }
        else
        {
            $dossier = $_POST['dossier'];
        }
    }
    else
    {
        header('Refresh: 2; URL=http://raptor21.free.fr/upload/dossier2');
        $resultat = "<p>Vous avez oublier de spécifier le nom du dossier, veuillez réessayer.</p>";
        $up_failed++;
    }
    if((isset($_POST['nb_img'])) AND (!empty($_POST['nb_img'])))
    {
        $images = $_POST['nb_img'];
    }
    else
    {
        header('Refresh: 2; URL=http://raptor21.free.fr/upload/img');
        $resultat = "<p>Vous avez oublier de spécifier le nombre d'images a uploader, veuillez réessayer.</p>";
        $up_failed++;
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?php
    if($up_failed!=0)
    {
        echo $resultat;
        echo $up_failed;
    }
    elseif($up_failed=0)
    {
?>
    <form method="post" action="exe.php" enctype="multipart/form-data">
        <fieldset class="out">
        <h5>Il ne vous reste plus qu'a selectionner vos images!</h5>
            <input type="hidden" name="dossier" value="<?php echo $dossier;?>"/><br/>
<?php
        $nb_files = 0;
        while($nb_files != $images)
        {
            $nb_files++;
            echo '<input type="file" name="img'.$nb_files.'"/><br/>';
        }
?>
        <input type="submit" value="uploader"/>
        </fieldset>
    </form>
<?php
        }
        else
        {
            echo "<p>Désolé une erreur s'est produite, veuillez réessayer.</p>";
            echo $up_failed;
        }
?>



Quand on ne rempli qu'un champ sur index.php ( pour les dossier ou les images) tout se passe bien, le message d'erreur contenu par $resultat s'affiche bien et on est bien redirigé sur index.php.
Mais quand on rempli les deux champs, quoique l'on fasse, on retombe toujours sur 'Désolé une erreur s'est produite, veuillez réessayer.'! Pourtant $up_failed est égale a 0! Et ce que je ne comprends pas c'est que théoriquement, avec les deux derniere condition que j'ai mises:

<?php
    if($up_failed!=0)
    {
        echo $resultat;
        echo $up_failed;
    }
    elseif($up_failed=0)
    {
?>
    <form method="post" action="exe.php" enctype="multipart/form-data">
        <fieldset class="out">
            <h5>Il ne vous reste plus qu'a selectionner vos images!</h5>
            <input type="hidden" name="dossier" value="<?php echo $dossier;?>"/><br/>
<?php
    $nb_files = 0;
    while($nb_files != $images)
    {
        $nb_files++;
        echo '<input type="file" name="img'.$nb_files.'"/><br/>';
    }
?>
    <input type="submit" value="uploader"/>
    </fieldset>
</form>
<?php
}


On ne devrait jamais pouvoir tomber sur:

else
{
    echo "<p>Désolé une erreur s'est produite, veuillez réessayer.</p>";
    echo $up_failed;
}
?>

SVP aidez moi je ne comprends plus rien Smiley decu
Merci d'avance.
Modifié par Sleep-0 (27 Jan 2007 - 23:46)
Arf mon problème est résolu, juste quelques petites erreurs de == dans les conditions Smiley biggol
Sa faisait longtemps que j'avais pas fait de php j'avais ouvlier des détails... Smiley smile