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 20/11/2010, 23h44   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 5
Points : 1
Points : 1
Par défaut Probleme édition d'articles

Bonsoir à tous,

Je suis entrain de mettre en place un système d'article avec une interface pour pouvoir modifier. Le but étant de pouvoir poster un article, l'éditer et le supprimer.

J'ai mis en place une BDD et j'ai mis du PHP dans mes pages (interface admin et interface internaute). J'arrive à afficher mes articles, à en créer des nouveaux, à supprimer des vieux seul problème l'édition. Je n'arrive pas à éditer mes articles, quand je clic sur "modifier" cela ne modifie pas ce qui est dans la BDD

Ce que je comprend pas c'est pourquoi ça me fait ça vu que éditer c'est la même chose que supprimer et créer, suffit juste de changer UPDATE

Je vous met le code pour que vous y voyez un peu plus claire et espere que vous allez trouver où je me suis planté.

Interface administrateur

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
<h1>Articles</h1>
<?php
 
	$sql="SELECT * FROM article";
	$req=mysql_query($sql) or die ('ERREUR SQL!<br />'.$sql.'<br/>'.mysql_error());
	while($data=mysql_fetch_assoc($req)){
		echo '<form class="contenu" action="" method="post">';
			echo '<div class="titre">';
				echo "<p>Titre :</p>";
				echo "<textarea rows=\"1\" cols=\"60\" name=\"titre\">{$data["titre"]}</textarea>";
			echo "</div>";
			echo '<div class="texte">';
				echo "<p>Texte :</p>";
				echo "<textarea rows=\"7\" cols=\"60\" name=\"texte\">{$data["texte"]}</textarea>";
				echo "<a href=\"./php/editArticle.php?id={$data["id"]}\"><input name=\"Valider\" type=\"submit\" value=\"Valider\"></input></a>";
				echo "<a href=\"./php/supprArticle.php?id={$data["id"]}\"><input type=\"submit\" value=\"Supprimer\"  ></input></a>";
				echo '<hr/ id="hr2">';
			echo "</div>";
		echo "</form>";						
	}						
?>
 
<form class="contenu" action="./php/creerArticle.php" method="post">
	<h3>Ajouter un article :</h3>
	<div class="titre">
		<p>Le titre :</p>
		<textarea rows="1" cols="60" name="titreArticle">Titre</textarea>
	</div>
	<div class="texte">
		<p>Texte :</p>
		<textarea rows="7" cols="60" name="texteArticle">Texte</textarea>
		<input type="submit" value="Ajouter"></input>
	</div>
</form>
./php/supprArticle.php (qui marche)

Code :
1
2
3
4
5
6
7
8
9
10
<?php
	require "../.././php/bdd.php";
	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
	mysql_select_db(DB_BDD);
 
	$sql = "DELETE FROM article WHERE id={$_GET["id"]}";
	$req=mysql_query($sql) or die ('ERREUR SQL!<br />'.$sql.'<br />'.mysql_error());
	header ("Location: .././article.php");
 
?>
./php/creerArticle.php (qui marche)

Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?php 
	require "../.././php/bdd.inc.php";
	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
	mysql_select_db(DB_BDD);
 
	extract ($_POST);
	$sql="INSERT INTO article (titre,texte) VALUES ('$titreArticle','$texteArticle')";
	$req=mysql_query($sql) or die ('ERREUR SQL!<br />'.$sql.'<br />'.mysql_error());
	header ("Location: .././article.php");
?>
./php/editArticle.php (qui pose problème)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
	require "../.././php/bdd.inc.php";
	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
	mysql_select_db(DB_BDD);
 
	extract ($_POST);
	$sql = "UPDATE article SET titre='$titre', texte='$texte' WHERE id=$id";
	$req=mysql_query($sql) or die ('ERREUR SQL!<br />'.$sql.'<br />'.mysql_error());
	header ("Location: .././article.php");
 
?>
t0m.35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 23h49   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Fais un echo $sql de ton UPDATE pour t'assurer que la requête est bonne.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 23h59   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 5
Points : 1
Points : 1
Cela m'affiche une erreur :

Citation:
UPDATE article SET titre='', texte='' WHERE id=
t0m.35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h01   #4
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
1. Quelle erreur est affichée ?
2. Fait un print_r($_POST) pour voir ce que tu reçois du form
3. Utilise $_POST['titre'], $_POST['texte'], etc. plutôt que extract( )
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h07   #5
Invité de passage
 
Inscription : novembre 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 5
Points : 1
Points : 1
J'ai utilisé $_POST['titre'], $_POST['texte'] puis j'ai fais print_r($_POST) ça m'affiche

Citation:
Array ()
ET pour l'erreur c'était :

Citation:
ERREUR SQL!
UPDATE article SET titre='', texte='' WHERE id=
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
t0m.35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h11   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
On est bien d'accord que print_r($_POST) affiche Array( ) sur la page editArticle.php traitant le formulaire ?
Si oui alors tu ne reçois pas les données du formulaire : formulaire à revoir.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h11   #7
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Citation:
Envoyé par t0m.35 Voir le message
ET pour l'erreur c'était :

ERREUR SQL!
UPDATE article SET titre='', texte='' WHERE id=
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Normal, requête mal formée en l'état.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h54   #8
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

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

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Code :
	$sql = "UPDATE article SET titre='$titre', texte='$texte' WHERE id=$id";
ce qui est terrible c'est qu'il pense a mettre des guillemets pour les données signifiantes mais pas pour les indexes alors qu'on peut tres bien tenter de faire des injections par là.
Guillemets ou pas, il faudrait utiliser mysql_real_escape_string() systématiquement partout quand on veut continuer à utiliser le pilote mysql historique.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 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 20h05.


 
 
 
 
Partenaires

Hébergement Web