Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/02/2011, 20h28   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
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 :
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 !
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 20h30   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
tes variables ($image, $titre etc.) ne sont pas définies.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 20h59   #3
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
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 :
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>
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 21h05   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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/
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 22h36   #5
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
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 :
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>";
 
 
 
 
 
 
}
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 09h38   #6
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

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

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Ton extract() ne sert à rien car tu fait les affectation à la main juste après :

Code :
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éé.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 09h57   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
De plus extract ouvre une voie pour de possibles failles de sécurité.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/02/2011, 10h23   #8
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
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 ?
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 10h35   #9
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

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

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Code :
$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 :
<img src="images/<?php echo $img ?>" />
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 11h43   #10
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
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 :
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>
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 11h49   #11
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

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

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Code :
$img = $_FILES['avatar']['name'];
C'est un exemple, tu doit l'adapter à ton contexte.

Code :
<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 :
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 :
$_FILES['userfile']['name']
src : lien
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 11h52   #12
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
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 :
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
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 12h03   #13
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
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 !
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h31.


 
 
 
 
Partenaires

Hébergement Web