Bonjour,
J'ai essaye de faire le tuto suivant : Gérer des news en PHP
Et j'ai quelque difficulté à faire l'édition on m'affiche :

Parse error: syntax error, unexpected T_VARIABLE in /var/www/legtux.org/users/clannad/admin/edit.php on line 8

Ma page edit.php

<?php 
require "../config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
if (!empty($_POST))
{
    extract($_POST);
    $sql="UPDATE news SET titre='$titre', contenu='$contenu' WHERE id="$id";
    $req = mysql_query($sql) or die ('Erreur SQL ! <br />'.$sql.'<br />'.mysql_error());    
    echo "Change";
    $_GET"id"]=$id;
}    
    $sql="SELECT * FROM news WHERE id={$_GET"id"]}";
    $req = mysql_query($sql) or die ('Erreur SQL ! <br />'.$sql.'<br />'.mysql_error());
    $data=mysql_fetch_assoc($req);
    print_r($data);
?>
    <form method="post" action="edit.php"/>
    <input name="id" type="hidden" value="<?php echo $data"id"]; ?>"/>
    <p>Titre :
    <input type="text" name="titre" value="<?php echo $data"titre"]; ?>"/>
    <br/>
    Contenu : <br/>
    <textarea name="contenu" style="width:40%;height:200px;"><?php echo $data"contenu"]; ?></textarea>
    <input type="submit" value="Envoyer"/>
    </form>

ma page /admin/index.php :

<form method="post" action="creer.php"/>
Titre : <input type="text" name="titre"/>
<br />
Contenu :<br/> <textarea name="contenu" style="width: 100%; height: 150px;"></textarea>
<input type="submit" value="Envoyer"/>
</form>
<?php require "../config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
$sql="SELECT * FROM news";
$req = mysql_query($sql) or die('ERREUR SQL!<br />'.$sql.'<br />'.mysql_error());
while($data=mysql_fetch_assoc($req)){
echo "<p>{$data"titre"]} -- ";
echo "<a href=\"edit.php\">Modifier cette news</a>";
echo " -- <a href=\"suppr.php?id={$data"id"]}\">X</a>";
echo "</p>";
}
?>

Si quelqu'un peu me débloquer :)

6 réponses


PhiSyX
Réponse acceptée
  • Oui pour edit.php une news particulière (donc avoir edit.php?id=1 par exemple)
  • Pour l'erreur de creer.php, ajoute ceci après extract($_POST);

    $titre = mysql_real_escape_string($titre);
    $contenu = mysql_real_escape_string($contenu);

Hello, fallait voir ligne 8 comme l'erreur l'indique :p
$sql="UPDATE news SET titre='$titre', contenu='$contenu' WHERE id= " $id";
(" en trop ^^)

Sakeshi
Auteur

oui, merci
je me retrouve avec la même erreur que "loulou" ont lui a répondu : "Concatène ton GET'id'] dans une variable avant." et je n'ai pas très bien compris
Erreur SQL !
SELECT * FROM news 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

D'après le code, il faut être sur une news particulière. (?id=[1-9] dans l'URL)

Sakeshi
Auteur

j'ai pas compris comment ça une news particulière ?

ma page creer.php

<?php require "../config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
    extract($_POST);
    $sql="INSERT INTO news(titre,contenu) VALUES ('$titre','$contenu')";
$req = mysql_query($sql) or die('ERREUR SQL!<br />'.$sql.'<br />'.mysql_error());
header("Location: index.php");
?>

Quand on créer une news on ne peu pas mettre de é,à,è,',",(,) ? car quand je mets par exemple jusqu'à j'ai une erreur et lorsque je mets jusqua cela fonctionne
ERREUR SQL!
INSERT INTO news(titre,contenu) VALUES ('','jusqu'à')
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
Et quand j'envoie via phpmyadmin sa marche tres bien, j'avoue que là je suis un peu perdu

Sakeshi
Auteur

Merci beaucoup ça marche pour creer.php
En faite pour edit il faut que quand je clique "modifier la news" et que je rajoute dans l'url ?id=(le numero de la news que je veux) ?