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 :

probleme mise à jour image lors de ledition d'une news


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut probleme mise à jour image lors de ledition d'une news
    Bonsoir,
    j'ai un site de news avec une table news qui a pour champ id,image,titre,contenu,news_id (en référence à une table contenant les commentaires)

    J'arrive à editer le titre et le contenu de mes news mais pas les images.
    Voila 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
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    if(!empty($_POST))
    	{
    	extract($_POST);
    	$sql="UPDATE news SET image='$image', titre='$titre', contenu='$contenu'  WHERE id=$id";
    	$req=mysql_query($sql) or die(mysql_error());
    	header('location:gestionnews.php');
    	// $_GET["id"]=$id;     à supprimer car visiblement inutile mais à vérifier
    	}
     
    	$sql="SELECT * FROM news WHERE id={$_GET["id"]}";
    	$req=mysql_query($sql) or die(mysql_error());
    	$data=mysql_fetch_assoc($req);
     
    ?>
     
     
     
    <form method="post" action="edit.php" enctype="multipart/form-data"/>
     
    <input type="hidden" name="MAX_FILE_SIZE" value="100000">
    Image :<input type="file" name="image" value="<?php echo $data["image"]; ?>" />
    <input type="hidden" input name="id" value="<?php echo $data["id"]; ?>" />
    Titre :<input type="text" name="titre" value="<?php echo $data["titre"]; ?>" />
    <br>
    Contenu :<br>
     
    <textarea name="contenu" style="width:100%;height:150px;"> <?php echo $data["contenu"]; ?> </textarea>
    <input type="submit" value="OK" />
    </form>

    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
    tes variables ($image, $titre etc.) ne sont pas définies.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    J'ai rajouté ça mais cela ne fonctionne toujours pas.
    PS les changements marchaient quand meme pour le titre et le contenu sans ce changement.
    Là cela fonctionne tjs mais le changement d'image ne fonctionne tjs pas

    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
    <?php
    if(!empty($_POST))
    	{
    	extract($_POST);
    $image=$_POST['image'];
    	$titre=$_POST['titre'];
    	$contenu=$_POST['contenu'];
    	$sql="UPDATE news SET image='$image', titre='$titre', contenu='$contenu'  WHERE id=$id";
    	$req=mysql_query($sql) or die(mysql_error());
    	header('location:gestionnews.php');
    	// $_GET["id"]=$id;     à supprimer car visiblement inutile mais à vérifier
    	}
     
    	$sql="SELECT * FROM news WHERE id={$_GET["id"]}";
    	$req=mysql_query($sql) or die(mysql_error());
    	$data=mysql_fetch_assoc($req);
     
    ?>
     
     
     
    <form method="post" action="edit.php" enctype="multipart/form-data"/>
     
    <input type="hidden" name="MAX_FILE_SIZE" value="100000">
    Image :<input type="file" name="image" value="<?php echo $data["image"]; ?>" />
    <input type="hidden" input name="id" value="<?php echo $data["id"]; ?>" />
    Titre :<input type="text" name="titre" value="<?php echo $data["titre"]; ?>" />
    <br>
    Contenu :<br>
     
    <textarea name="contenu" style="width:100%;height:150px;"> <?php echo $data["contenu"]; ?> </textarea>
    <input type="submit" value="OK" />
    </form>

  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
    Ton extract() ne sert à rien et $_POST['image'] n'existe pas puisque "image" est un champ de type file.
    $id n'est pas défini non plus.

    Je t'invite a revoir les bases :
    http://antoine-herault.developpez.co...ls/php/upload/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    J'ai bien relu.
    Pourquoi mon extract est il inutile ? il permet d'éviter ce que j'ai eu à écrire plus haut c'est à dire les choses comme $titre=$_POST['titre'] et d'avoir les variables déjà disponibles non ?

    Dois-je utiliser ça $_FILES['avatar']['name'] ?

    J'ai oublié de transmettre la premiere page où on clic sur edit qui nous amene ensuite sur cette page (d'où l'id que j'utilise !)
    voila le code de cette page :

    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
    while($data=mysql_fetch_assoc($req))
    {
        $id=$data["id"];
        $filename=$dossier.$data['image'];
    	echo '<a style="cursor:pointer;text-decoration:underline" onclick= "checkDel(\'supprnews.php?id='.$data['id'].'\')">x</a>';
        echo '<img src="'.$filename.'" alt="" />';
        echo "<p> {$data["titre"]} -- ";
    	echo "<p>".Tronquer_Texte($data["contenu"],  150)."<br><a href='detail_news_admin.php?id={$data["id"]}'>Suite de  l'article</a></p>";
        echo "<p align=\"right\">".date("j/n/Y G:i",strtotime($data["date"]))."</p>";
        echo" Commentaire(s) ({$data["nb_comments"]})";
    	echo " <a href=\"edit.php?id={$data["id"]}\">edit</a><br><br><br><br>";
     
     
     
     
     
     
    }

  6. #6
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Ton extract() ne sert à rien car tu fait les affectation à la main juste après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    extract($_POST);
    $image=$_POST['image'];
    $titre=$_POST['titre'];
    $contenu=$_POST['contenu'];
    Hors extract() te le fait automatiquement en prenant pour nom de variable, l'id du tableau associatif créé.

  7. #7
    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
    De plus extract ouvre une voie pour de possibles failles de sécurité.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Oui oui c'est ce que je disais que d'avoir fait comme ça ne servait à rien vu que j'avais un extract.
    Après si ça ouvre des failles c'est sur que...
    Et pour l'edition de l'image ?

  9. #9
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $img = $_FILES['avatar']['name'];
    Si je ne trompe pas cela te renverra le nom du fichier (si tu ne le modifie pas lors du telechargement)

    A mon avis la suite se fait de ce type,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images/<?php echo $img ?>" />

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    J'ai essayé de comprendre et de suivre ce que tu m'as expliqué et ça a donné ça mais je ne suis aps sur d'avori compris.
    Voila ce que cela donne (ce code ne fonctionne pas. En effet l'image est bien changé mais dans la bdd elle n'apparait pas donc il y a un problème dû à une incompréhension de ma part)

    PS= je ne sais pas quoi mettre à la place de avatar dans les crochets.

    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
    <?php
     
    session_start();
     
     
     
     
    	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    	mysql_select_db(DB_BDD);
    	if(!empty($_POST))
    	{
    $id=$_POST['id'];
    	$titre=$_POST['titre'];
    	$contenu=$_POST['contenu'];
    $img = $_FILES['avatar']['name'];	
     
    	$sql="UPDATE news SET image='$img', titre='$titre', contenu='$contenu'  WHERE id=$id";
    	$req=mysql_query($sql) or die(mysql_error());
    	header('location:gestionnews.php');
    	// $_GET["id"]=$id;     à supprimer car visiblement inutile mais à vérifier
    	}
     
    	$sql="SELECT * FROM news WHERE id={$_GET["id"]}";
    	$req=mysql_query($sql) or die(mysql_error());
    	$data=mysql_fetch_assoc($req);
     
    $img = $_FILES['avatar']['name'];	
     
    ?>
     
     
    <form method="post" action="edit.php" enctype="multipart/form-data"/>
     
    <input type="hidden" name="MAX_FILE_SIZE" value="100000">
    Image :<input type="file" name="image" value="<img src="images/<?php echo $img; ?>"" />
    <input type="hidden" input name="id" value="<?php echo $data["id"]; ?>" />
    Titre :<input type="text" name="titre" value="<?php echo $data["titre"]; ?>" />
    <br>
    Contenu :<br>
     
    <textarea name="contenu" style="width:100%;height:150px;"> <?php echo $data["contenu"]; ?> </textarea>
    <input type="submit" value="OK" />
    </form>

  11. #11
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $img = $_FILES['avatar']['name'];
    C'est un exemple, tu doit l'adapter à ton contexte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images/<?php echo $img ?>" />
    Ce n'est pas dans ton formulaire d'ajout mais lors de l'affichage de ton image, pareil à adapter.

    EDIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD="POST">
       <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
       Envoyez ce fichier : <INPUT NAME="userfile" TYPE="file">
       <INPUT TYPE="submit" VALUE="Send File">
    </FORM>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_FILES['userfile']['name']
    src : lien

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Non mais ce que je cherche c'est à modifier une image déjà existante.
    PS j'avais édité mon post plusieurs fois entre temps.
    J'avais rajouté un PS et modifié quelques trucs dans mon code.
    Je te le reposte.
    Et je te précises que jsutement je ne sais pas trop quoi mettre à la place de avatar .. ($img ?)


    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
    <?php
     
    session_start();
     
     
     
     
    	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    	mysql_select_db(DB_BDD);
    	if(!empty($_POST))
    	{
    $id=$_POST['id'];
    	$titre=$_POST['titre'];
    	$contenu=$_POST['contenu'];
    $img = $_FILES['avatar']['name'];	
     
    	$sql="UPDATE news SET image='$img', titre='$titre', contenu='$contenu'  WHERE id=$id";
    	$req=mysql_query($sql) or die(mysql_error());
    	header('location:gestionnews.php');
    	// $_GET["id"]=$id;     à supprimer car visiblement inutile mais à vérifier
    	}
     
    	$sql="SELECT * FROM news WHERE id={$_GET["id"]}";
    	$req=mysql_query($sql) or die(mysql_error());
    	$data=mysql_fetch_assoc($req);
     
    $img = $_FILES['avatar']['name'];	
     
    ?>
     
     
    <form method="post" action="edit.php" enctype="multipart/form-data"/>
     
    <input type="hidden" name="MAX_FILE_SIZE" value="100000">
    Image :<input type="file" name="image" value="<img src="images/<?php echo $img; ?>"" />
    <input type="hidden" input name="id" value="<?php echo $data["id"]; ?>" />
    Titre :<input type="text" name="titre" value="<?php echo $data["titre"]; ?>" />
    <br>
    Contenu :<br>
     
    <textarea name="contenu" style="width:100%;height:150px;"> <?php echo $data["contenu"]; ?> </textarea>
    <input type="submit" value="OK" />
    </form>
    EDIT : je regarde ton edition

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 196
    Par défaut
    Alors j'ai réussi à faire la modification.
    Pour l'instant j'ai juste le parcourir qui apparait et je peux modifier l'ancienne image et cela fonctionne.
    Il ne me reste plus qu'à trouver comment afficher l'image poru savoir celle qu'on modifie.
    Malgré tout ce n'est pas essentiel vu que l'essentiel était de pouvoir changer l'image.


    Merci !

Discussions similaires

  1. Probleme mise à jour 0.92
    Par Poulain dans le forum Dreamshield
    Réponses: 6
    Dernier message: 08/01/2008, 15h53
  2. Réponses: 2
    Dernier message: 09/04/2007, 22h54
  3. [Conception] probleme mise à jour d'une base
    Par bidibou dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/04/2007, 13h29
  4. probleme mise à jour sous formulaires
    Par fredzouille dans le forum Access
    Réponses: 1
    Dernier message: 28/08/2006, 06h39
  5. Probleme Mise à jour V6 beta
    Par eudes dans le forum NetBeans
    Réponses: 2
    Dernier message: 18/07/2006, 20h19

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