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 :

Mon image disparait dans mon formulaire de modif [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut Mon image disparait dans mon formulaire de modif
    Bonsoir,

    J'ai en fait, un petit soucis lorsque je modifie plusieurs champs toutes les modifications se font parfaitement.

    Maintenant si je ne modifie pas l'image elle disparait lors de l'affichage des entrées c'est assez ennuyant comment faire pour stocker mon image dans le formulaire de modification?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="image" placeholder="your image" value="<?php echo $display['image_article']; ?>"><br />
    Je pense que le soucis est au niveau du formulaire mais voici le 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
    <?php
     
    $db = new PDO("mysql:host=localhost;dbname=hello", "root", "");
     
    if(isset($_POST['titre']) AND isset($_POST['contenu']) AND isset($_POST['id'])){
     
        $titre = htmlspecialchars($_POST['titre']);
        $contenu = htmlspecialchars($_POST['contenu']);
        $image_article = ($_FILES['image']['name']);
        $id = htmlspecialchars($_POST['id']);
        move_uploaded_file($_FILES["image"]["tmp_name"],"images/" .basename($_FILES['image']['name']));
     
     
        $sql_edit = $db->prepare("UPDATE articles SET titre = ?, contenu = ?, image_article = ?, date_time_edition = NOW() WHERE id = ?");
        $sql_edit->execute(array($titre, $contenu, $image_article, $id));
        header('location: view_image.php');
     
     
    }
     
     
    ?>
    Merci d'avance

  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
    Par défaut
    Il suffit de faire varier ta requête (et de virer tous les htmlspecialchars)

    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
    <?php
     
    $db = new PDO("mysql:host=localhost;dbname=hello", "root", "");
     
    if(isset($_POST['titre'], $_POST['contenu'], isset($_POST['id'])){
     
    $requete = 'UPDATE articles SET titre = ?, contenu = ?, date_time_edition = NOW()';
    $param = array(':titre'=>$_POST['titre'], ':contenu'=>$_POST['contenu'], ':id'=>$_POST['id']);
     
     if (isset($_FILES["image"]) && $_FILES["image"]['error'] === 0) {
           move_uploaded_file($_FILES["image"]['name'],"images/" .basename($_FILES['image']['name']));
           $param[':image_article'] = $_FILES['image']['name'];
           $requete .= ', image_article = :image_article';
    }
        $requete .= ' WHERE id = ?';
     
        $sql_edit = $db->prepare($requete);
        $sql_edit->execute($param);
        header('location: view_image.php');
     
    }
     
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut
    Bonsoir Sabotage,

    J'ai également un message d'erreur...
    "Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['titre'], $_POST['contenu'], isset($_POST['id'])){
    Je pense qu'il s'agit d'une parenthèse manquante ??? J'ai essayé en tout les cas mais ça n'a rien donné.

  4. #4
    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
    Par défaut
    il y a un isset qui était resté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['titre'], $_POST['contenu'], $_POST['id'])){
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut
    Bonsoir Sabotage,

    Oui effectivement.
    Je n'ai plus de message d'erreur, cependant avec ton code que tu m'as proposé je n'arrive plus du tout à faire une modification.

    Pour info le fichier se nomme edit.php

    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
    <?php
     
    $db = new PDO("mysql:host=localhost;dbname=hello", "root", "");
     
    if(isset($_POST['titre'], $_POST['contenu'], $_POST['id'])){
     
    $requete = 'UPDATE articles SET titre = ?, contenu = ?, date_time_edition = NOW()';
    $param = array(':titre'=>$_POST['titre'], ':contenu'=>$_POST['contenu'], ':id'=>$_POST['id']);
     
     if (isset($_FILES["image"]) && $_FILES["image"]['error'] === 0) {
           move_uploaded_file($_FILES["image"]['name'],"images/" .basename($_FILES['image']['name']));
           $param[':image_article'] = $_FILES['image']['name'];
           $requete .= ', image_article = :image_article';
    }
        $requete .= ' WHERE id = ?';
     
        $sql_edit = $db->prepare($requete);
        $sql_edit->execute($param);
        header('location: view.php');
     
    }
     
    ?>
    Par contre, j'ai aussi un autre fichier qui se nomme editform.php
    Je pense que le problème vient certainement de là ?

    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
     
    <?php
     
    $db = new PDO("mysql:host=localhost;dbname=hello", "root", "");
     
     
    $id = $_GET['id'];
    $result = $db->prepare("SELECT * FROM articles WHERE id = :userid");
    $result->bindParam(':userid' , $id);
    $result->execute();
     
    while($display = $result->fetch()){
    	$display['titre'];
    	$display['contenu'];
    	$display['image_article'];
     
    ?>
     
     
    <!DOCTYPE html>
    <html lang="fr">
     
        <head>
            <meta charset="utf-8">
            <title>Titre de la page</title>
            <link rel="stylesheet" href="style.css">
            <script src="script.js"></script>
        </head>
     
        <body>
     
            <form method="POST" action="edit.php" enctype="multipart/form-data">
     
            <input type="hidden" name="id" value="<?php echo $id; ?>"><br />
            <input type="text" name="titre" placeholder="your titre" REQUIRED value="<?php echo $display['titre']; ?>"><br />
     
     
            <textarea name="contenu"><?php echo $display['contenu']; ?></textarea><br />
     
            <input type="file" name="image" placeholder="your image" value="<?php echo $display['image_article']; ?>"><br />
     
            <input type="submit" value="valider" >
            </form>
            <a href="view.php" > Consulter les entrées </a><br />
     
            <?php
        	}
     
        	?>
     
        </body>
     
    </html>

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $requete = 'UPDATE articles SET 
    titre = :titre, 
    contenu = :contenu, 
    date_time_edition = NOW()';
    $param = array(
    ':titre'=>$_POST['titre'], 
    ':contenu'=>$_POST['contenu'], 
    ':id'=>$_POST['id']);
     
    ....
    ....
        $requete .= ' WHERE id = :id';

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

Discussions similaires

  1. Centrer mon image background dans mon menu
    Par artistik dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 05/01/2012, 18h51
  2. Dessin avec Imager.. erreur dans mon script
    Par Chekov dans le forum Modules
    Réponses: 2
    Dernier message: 18/06/2006, 14h14
  3. [CSS] Mon texte ou mon image disparait sous IE.
    Par KneXtasY dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 05/12/2005, 17h59
  4. Réponses: 5
    Dernier message: 25/04/2004, 00h57

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