IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Modif formulaire d'image [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Points : 87
    Points
    87
    Par défaut Modif formulaire d'image
    Bonjour à tous et à toutes,

    Je suis actuellement sur la conception d'un espace de modification pour des œuvres précédemment publié.

    Voici ou je bloque ^^ :

    Lorsque je me connecte sous le membre "x" et que je souhaite allez modifier une des précédentes publication que j'ai effectué sous cette session, par exemple je souhaite modifier juste le titre et la description sans avoir changé une image ou l'avoir supprimé,

    Alors, les modifications se déroulerons bien mais l'image est changer par une image vide.. ( alors que je n'ai pas toucher l'image ^^ )

    Et je pense avoir compris pourquoi ^^, du faite que ma requête modifie tout..

    Faut il obligatoirement créer une second requête à part spécialement pour la modification de l'image que j’insérerai dans une condition ^^ ?

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    if (isset($_POST['sent'])) 
    {
    	$titreoeuvre=$_POST['titre_oeuvre'];
     $descriptionoeuvre=$_POST['description_oeuvre'];
     $categorie=$_POST['oeuvre_categorie'];
     $style=$_POST['oeuvre_style'];
     $date_crea=$_POST['date_crea'];
    	if ($_FILES['image_oeuvre']['name']!=NULL)
    	{
     $imageoeuvre=$_FILES['image_oeuvre']['name'];
     $ext = strtolower(pathinfo($imageoeuvre,PATHINFO_EXTENSION));
    $allow_ext = array('jpg','png','gif','bmp','jpeg');
    if (!empty($imageoeuvre))
    {
    if (in_array($ext,$allow_ext))
    {
    	$destination ="./images/oeuvres/".$imageoeuvre;
    move_uploaded_file($_FILES['image_oeuvre']['tmp_name'],$destination);
     
    }
    else
    {
    	echo '<p class="texteerror">'."Votre fichier contient une mauvaise extension, ou n'est pas une image.".'</p>';
    }
    }
    	}
     
     if ( (!empty($imageoeuvre)) OR (!empty($titreoeuvre)) OR (!empty($descriptionoeuvre)) OR (!empty($categorie)) OR (!empty($style)) OR (!empty($datecreaoeuvre)) )
     
    {
    	try {
    		$artiste_id=$_SESSION['membre_id'];
    	$query2 = $bdd->prepare('UPDATE oeuvre_artiste SET oeuvre_id=:oeuvre_id, image_oeuvre=:image_oeuvre, titre_oeuvre=:titre_oeuvre, description_oeuvre=:description_oeuvre, oeuvre_categorie=:oeuvre_categorie, oeuvre_style=:oeuvre_style, date_crea=:date_crea WHERE oeuvre_id=:oeuvre_id AND artiste_id=:artiste_id');
    	$query2->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
    	$query2->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT);
    	$query2->bindValue(':image_oeuvre', $imageoeuvre, PDO::PARAM_STR);
    	$query2->bindValue(':titre_oeuvre', $titreoeuvre, PDO::PARAM_STR);
    	$query2->bindValue(':description_oeuvre', $descriptionoeuvre, PDO::PARAM_STR);
    	$query2->bindValue(':oeuvre_categorie', $categorie, PDO::PARAM_STR);
    	$query2->bindValue(':oeuvre_style', $style, PDO::PARAM_STR);
    	$query2->bindValue(':date_crea', $date_crea, PDO::PARAM_INT);
    	$query2->execute();
    	}
    catch (Exception $e)
    {
            echo 'Erreur : ' . $e->getMessage();
    }
    	echo '<p class="textevalide">'."Votre modification à bien été effectué !".'</p>';
    }
    }	
    		$query->CloseCursor();
    Merci pour votre attention et votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux faire quelque chose d'un peu dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if ($_FILES['image_oeuvre']['name']!=NULL) {
        $sql_update_img = ' image_oeuvre=:image_oeuvre, ';
        $param[':image_oeuvre'] = $imageoeuvre;
        .....
    }
    else {
         $sql_update_img = '';
    }
     
    $param[':artiste_id'] = $artiste_id;
    $param[':oeuvre_id'] = $oeuvre_id;
    ....
     
    $query2 = $bdd->prepare('UPDATE oeuvre_artiste SET oeuvre_id=:oeuvre_id, ' . $sql_update_img . ' titre_oeuvre=:titre_oeuvre, description_oeuvre=:description_oeuvre, oeuvre_categorie=:oeuvre_categorie, oeuvre_style=:oeuvre_style, date_crea=:date_crea WHERE oeuvre_id=:oeuvre_id AND artiste_id=:artiste_id');
    $query2->execute($param);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    Je crois qu'il teste déjà sur l'image:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_FILES['image_oeuvre']['name']!=NULL
    Et cela s'exécute quand même ???

    Je suppose que tu remplis dans ton formulaire le champ file avec le nom de l'image stocké dans la base ?

    Pourquoi ne pas mettre un simple flag dans ta page pour savoir si l'image a été changée ou pas ?

    Natso

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Le problème est qu'il fait un test mais que sa requête d'upload est la même quelque soit le résultat du test. Il faut donc faire une requête dynamique et sabotage a montré un exemple.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    => Système de Gestion-Affichage de Nouvelles
    Un exemple de traitement :

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Points : 87
    Points
    87
    Par défaut
    Bonjour à tous et merci vraiment pour toutes votre attention =),

    Je ne connaissais pas cette méthode =),

    Si j'ai bien compris dans l'exemple de sabotage, les "Bindvalue" ne sont plus utile,

    je remplace donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $query2->bindValue(':titre_oeuvre', $titreoeuvre, PDO::PARAM_STR);
    etc....
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $param[':titre_oeuvre'] = $titreoeuvre
    etc...
    /*sachant que $titreoeuvre = : $titreoeuvre=$_POST['titre_oeuvre'];*/
    J'ai été sur le lien envoyé par jreaux pour tenté de mieux comprendre( merci =) ) mais j'avoue me perdre un peu dans tout ces exemples de code xD )

    Merci encore pour votre temps et votre aide =),
    sincèrement.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Pour associer les marqueurs aux variables on utilise soit un "bind" (bindValue ou bindParam), soit on passe un tableau dans execute.
    Dans son exemple sabotage a choisi la seconde méthode (ça va plus vite à écrire mais tu pourrais tout aussi bien utiliser bindValue).

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Points : 87
    Points
    87
    Par défaut
    Bonjour à tous,

    Si je ne me trompe pas Utiliser Bindvalue ou param, reste le plus sécuriser pour le site ?

    j'ai donc tenté d'adapter mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    if (isset($_POST['sent'])) 
    {
    	$titreoeuvre=$_POST['titre_oeuvre'];
     $descriptionoeuvre=$_POST['description_oeuvre'];
     $categorie=$_POST['oeuvre_categorie'];
     $style=$_POST['oeuvre_style'];
     $date_crea=$_POST['date_crea'];
    	if ($_FILES['image_oeuvre']['name']!=NULL)
    	{
    		$sql_update_img = 'image_oeuvre=:image_oeuvre,';
        $param[':image_oeuvre'] = $imageoeuvre;
     $ext = strtolower(pathinfo($imageoeuvre,PATHINFO_EXTENSION));
    $allow_ext = array('jpg','png','gif','bmp','jpeg');
    if (!empty($imageoeuvre))
    {
    if (in_array($ext,$allow_ext))
    {
    	$destination ="./images/oeuvres/".$imageoeuvre;
    move_uploaded_file($_FILES['image_oeuvre']['tmp_name'],$destination);
     
    }
    else
    {
    	echo '<p class="texteerror">'."Votre fichier contient une mauvaise extension, ou n'est pas une image.".'</p>';
    }
    }
    else
    {
    	$sql_update_img = '';
    }
    	}
     
     if ( (!empty($imageoeuvre)) OR (!empty($titreoeuvre)) OR (!empty($descriptionoeuvre)) OR (!empty($categorie)) OR (!empty($style)) OR (!empty($datecreaoeuvre)) )
     
    {
    	try {
    		$artiste_id=$_SESSION['membre_id'];
    	$query2 = $bdd->prepare('UPDATE oeuvre_artiste SET artiste_id=:artiste_id, oeuvre_id=:oeuvre_id, ' . $sql_update_img . ' titre_oeuvre=:titre_oeuvre, description_oeuvre=:description_oeuvre, oeuvre_categorie=:oeuvre_categorie, oeuvre_style=:oeuvre_style, date_crea=:date_crea WHERE oeuvre_id=:oeuvre_id AND artiste_id=:artiste_id');
    	$query2->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
    	$query2->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT);
    	$query2->bindValue(':titre_oeuvre', $titreoeuvre, PDO::PARAM_STR);
    	$query2->bindValue(':description_oeuvre', $descriptionoeuvre, PDO::PARAM_STR);
    	$query2->bindParam($param, PDO::PARAM_STR);
    	$query2->bindValue(':oeuvre_categorie', $categorie, PDO::PARAM_STR);
    	$query2->bindValue(':oeuvre_style', $style, PDO::PARAM_STR);
    	$query2->bindValue(':date_crea', $date_crea, PDO::PARAM_INT);
    	$query2->execute();
    	}
    catch (Exception $e)
    {
            echo 'Erreur : ' . $e->getMessage();
    }
    	echo '<p class="textevalide">'."Votre modification à bien été effectué !".'</p>';
    }
    }	
    		$query->CloseCursor();
    et j'obtiens une erreur :

    Fatal error: Cannot pass parameter 2 by reference in /home/crobar/public_html/publication.php on line 170
    qui correspond à : $query2->bindParam($param, PDO:ARAM_STR);

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    lis bien les messages qu'on t'écrit :
    Citation Envoyé par ABCIWEB Voir le message
    on utilise
    soit un "bind" (bindValue ou bindParam),
    soit on passe un tableau dans execute.
    => c'est l'un OU l'autre !
    Pas un mic-mac des deux...

    Tu fais une grosse confusion entre "param", $param et bindParam() !
    (à ne pas confondre non plus avec [ame="http://www.youtube.com/watch?v=LfmguyDRBwU"]Edith Piaf - Padam Padam[/ame] d'Edith Piaf !)
    Dernière modification par Invité ; 12/12/2013 à 16h50.

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Points : 87
    Points
    87
    Par défaut
    Salut à vous,

    => c'est l'un OU l'autre !
    Pas un mic-mac des deux...
    J'ai donc opté l'utilisation de ce que je connais le mieux ^^', tout fonctionne parfaitement voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    if (isset($_POST['sent'])) 
    {
    	$titreoeuvre=$_POST['titre_oeuvre'];
     $descriptionoeuvre=$_POST['description_oeuvre'];
     $categorie=$_POST['oeuvre_categorie'];
     $style=$_POST['oeuvre_style'];
     $date_crea=$_POST['date_crea'];
    	if ($_FILES['image_oeuvre']['name']!=NULL)
    	{
    	$imageoeuvre=$_FILES['image_oeuvre']['name'];
     $ext = strtolower(pathinfo($imageoeuvre,PATHINFO_EXTENSION));
    $allow_ext = array('jpg','png','gif','bmp','jpeg');
    if (!empty($imageoeuvre))
    {
    if (in_array($ext,$allow_ext))
    {
    	$destination ="./images/oeuvres/".$imageoeuvre;
    move_uploaded_file($_FILES['image_oeuvre']['tmp_name'],$destination);
    $artiste_id=$_SESSION['membre_id'];
    $req = $bdd->prepare('UPDATE oeuvre_artiste SET image_oeuvre=:image_oeuvre WHERE artiste_id=:artiste_id AND oeuvre_id=:oeuvre_id');
    $req->bindValue(':image_oeuvre', $imageoeuvre, PDO::PARAM_STR);
    $req->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
    $req->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT);
    $req->execute();
    }
    else
    {
    	echo '<p class="texteerror">'."Votre fichier contient une mauvaise extension, ou n'est pas une image.".'</p>';
    }
    }
    else
    {
    	$imageoeuvre = '';
    }
    	}
     
     if ( (!empty($imageoeuvre)) OR (!empty($titreoeuvre)) OR (!empty($descriptionoeuvre)) OR (!empty($categorie)) OR (!empty($style)) OR (!empty($datecreaoeuvre)) )
     
    {
    	try {
    		$artiste_id=$_SESSION['membre_id'];
    	$query2 = $bdd->prepare('UPDATE oeuvre_artiste SET artiste_id=:artiste_id, oeuvre_id=:oeuvre_id, titre_oeuvre=:titre_oeuvre, description_oeuvre=:description_oeuvre, oeuvre_categorie=:oeuvre_categorie, oeuvre_style=:oeuvre_style, date_crea=:date_crea WHERE oeuvre_id=:oeuvre_id AND artiste_id=:artiste_id');
    	$query2->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
    	$query2->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT);
    	$query2->bindValue(':titre_oeuvre', $titreoeuvre, PDO::PARAM_STR);
    	$query2->bindValue(':description_oeuvre', $descriptionoeuvre, PDO::PARAM_STR);
    	$query2->bindValue(':oeuvre_categorie', $categorie, PDO::PARAM_STR);
    	$query2->bindValue(':oeuvre_style', $style, PDO::PARAM_STR);
    	$query2->bindValue(':date_crea', $date_crea, PDO::PARAM_INT);
    	$query2->execute();
    	}
    catch (Exception $e)
    {
            echo 'Erreur : ' . $e->getMessage();
    }
    	echo '<p class="textevalide">'."Votre modification à bien été effectué !".'</p>';
    }
    }	
    		$query->CloseCursor();
    Merci encore pour votre temps passé et votre aide ,
    Sincèrement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WinForms]Lenteur d'affichage formulaire avec image de fond
    Par olixelle dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 06/09/2006, 14h06
  2. Formulaire avec images
    Par chti_juanito dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 15/07/2006, 12h58
  3. Réponses: 3
    Dernier message: 09/06/2006, 08h29
  4. Formulaire - input image
    Par Seth77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/03/2006, 14h17
  5. modification formulaire + validation date
    Par cari dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/01/2006, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo