Bonjour à tous,

Je possède un slideshow et j'ai ensuite crée un espace pour l'administrer. L'ajout et la suppression fonctionne mais lors de la modification, j'ai un soucis.

Pour la modification, je suis obligé de réuploader une image pour que cela fonctionne. Je n'arrive pas à faire de façon à ce que si la valeur du champs input type=file est remplis et qu'on ne souhaite pas modifier l'image on peut quand même modifier le titre ou le contenu.

Voici le code :

<?php
/*
* FICHIER : modifier.php (Administration - SlideShow)
*   AUTEUR : Adrien Boisson (DexX)
*   DATE DE CREATION : 22/12/2011 à 19h12
*   DERNIERE MISE A JOUR : 22/12/2011 à 19h12
*/

if(!empty($_POST))
{
    extract($_POST);
    if(!empty($_FILES))
    {
        require("Includes/inc_images.php");
        $img = $_FILES'image'];
        $ext = strtolower(substr($img'name'],-3));
        $allow_ext = array("jpg",'png','gif');
        if(in_array($ext,$allow_ext))
        {
            move_uploaded_file($img'tmp_name'],"Images/Slideshow/Vehicules/".$img'name']);
            Img::convertirJPG("images/".$img'name']);
            $reqFile = $_FILES"image"]"name"];
        }
        else
        {
            $erreur_image = "Votre fichier n'est pas une image";
            $valid = false;
        }
    }

    $_GET'id'] = $id;
    if($valid)
    {   
        $sql = "UPDATE slideshow SET titre_slideshow = '$titre', lien_slideshow = '$lien', texte_slideshow = '$texte' WHERE id_slideshow = $id ";
        $req = mysql_query($sql) or die (mysql_error());
        echo 'modifié';

    }
}
$sql = "SELECT * FROM slideshow WHERE id_slideshow = {$_GET"id"]}";
$req = mysql_query($sql) or die (mysql_error());
$data = mysql_fetch_assoc($req);
?>
<div id="form_content">
    <div id="form_titre_content">Administration du SlideShow</div><br/>
    <div id="form_content_formulaire">
        <?php
            if(isset($mes_traitement))
            {
                echo $mes_traitement;
            }
        ?>
        <form method="post" action="index.php?page=modifier" enctype="multipart/form-data">
            <table class="extTableau" style="border: 1px solid #304661;">

                <input type="hidden" name="id" value="<?php echo $data'id_slideshow']; ?>" />
                <label for="titre">Titre * : </label>
                <input type="text" name="titre" id="titre" value="<?php echo $data'titre_slideshow']; ?>" />
                <span class="form_erreur_titre"><?php if(isset($erreur_titre)) echo '<img src="Images/Icones/supprimer.png" alt=""/> '.$erreur_titre.''; ?></span>
                <br/>

                <label for="lien">Lien * : </label>
                <input type="text" name="lien" id="lien" value="<?php echo $data'lien_slideshow']; ?>" />
                <span class="form_erreur_lien"><?php if(isset($erreur_lien)) echo '<img src="Images/Icones/supprimer.png" alt=""/> '.$erreur_lien.''; ?></span>

                <br/>
                <input type="text" name="salut" id="salut" />

                <label for="texte">Texte * : </label><span class="form_erreur_texte"></span><br/><br/>
                <textarea class="text-input" name="texte" id="texte" rows="5" cols="38" value=""><?php echo $data'texte_slideshow']; ?></textarea><br/>

                <br/>

                <label for="image">Image * : </label>
                <input type="file" name="image" id="image" value="<?php echo $data'img_slideshow']; ?>" />
                <span class="form_erreur_image"><?php if(isset($erreur_image)) echo '<img src="Images/Icones/supprimer.png" alt=""/> '.$erreur_image.''; ?></span>

            </table>
            <br/>
            <input type="submit" id="modifier" value="Valider" /><br/><br/>
            <a href="index.php?page=admin_slideshow">Retour</a> - <a href="index.php?page=administration">Acceuil</a><br/><br/>
        </form>
    </div>
</div>

3 réponses


Ton erreur est là tu teste :
!empty($_FILES)

Mais par défaut même si on envoie rien $_FILES contient des index
!empty($_FILES'image']'name'])

