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.

6 réponses

  1. 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
  2. Stanislas Poisson Messages postés 775 Statut Membre 66
     
    pourquoi id_article={$_GET['id']} et pas id_article='$_GET['id']'?
    0
    1. killianwebmaster
       
      C la même chose.
      0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
    1. 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
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    quels sont tes nouveaux codes ?

    les messages d'erreur
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. RobinZS Messages postés 6 Statut Membre
     
    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
  7. killianwebmaster
     
    bonjour, merci pour toute vos réponses, et j'ai trouvé l'erreur. merci pour vos réponses.
    0