La fonction UPDATE ne fonctionne pas

Résolu
killianwebmaster -  
 killianwebmaster -
Bonjour, je suis en train de créer un site, et quand je veux modifier un article, je ne peux pas car ça me renvoi l'erreur suivante : Parse error: syntax error, unexpected ')', expecting '&' or T_VARIABLE in C:\Program Files (x86)\wamp\www\superminegold\admin\functions\update.php on line 4
Voici le code de la page edit

<?php
include('includes/connect.php');
include('includes/header.php');
?>
<div class='container'>
<h3>Editer l'article</h3>
<?php
include('functions/update.php');

if(isset($_POST['submit'])){

$titre = mysql_real_escape_string(htmlentities(trim($_POST['titre'])));
$auteur = mysql_real_escape_string(htmlentities(trim($_POST['auteur'])));
$contenu = mysql_real_escape_string(htmlentities(trim($_POST['contenu'])));

if(strlen($titre)<4)
{
$errors[] = "Veuillez saisir un nom d'article";
}
if(strlen($auteur)<3)
{
$errors[] = "Veuillez saisir votre nom";
}
if(strlen($contenu)<30)
{
$errors[] = "Veuillez saisir un contenu de minimum 30 caractères";
}
if(!empty($errors))
{
foreach($errors as $error)
{
echo "<div style='color:red'>".$error."</div>";
}
}else{
changer_article($titre,$auteur,$contenu);
die('<div style="color:green; font-size:20px;">Votre article a bien été modifier.</div><a href="blog.php" style="font-size:19px;">Retourner à la page blog</a>');
}
}
include('functions/blog.func.php');
$articles = recup_articles();
foreach($articles as $article){
?>
<form method="POST" action="">
<input type="text" name="titre" maxlength="100" placeholder="Titre" class='span4' value='<?php echo $article['nom_article']; ?>'><br/>
<input type="text" name="auteur" maxlength="50" placeholder="Nom de l'auteur" class='span4' value='<?php echo $article['auteur_article']; ?>'><br/>
<textarea name="contenu" class='span4' placeholder="Contenu" style="height:100px"><?php echo $article['contenu_article']; ?></textarea><br/><br/>
<input type="submit" name="submit" value="Poster" class='btn btn-success'>
</form>
</div>
<?php
}
?>

Et voici le code de la page update (ou il y a la fonction et l'erreur)

<?php
//la function qui va se charger d'éditer l'article
function changer_article($titre,$auteur,contenu){
$query= mysql_query("UPDATE articles SET nom_article='$titre', auteur_article='$auteur', contenu_article='$contenu'
WHERE id_article={$_GET['id']}
") or die(mysql_error());
}
?>

Voila les codes, et si quelqu'un peut m'aider, je le remercie beaucoup.
Merci, au revoir.
A voir également:

6 réponses

oraceLaLimace Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   8
 
Salut,

Dans les deux solutions, pour la méthode changer_article il manque un $ sur le troisième paramètre :

function changer_article($titre,$auteur,contenu){

function changer_article($titre,$auteur,$contenu){

C'est ce qu'indique le code d'erreur que tu as copier ici.
1
Stanislas Poisson Messages postés 424 Date d'inscription   Statut Membre Dernière intervention   66
 
pourquoi id_article={$_GET['id']} et pas id_article='$_GET['id']'?
0
killianwebmaster
 
C la même chose.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
je ne vois pas comment tu peux avoir un GET en postant un formulaire en POST
mets l'id en champ caché hidden dans le formulaire

<?php
include('includes/connect.php');
include('includes/header.php');
?>
<div class='container'>
<h3>Editer l'article</h3>
<?php
include('functions/update.php');

if(isset($_POST['submit'])){

	$titre = mysql_real_escape_string(htmlentities(trim($_POST['titre'])));
	$auteur = mysql_real_escape_string(htmlentities(trim($_POST['auteur'])));
	$contenu = mysql_real_escape_string(htmlentities(trim($_POST['contenu'])));

	if(strlen($titre)<4)
	{
		$errors[] = "Veuillez saisir un nom d'article";
	}
	if(strlen($auteur)<3)
	{
		$errors[] = "Veuillez saisir votre nom";
	}
	if(strlen($contenu)<30)
	{
		$errors[] = "Veuillez saisir un contenu de minimum 30 caractères";
	}
	if(!empty($errors))
	{
		foreach($errors as $error)
		{
			echo "<div style='color:red'>".$error."</div>";
		}
	}else{
		if(changer_article($titre,$auteur,$contenu)){
			//on ne met le message OK qui si fonction UPDATE renvoie true
			die('<div style="color:green; font-size:20px;">Votre article a bien été modifier.</div><a href="blog.php" style="font-size:19px;">Retourner à la page blog</a>');
		}
	}
}
include('functions/blog.func.php');
$articles = recup_articles();
foreach($articles as $article){
?>
	<form method="POST" action="">
	<input type="text" name="titre" maxlength="100" placeholder="Titre" class='span4' value='<?php echo $article['nom_article']; ?>'><br/>
	<input type="text" name="auteur" maxlength="50" placeholder="Nom de l'auteur" class='span4' value='<?php echo $article['auteur_article']; ?>'><br/>
	<textarea name="contenu" class='span4' placeholder="Contenu" style="height:100px"><?php echo $article['contenu_article']; ?></textarea><br/><br/>
	<input type="hidden" name="id" value="<?php echo $article['id']; ?>" />
	<input type="submit" name="submit" value="Poster" class='btn btn-success'>
	</form>
	
<?php
}
?>
</div> <!-- ce /div etait mal placé dans la boucle -->

Et voici le code de la page update (ou il y a la fonction et l'erreur)

<?php
//la function qui va se charger d'éditer l'article
function changer_article($titre,$auteur,contenu){
$query= mysql_query("UPDATE articles SET nom_article='$titre', auteur_article='$auteur', contenu_article='$contenu'
WHERE id_article='".$_POST."'") or die(mysql_error());
//si ok on renvoie true
if($query) return true;
}
?>



0
killianwebmaster
 
merci pour votre réponse, mais ça ne marche toujours pas même comme vous me l'avez dit et même en mettant un champs caché. Sinon merci pour votre réponse.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
quels sont tes nouveaux codes ?

les messages d'erreur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
RobinZS Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Il faudrait que tu revois une bonne partie de ton PHP là lol
La concaténation ça te dit quelque chose ?
Franchement, revoit les bases.
De plus, mysql_ est obsolète depuis un moment, il n'est plus sécurisé, tourne toi vers PDO, ou mysqli
Loin le but d'être désagréable, je ne peux que te dire ça, ou corriger tout ton code (le refaire...donc non)
0
killianwebmaster
 
bonjour, merci pour toute vos réponses, et j'ai trouvé l'erreur. merci pour vos réponses.
0