Fonctionnera bcp mieux (au pire print_r($_FILES) pour voir ce que contient $_FILES si tu n'envoie rien )

Tjrs le même pb :
if(empty($_FILES) && isset($_FILES))
$_FILES n'est jamais vide

DexX
Auteur

Bonjour,

Merci de votre aide. Alors, j'ai modifié et testé mon code. Tout fonctionne correctement, si je change juste le texte, sa modifie bien et sa garde l'image de départ et si je modifie l'image et ou le texte sa marche aussi.

Le soucis qui apparait maintenant :

Si j'upload une image en .jpg, sa marche mais si je prend une .png ou .gif, sa me met le lien de l'image (alt="") par défaut et sa m'affiche pas l'image.

L'image en .png uploadé apparait bien dans le dossier et elle son extension est bien convertie en .jpg mais elle s'affiche pas.

Voici le code :

<?php
/*
* FICHIER : modifier.php (Administration - SlideShow)
*   AUTEUR : Adrien Boisson (DexX)
*   DATE DE CREATION : 22/12/2011 à 19h12
*   DERNIERE MISE A JOUR : 22/12/2011 à 19h12
*/

if(!empty($_POST))
{
    extract($_POST);
    $valid = true;

    if(empty($titre))
    {
        $valid = false;
        $erreur_titre = "Vous n'avez pas saisie de titre.";
    }

    if(empty($lien))
    {
        $valid = false;
        $erreur_lien = "Vous n'avez pas saisie de lien.";
    }

    if(empty($texte))
    {
        $valid = false;
        $erreur_texte = "Vous n'avez pas saisie de texte.";
    }

    $_GET'id'] = $id;
    if($valid)
    {   
        if(!empty($_FILES'image']'name']))
        {
            require("Includes/inc_images.php");
            $img = $_FILES'image'];
            $ext = strtolower(substr($img'name'],-3));
            $allow_ext = array('jpg','png','gif');
            if(in_array($ext, $allow_ext))
            {
                move_uploaded_file($img'tmp_name'],"Images/Slideshow/Vehicules/".$img'name']);
                Img::convertirJPG("Images/Slideshow/Vehicules/".$img'name']);
                $reqFile = $_FILES"image"]"name"];
                $sql2 = 'UPDATE slideshow SET titre_slideshow = "'.$titre.'", lien_slideshow = "'.$lien.'", texte_slideshow = "'.$texte.'", img_slideshow ="'.$reqFile.'" WHERE id_slideshow = "'.$id.'" ';
                $req2 = mysql_query($sql2) or die (mysql_error());
                echo 'modifié avec new image';
            }
            else
            {
                $erreur_image = "Votre fichier n'est pas une image";
                $valid = false;
            }
        }
        else
        {
            $sql3 = 'UPDATE slideshow SET titre_slideshow = "'.$titre.'", lien_slideshow = "'.$lien.'", texte_slideshow = "'.$texte.'" WHERE id_slideshow = "'.$id.'" ';
            $req3 = mysql_query($sql3) or die (mysql_error());
            echo 'modifié sans new image';
        }   
    }
}
$sql = "SELECT * FROM slideshow WHERE id_slideshow = {$_GET"id"]}";
$req = mysql_query($sql) or die (mysql_error());
$data = mysql_fetch_assoc($req);
?>
<div id="form_content">
    <div id="form_titre_content">Administration du SlideShow</div><br/>
    <div id="form_content_formulaire">
        <?php
            if(isset($mes_traitement))
            {
                echo $mes_traitement;
            }
        ?>
        <form method="post" action="index.php?page=modifier" enctype="multipart/form-data">
            <table class="extTableau" style="border: 1px solid #304661;">

                <input type="hidden" name="id" value="<?php echo $data'id_slideshow']; ?>" />
                <label for="titre">Titre * : </label>
                <input type="text" name="titre" id="titre" value="<?php echo $data'titre_slideshow']; ?>" />
                <span class="form_erreur_titre"><?php if(isset($erreur_titre)) echo '<img src="Images/Icones/supprimer.png" alt=""/> '.$erreur_titre.''; ?></span>
                <br/>

                <label for="lien">Lien * : </label>
                <input type="text" name="lien" id="lien" value="<?php echo $data'lien_slideshow']; ?>" />
                <span class="form_erreur_lien"><?php if(isset($erreur_lien)) echo '<img src="Images/Icones/supprimer.png" alt=""/> '.$erreur_lien.''; ?></span>

                <br/>
                <input type="text" name="salut" id="salut" />

                <label for="texte">Texte * : </label><span class="form_erreur_texte"></span><br/><br/>
                <textarea class="text-input" name="texte" id="texte" rows="5" cols="38" value=""><?php echo $data'texte_slideshow']; ?></textarea><br/>

                <br/>

                <label for="image">Image * : </label>
                <input type="file" name="image" id="image" value="<?php echo $data'img_slideshow']; ?>" />
                <span class="form_erreur_image"><?php if(isset($erreur_image)) echo '<img src="Images/Icones/supprimer.png" alt=""/> '.$erreur_image.''; ?></span>

            </table>
            <br/>
            <input type="submit" id="modifier" value="Valider" /><br/><br/>
            <a href="index.php?page=admin_slideshow">Retour</a> - <a href="index.php?page=administration">Acceuil</a><br/><br/>
        </form>
    </div>
</div>