Bonjour à tous,

Je suis nouveau (pour pas changer) et j'ai un problème que je n'arrive absolument pas à résoudre. Sans doute par manque d'expérience (j'accuse le coup au cas où on me ferait la remarque). J'ai passer environ 3 heures (ou plus...) sur ce tuto qui peut paraitre simple pour certain. J'ai lu des post de d'autre membres du site qui n'arrive pas à faire marcher correctement leur page "edit.php" (et qui ont EXACTEMENT le même problème que moi...) Et bien que je sache qu'il est préférable de trouver la solution à ses propres problèmes, je pense qu'à mon niveau je me retrouve dans une impasse totale. Voici mes pages :

voici mon index.php:

<?php
session_start();

if(!isset($_SESSION'login']))
{
echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
include('login.html');
exit;
}
?>

<form method="post" action="create.php"/>

titre : <br/>

<input type="text" name="titre" />

<br/>

Contenu :

<br/>

<textarea name="content" style="width:100%;height:300px;"></textarea>

<br/>

<input type="submit" value="Valider"/>

</form>

<?php

require "../config_news.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?id={$data"id"]}\">Modifier cette News</a>";
echo " -- <a href=\"delete.php?id={$data"id"]}\">x</a>";
echo "</p>";

}

?>

voici mon create.php:

<?php

require "../config_news.php";

mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

extract($_POST);

$titre=mysql_real_escape_string($titre);
$content=mysql_real_escape_string($content);

$sql="INSERT INTO news (titre,content) VALUES ('".$titre."','".$content."')";

$req=mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

header("location: index.php");

?>

voici mon edit.php :

<?php
session_start();

