Erreur syntaxe

Répondre
dm21
le 08/03/2013 à 17:28
dm21
Bonjour,

j'ai ajouté un module de news sur mon site, et lorsque je veux rajouter une nouvelle news, il m'affiche un message d'erreur:

Parse error: syntax error, T_VARIABLE inattendue / home/u413107046/public_html/admin/liste_news.html sur la ligne 46

Je n'arrive pas trouvé d'ou peut venir le problème, je vous envoie mon code entier:
if (isset($_POST['titre']) AND isset($_POST['contenu']))
{
$titre = addslashes($_POST['titre']);
$introduction = addslashes($_POST['introduction']);
$contenu = addslashes($_POST['contenu']);
$categorie = addslashes($_POST['categorie']);
// On vérifie si c'est une modification de news ou non.
if ($_POST['id_news'] == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table.
mysql_query("INSERT INTO news (titre, introduction, contenu, categorie, date_creation) VALUES("$titre", "$introduction", "$contenu",  "$categorie" NOW())") or die(mysql_error());

}
else
{
// On protège la variable "id_news" pour éviter une faille SQL.
$_POST['id_news'] = addslashes($_POST['id_news']);
// C'est une modification, on met juste à jour le titre et le contenu.
mysql_query("UPDATE news SET titre='" . $titre . "', introduction='" .$introduction . "', contenu='" . $contenu . "', categorie='" . $categorie . "' WHERE id='" . $_POST['id_news'] . "'") or die(mysql_error());
}
}

//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une news ?
//--------------------------------------------------------
if (isset($_GET['supprimer_news'])) // Si l'on demande de supprimer une news.
{
// Alors on supprime la news correspondante.
// On protège la variable « id_news » pour éviter une faille SQL.
$_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'') or die(mysql_error());
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>Date</th>
<th>Categorie</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC') or die(mysql_error());
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news.
{
?>
<tr>
<td><?php echo '<a href="rediger_news.html?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.html?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y à H\hi', $donnees['date_creation']); ?></td>
<td><?php echo stripslashes($donnees['categorie']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les news.
?>
</table>

Vous pouvez m'aider? merci,
Erwin
le 23/03/2013 à 12:47
Erwin
Bonjour,

Mon éditeur me dit qu'il existe un problème avec cette ligne :
mysql_query("INSERT INTO news (titre, introduction, contenu, categorie, date_creation) VALUES("$titre", "$introduction", "$contenu",  "$categorie" NOW())") or die(mysql_error());


En fait, il manque une virgule entre "$categorie" et NOW().

Je me permet d'ajouter un ou deux conseils :

1. protéger ses requêtes SQL avec addslashes n'est pas une solution efficace. Il vaut mieux regarder du côté de mysql_real_escape_string.

2. En supposant que $_POST['id_news'] contienne un ID, donc un entier, dans ce cas le meilleur moyen de protéger un entier numérique dans une requête est d'utiliser la fonction intval() :)
PHP Amateur
dm21
le 23/03/2013 à 13:09
dm21
bonjour,

Ok, je vais essayer de modifier ca, dès que mon hebergeur me permettra
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours