Salut a tous =)

Je rencontre un problème pour le tuto des news :/

j'ai cette erreur pour la page edit.php

( ! ) Notice: Undefined index: id in C:\wamp\www\news\admin\edit.php on line 6
Call Stack
#   Time    Memory  Function    Location
1   0.0004  370096  {main}( )   ..\edit.php:0
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

Voici mon code :

<?php
    require "../config.php";
    mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);
    extract($_POST);
    $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="creer.php" />
    <input type="hidden" value="<?php echo $data"id"]; ?>" />
    Titre :<input type="text" name="titre" value="<?php echo $data"titre"]; ?>" />
    <br/>
    Contenu :<br/>
    <textarea name="contenu" style="width:100%;height:150px;"><?php echo $data"contenu"]; ?></textarea> 
    <input type="submit" value="crée">
</form>

merci :)

4 réponses


Remplace ta ligne 6 par :    $sql = "SELECT * FROM news WHERE id=".$_GET"id"]."";

Ca devrait mâcher :)

Valentin
Auteur

Cette fois j'ai cette erreur --"

( ! ) Notice: Undefined index: id in C:\wamp\www\news\admin\edit.php on line 6
Call Stack

Time Memory Function Location

1 0.0004 369840 {main}( ) ..\edit.php:0
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

Merci de l'aide ;)

Bon, bon, bon.

Je n'ai pas vu ce tuto MAIS :
On ne fait pas ça, c'est du suicide, tu ouvre la porte aux injections SQL, truc de malade.

Mais l'erreur ne vient pas de la, tu base ta requete sur un parametre url, s'il n'est pas fournis et que j'accede à la page sans mettre de id ( sans mettre de tapage.php?id=1 par exemple ), ton script ne sait pas ou chercher le id, il n'existe pas, il n'est pas defini dans le tableau GET, donc erreur, voila d'ou ca vient.

Voila de quoi corriger ton code :

<?php
require_once '../config.php';
mysql_connect( DB_HOST, DB_LOGIN, DB_PASS );
mysql_select_db( DB_BDD );
extract( $_POST ); // NOTE : C'est une super mauvaise idée de faire un extract sur des données de ce genre ... D'autant qu'ici ca sert à rien ...
// - Params. invalide
if( !isset( $_GET'id'] ) || !is_numeric( $_GET'id'] ) ) {
    header('Location: __ICI UNE URL VERS LAQUELLE TU REDIRIGE EN CAS DE REQUETE INVALIDE__');
    exit;
}
$sql = "SELECT * 
        FROM `news` 
        WHERE `id`=" . (int)$_GET'id'];

$req = mysql_query( $sql ) or die('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_assoc( $req );
// - News non trouvé
if( mysql_num_rows( $req ) == 0 ) {
    header('Location: __ICI UNE URL VERS LAQUELLE TU REDIRIGE EN CAS DE NEWS INEXISTANTE__');
    exit;
}
?>
<form method="post" action="creer.php" />
    <input type="hidden" value="<?php echo $data"id"]; ?>" />
    Titre :<input type="text" name="titre" value="<?php echo $data"titre"]; ?>" />
    <br/>
    Contenu :<br/>
    <textarea name="contenu" style="width:100%;height:150px;"><?php echo $data"contenu"]; ?></textarea> 
    <input type="submit" value="crée">
</form>

P.S : Regarde pour utiliser PDO et non des fonctions du genre "mysql_*"

L'erreur parle d'elle même $_GET"id"] n'existe pas. A toi de savoir pourquoi tu n'a pas ?id=.. dans l'url