/*
si la variable de session login n'existe pas cela siginifie que le visiteur
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION'login'])) {
echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
include('login.html');
exit;
}
?>

<?php

require "../config_news.php";

mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

if (!empty($_POST))

{

extract($_POST);

$titre=mysql_real_escape_string($titre);
$content=mysql_real_escape_string($content);

$sql="UPDATE news SET titre='$titre', content='$content' WHERE id=$id";

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

echo 'News modifiée !
</br>
<a href="index.php">Retour à la page d\'administration</a>';

$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);

?>

<form method="post" action="edit.php"/>

<input name ="id" type="hidden" value="<?php echo $data"id"];?>"/>

titre : <br/>

<input type="text" name="titre" value="<?php echo $data"titre"];?>"/>

<br/>

Contenu :

<br/>

<textarea name="content" style="width:100%;height:300px;"><?php echo $data"content"];?></textarea>

<br/>

<input type="submit" value="Valider"/>

</form>

<br/>

<a href="admin.php">Retour à la page d'administration</a>

voici mon delete.php:

<?php

require "../config_news.php";

$mysqHdl=mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

$sql = "DELETE FROM news WHERE id={$_GET"id"]}";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

header("location: index.php");

?>

Lorsque je veux modifier une de mes news, j'accède à edit.php. J'arrive même à modifier ma news. seulement lorsque la page se "rafraichit" (je ne sais pas si c'est le bon therme...), je pense que je perds l'id de la news et mysql m'affiche ce message d'erreur :

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

je ne vois donc pas mon ma news modifier comme sur le tuto...
Lorsque je reviens sur ma page "index.php" je constate que ma news a été modifié pas de problème.

et oui, il y a déjà 3 sujet avec le même problème je sais bien... mais je n'arrive pas à trouver ce qui cloche. je suis désolé d'avance pour ceux qui seront agacé par les néophyte du php et du sql, j’espère que quelqu'un de patient pourra me donner une réponse claire ou en tout les cas m'aider à résoudre cette interrogation pour mon site...

9 réponses


fdusautoir
Réponse acceptée

Envoi tes fichiers et ta base de données par mail à fdusautoir@hotmail.fr

fdusautoir
Réponse acceptée

N'oublie pas de mettre le sujet en résolu ;)

solow
Auteur

Desoler je n'arrive pas à mettre le code clairement comme tout le monde sur le site ...

Pour nous permettre une lecture aisée de ton code, merci de placer ce dernier dans des balises code ] /code ] ( supprime les espaces pour que cela fonctionne.

Sinon dans ta page edit.php , à aucun moment tu ne récupères l'id. Essaye ceci :

$id = $_GET'id'];
$titre=mysql_real_escape_string($titre);
$content=mysql_real_escape_string($content);

edit : je viens de voir que tu le récupérais à la fin, après ton traitement. D'ou l'erreur ;) ]

solow
Auteur

Excuse moi ... Je fais ce qu'il faut ! voici mon index.php : [code]<?php session_start();

if(!isset($_SESSION['login']))
{
echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
include('login.html');
exit;
}
?>

<form method="post" action="create.php"></form>titre :
<input type="text" name="titre">
Contenu :
<textarea name="content" style="width:100%;height:300px;"></textarea>
<input type="submit" value="Valider"><?php require "../config_news.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.'
'.mysql_error()); while($data=mysql_fetch_assoc($req)) { echo "

{$data["titre"]} -- "; echo " Modifier cette News"; echo " -- x"; echo "

"; } ?> [/code] voici mon create.php: [code]<?php require "../config_news.php";

mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

extract($_POST);

$titre=mysql_real_escape_string($titre);
$content=mysql_real_escape_string($content);

$sql="INSERT INTO news (titre,content) VALUES ('".$titre."','".$content."')";

$req=mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'
'.mysql_error()); header("location: index.php"); ?> [/code] voici mon edit.php : [code]<?php session_start();

/
si la variable de session login n'existe pas cela siginifie que le visiteur
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
/
if(!isset($_SESSION['login'])) {
echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
include('login.html');
exit;
}
?><?php require "../config_news.php";

mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

if (!empty($_POST))

{

extract($_POST);

$titre=mysql_real_escape_string($titre);
$content=mysql_real_escape_string($content);

$sql="UPDATE news SET titre='$titre', content='$content' WHERE id=$id";

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'
'.mysql_error()); echo 'News modifiée ! Retour à la page d\'administration'; $GET["id"]=$id; } $sql="SELECT * FROM news WHERE id={$_GET["id"]}"; $req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error()); $data=mysql_fetch_assoc($req); ?><form method="post" action="edit.php"></form><input name="id" type="hidden" value="<?php echo $data[" id>"/> titre :
<input type="text" name="titre" value="<?php echo $data[" titre>"/>
Contenu :
<textarea name="content" style="width:100%;height:300px;"><?php echo $data["content"];?></textarea>
<input type="submit" value="Valider">
Retour à la page d'administration[/code] voici mon delete.php: [code]<?php require "../config_news.php";

$mysqHdl=mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

$sql = "DELETE FROM news WHERE id={$_GET["id"]}";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'
'.mysql_error()); header("location: index.php"); ?> [/code] J'ai bien fais ce que tu m'a conseillé fdusautoir ! mais lorsque j'applique ma modification, j'ai ça maintenant : Erreur SQL ! UPDATE news SET titre='test 2 !\'\'\'', content='test2 !!!!fesssssd' 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 Que s'est-t-il passer ?

solow
Auteur

zut je galère ! pardon...
mon index :

<?php 
session_start(); 
if(!isset($_SESSION'login'])) 
{ 
echo 'Vous n\'êtes pas autorisé à acceder à cette zone'; 
include('login.html'); 
exit; 
} 
?> 
<form method="post" action="create.php"/> 
titre : <br/> 
<input type="text" name="titre" /> 
<br/> 
Contenu : 
<br/> 
<textarea name="content" style="width:100%;height:300px;"></textarea> 
<br/> 
<input type="submit" value="Valider"/> 
</form> 

<?php 
require "../config_news.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?id={$data"id"]}\">Modifier cette News</a>"; 
echo " -- <a href=\"delete.php?id={$data"id"]}\">x</a>"; 
echo "</p>"; 
} 
?>
solow
Auteur

Personne peut me donner un coup de main ? =(

solow
Auteur

Bonjour à tous ! Merci a fdusautoir de m'avoir aider à trouver la réponse à mon problème ! Le problème venait du fait que je n'arrivais pas à récupérer l'id de la news que je modifiais... Je met le code php pour que tout le monde puisse voir l'erreur ;) (Ca aidera toujours ceux qui on le même souci..) :

<?php
            require "../config_news.php";

            mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
            mysql_select_db(DB_BDD);

            if (!empty($_POST))

                {

                    extract($_POST);

                    $titre=mysql_real_escape_string($titre);
                    $content=mysql_real_escape_string($content);
                    $id = $_GET'id'];

                    $sql="UPDATE news SET titre='$titre', content='$content' WHERE id=$id";

                    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

                    echo 'News modifiée !'; 

                }

            $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);

        ?>