T_LNUMB

Résolu
frans2526 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -  
frans2526 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un petit probleme avec mon code, Parse error: syntax error, unexpected T_LNUMBER in liste_news.php on line 84
J'ai beau regardé pendant des minutes cherché sur internet ou j'ai lu que c'était un problème de virgule.Mais rien ne focntionne.Pouvez-vous m'aider ?

<?php
session_start() ;>
<?php include ('ad_titre.php');?>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
h2, th, td
{
text-align:center;
}
table
{
border-collapse:collapse;
border:2px solid black;
margin:auto;
}
th, td
{
border:1px solid black;
}
</style>
</head>



<h2><a href="rediger_news.php">Ajouter une news</a></h2>
<?php
include("connexion.php");
//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut poster une news ?
//-----------------------------------------------------
if (isset($_POST['titre']) AND isset($_POST['contenu']))
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['contenu']);
$sql = "SELECT valide FROM news";
$donnees['valide']=$sql;
// On vérifie si c'est une modification de news ou pas
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 VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "','1')");
}
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 . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
}
}

//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une news ?
//--------------------------------------------------------
if (isset($_GET['supprimer_news'])) // Si 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'] . '\'');
}

if (isset($_GET['validation_news']))
{
mysql_query("UPDATE news SET valide="1" WHERE id='" . $_POST['id_news'] . "'"); // le problème se situe ICI
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Validation</th>
<th>Titre</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
?>
<tr>
<td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php if ($donnees['valide'] == 1){
echo ("Cette news est validé"); }
else
{ ?><a href="liste_news.php?validation_news=' . $donnees['id'] . '"><?php echo ("Cette news n'est pas encore validé");?></a><?php } ?></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les news
?>
</table>
<?php include("bas.php"); ?>

3 réponses

macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention   89
 
Bonjour.
mysql_query("UPDATE news SET valide="1" WHERE id='" . $_POST['id_news'] . "'"); // le problème se situe ICI

Une petite remarque : c'est bien de mettre en commentaire où se trouve le problème, mais j'ai eu du mal à le trouver. Essaye de le mettre en avent (avec la balise gras, par exemple)...

Le problème est ici :
mysql_query("UPDATE news SET valide="1
Tu indiques à php que la chaine de caractères se finit, puis tu mets un 1...
Suivant le type de champ valide, s'il est numérique mets simplement
"UPDATE news SET valide=1 WHERE id='" . $_POST['id_news'] . "'"
Et s'il est alphanumérique, mets le entre simples quotes :
"UPDATE news SET valide='1' WHERE id='" . $_POST['id_news'] . "'"

Pour éviter ce genre de problèmes (ou en tout cas les voir plus facilement) utilise un éditeur de texte à coloration syntaxique. Avec Notepad++, par exemple, j'ai vu le prblème en quelques secondes...
0
frans2526 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   14
 
Désolé pour ce manque de rigeur je n'oublierais pas la prochaine fois.
Mais maintetant quand j'appuie sa ne fais plus rien.Avant sa me validais toutes mes news, c'est pour cela que j'ai mis le "WHERE".Mais sa ne fonctionne plus.
valide=1 est un nombre numérique vu que dans la table il est a zéro sauf si je valide.
0
frans2526 Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   14
 
mysql_query("UPDATE news SET valide=1 WHERE id='". intval($_GET['validation_news'])."'");

le problème c'est que maintenant que c'est un chiffre pour des raison de sécurité il faut mettre intval.
0