IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur $sql undefined Variable


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 44
    Points
    44
    Par défaut Erreur $sql undefined Variable
    Bonjour,

    J'ai creer un script qui insère des valeurs dans une bdd, lorsque je lance le script voila l'erreur qui apparait
    Notice: Undefined variable: sql in C:\Program Files\EasyPHP-5.3.6.0\www\webdevproject\newtopic.php on line 23
    Erreur SQL !
    Query est vide

    En gros l'erreur typique d'un sql query sans valeur, cependant je déclare $sql juste au dessus !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <?php
    session_start();
    include ("bdd.php");
    $base = mysql_connect ('localhost', 'root', '');
    mysql_select_db ('supforum', $base);
    if (isset ($_GET['cat'])) {
    	$_GET['cat'] = $_POST['cat'];
    }
     
    if (isset ($_POST['go'])) { 
       // on teste la déclaration de nos variables
       if (!isset($_POST['description']) || !isset($_POST['titre']) || !isset($_POST['content'])) { 
          $erreur = 'Les variables nécessaires au script ne sont pas définies.'; 
       } 
       else
       { 
          if ((empty($_POST['titre'])) || (empty($_POST['content'])) || (empty($_POST['description']))) { 
             $erreur = 'Au moins un des champs est vide.'; 
          } 
          else {
    	$sql = 'INSERT INTO topics VALUES("", "'.mysql_escape_string($_POST['titre']).'" , "'.mysql_escape_string($_POST['description']).'"  , "'.$_SESSION['id'].'" , "'.$_POST['cat'].'" ,  "")'; 
          }
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
          $id_sujet = mysql_insert_id();
    	$sql = 'INSERT INTO messages VALUES("", "'.mysql_escape_string($_POST['content']).'", "'.$_SESSION['id'].'" ,"'.$id_sujet.'")';
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    	mysql_close();
    	header('Location: membre.php');
    	exit();
    	}
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>SUPFORUM</title>
    <style type="text/css">
    .Titre {
    	text-align: center;
    	font-size: 24px;
    	font-weight: bold;
    	color: #000;
    }
    .Text1 {
    	text-align: center;
    }
     
    <?php include ("wyhead.php"); ?>
     
     
    </style>
    </head>
     
    <body>
    <p>&nbsp;</p>
    <?php include ("entete2.php"); ?>
    <form action="newtopic.php" method="post">
    <tr >
        <th>
        <input type="text" name="titre" value="<?php if (isset($_POST['text'])) echo htmlentities(trim($_POST['text'])); ?>">
    	<input type="text" name="description" value="<?php if (isset($_POST['text'])) echo htmlentities(trim($_POST['text'])); ?>">
    	$
        </th>
     
    </tr>
    <tr>
    	<th>
    		<?php include ("wybody.php") ?>
    	</th>
    </tr>
    </form>	
     
    <?php include ("baspage2.php"); ?>
    </body>
    </html>
     
    <?php
    if (isset($erreur)) echo ' <br /> ', $erreur;
    ?>
    Je ne vois pas du tout d'où peut venir l'erreur .. Pouvez-vous m'aider ?

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Bonjour,

    En effet, tu déclares $sql juste au dessus, mais dans la clause else.

    Si tu ne passes pas dedans, $sql n'est pas défini.
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Points : 24
    Points
    24
    Par défaut
    Salut,

    En lisant ton code, je me rends comptes qu'il ya un plan d'exécution où ta variable $sql ne sera pas initialisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ((empty($_POST['titre'])) || (empty($_POST['content'])) || (empty($_POST['description']))) { 
             $erreur = 'Au moins un des champs est vide.'; 
          } 
          else {
    	$sql = 'INSERT INTO topics VALUES("", "'.mysql_escape_string($_POST['titre']).'" , "'.mysql_escape_string($_POST['description']).'"  , "'.$_SESSION['id'].'" , "'.$_POST['cat'].'" ,  "")'; 
          }
    Dans ce cas tu ne passeras pas dans le 'else' et ta variable ne sera pas initialisée, non?

    TomTom_

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 44
    Points
    44
    Par défaut
    Enfin dans mon idée je passais forcément dans le else ^^.
    Donc bon j'ai levé cette condition et la maintenant cela marche.

    Par contre, je sais pas si vous le voyez, mais je met sert d'une methode GET pour recuperer l'id de la catégorie, cependant dans ma table SQL celui-ci reste a 0.
    Je sais pourquoi, car en faite lorsque j'ouvre la page j'ai bien newtopics.php?cat=5, mais lorsque je termine la rédaction de mon formulaire et que j'envoie les paramètre j'ouvre : newtopics.php (dans le form)
    Quelles solutions s'offres à moi ? Dans le form rajouter "?rcat=' , $_GET['cat'] ,""
    ça se fait ?

    Dernière petite interogation, dans la bdd, j'ai initialiser mes date en timestamp avec en valeur par default : current timestamp.
    Or tout reste a 0 alors qu'il aurai du me mettre la date non ?
    Sinon un "time()" dans la requete SQL suffit ?

    Merci pour vos réponses déjà vous avez été super rapide :p

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset ($_GET['cat'])) { // si on reçoit 'cat' en GET
    	$_GET['cat'] = $_POST['cat']; // on lui donne quand même la valeur en POST (aka $_GET['cat'] est remplacé)
    }
    Je ne sais pas si c'est voulu comme ça vu que vous utilisez $_POST['cat'] dans la requête.

    Cela devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset ($_GET['cat'])) { 
    	$_POST['cat'] = $_GET['cat'];
    }
    (mais c'est quand même bien laid.)
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 44
    Points
    44
    Par défaut
    Ah oui rolalala je suis fatigué on dirait ...
    Enfin c'est le seul moyen que j'ai trouvé pour passer ma variable pour m'en resservir.
    Et même comme ça, cela ne fonctionne pas

Discussions similaires

  1. Erreur PHP: Undefined variable
    Par infooo dans le forum Langage
    Réponses: 7
    Dernier message: 26/11/2013, 15h45
  2. PHP5 et erreur Notice :Undefined variable
    Par bypbop dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2013, 00h55
  3. [PHP 5.3] Erreur -> Notice: Undefined variable: status
    Par donaldf dans le forum Langage
    Réponses: 2
    Dernier message: 21/01/2010, 19h03
  4. [SQL] Undefined variable: prixprod
    Par klue_ dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/05/2007, 13h43
  5. [SQL] Undefined variable - @$var_rec_privee
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/08/2006, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo