Mysql_fetch_array() expects parameter 1 to be resource



Salut a tous,
voila j'ai pour projet de créer un formulaire qui récoltera des informations, pour les insérer dans une table pour ensuite les afficher dans un tableau...j'ai donc essayer de coder en PHP et voila ce que ca a donné :

<?php
// On commence par récupérer les champs
if(isset($_POST['Enseignant'])) $Enseignant=$_POST['Enseignant'];
else $Enseignant="";

if(isset($_POST['Salle'])) $Salle=$_POST['Salle'];
else $Salle="";

if(isset($_POST['Date'])) $Date=$_POST['Date'];
else $Date="";

if(isset($_POST['Horaire'])) $Horaire=$_POST['Horaire'];
else $Horaire="";

if(isset($_POST['Numero'])) $Numero=$_POST['Numero'];
else $Numero="";

if(isset($_POST['Titre'])) $Titre=$_POST['Titre'];
else $Titre="";

if(isset($_POST['Nouvelle'])) $Nouvelle=$_POST['Nouvelle'];
else $Nouvelle="";

if(isset($_POST['Remarque'])) $Remarque=$_POST['Remarque'];
else $Remarque="";

{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base

mysql_select_db('phpmyadmin',$db) or die('Erreur de selection '.mysql_error());

// on écrit la requête sql
$sql = "INSERT INTO infos_tbl(id, Enseignant, Salle, Date, Horaire, Numero, Titre, Nouvelle, Remarque) VALUES('','$Enseignant','$Salle','$Date','$Horaire','$Numero','$Titre','$Nouvelle','$Remarque')";

// on insère les informations du formulaire dans la table
$result = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on ete ajoutees.';

// on affiche les données saisies dans un tableau
echo"<table><tr><th>ID</th><th>Enseignant</th><th>Salle</th><th>Date</th><th>Horaire</th><th>Numero</th><th>Type</th><th>Titre</th><th>Nouvelle</th><th>Remarque</th></tr>" ;
while($row = mysql_fetch_array($result))
{
echo "<tr><td>".$row['Enseignant'] . "</td><td> ". $row['Salle'] . "</td><td> ". $row['Date'] . "</td><td> ". $row['Horaire'] . "</td><td> ". $row['Numero'] . "</td><td> ". $row['Type']. "</td><td> ". $row['Titre']. "</td><td> ". $row['Nouvelle']. "</td><td> ". $row['Remarque']. "</td><td></tr>";
}
echo "</table";

mysql_close();
// on ferme la connexion
}
?>

Le problème est que je recois a chaque fois le message d'erreur : "Vos infos on ete ajoutees.
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-12.1\www\add.php on line 45
ID Enseignant Salle Date Horaire Numero Type Titre Nouvelle Remarque "

Auriez vous une idée ? Je recherche un peu partout sur le net et sur les forums , et étant un novice en PHP j avoue être un peu perdu...merci d avance pour votre aide !

69 réponses

Résumé de la discussion

Problème : un formulaire PHP doit collecter des informations, les insérer dans une table MySQL et les afficher, mais l’insertion et l’affichage échouent. Des erreurs récurrentes incluent Warning: mysql_fetch_array() expects parameter 1 to be resource et 'Champ inconnu', indiquant une insertion ratée ou des noms de colonnes incorrects. Pour remédier, plusieurs réponses recommandent strlen plutôt que empty et la vérification d’un champ existant, ainsi que de tester que les données saisies sont raisonnables. En pratique, il est conseillé de séparer le traitement du formulaire dans un fichier PHP dédié, d’utiliser MySQLi ou PDO et d’afficher le tableau via une requête SELECT adaptée.

Bobot (l’IA à votre service)
  1. Bonjour,

    Ton
    mysql_fetch_array($result)
    est, je pense que tu l'as compris, un itérateur sur l'objet
    $result
    .

    Or qu'est ce que
    $result
    à l'endroit où tu fait ton
     mysql_fetch_array($result)
    ?

    C'est simplement le résultat de ta requête.
    Ta requête réalisée est un INSERT donc elle renvoie en
    boolean
    comme te le dit l'erreur. (
    true
    ou
    false
    si échec ou réussite) .

    Donc il faut que tu fasses une deuxième requête, cette fois-ci un SELECT, qui te renvoie les données que tu désires.

    Cordialement,
    1. Merci pour votre réponse !
      J'ai donc essayé de suivre vos instructions et créant une nouvelle requête :

      <?php
      // On commence par récupérer les champs
      if(isset($_POST['Enseignant'])) $Enseignant=$_POST['Enseignant'];
      else $Enseignant="";

      if(isset($_POST['Salle'])) $Salle=$_POST['Salle'];
      else $Salle="";

      if(isset($_POST['Date'])) $Date=$_POST['Date'];
      else $Date="";

      if(isset($_POST['Horaire'])) $Horaire=$_POST['Horaire'];
      else $Horaire="";

      if(isset($_POST['Numero'])) $Numero=$_POST['Numero'];
      else $Numero="";

      if(isset($_POST['Titre'])) $Titre=$_POST['Titre'];
      else $Titre="";

      if(isset($_POST['Nouvelle'])) $Nouvelle=$_POST['Nouvelle'];
      else $Nouvelle="";

      if(isset($_POST['Remarque'])) $Remarque=$_POST['Remarque'];
      else $Remarque="";

      {
      // connexion à la base
      $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
      // sélection de la base

      mysql_select_db('phpmyadmin',$db) or die('Erreur de selection '.mysql_error());

      // on crée la requête sql
      $sql = "INSERT INTO infos_tbl(id, Enseignant, Salle, Date, Horaire, Numero, Titre, Nouvelle, Remarque) VALUES('','$Enseignant','$Salle','$Date','$Horaire','$Numero','$Titre','$Nouvelle','$Remarque')";

      // on selectionne les informations à afficher dans le tableau
      $result = 'SELECT Enseignant,Salle,Date,Horaire,Numero,Titre,Nouvelle,Remarque';

      // on insère les informations du formulaire dans la table
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

      // on envoie la seconde requete
      $req = mysql_query($result) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

      // on affiche le résultat pour le visiteur
      echo 'Vos infos on ete ajoutees.';

      // on affiche les données saisies dans un tableau
      echo"<table><tr><th>ID</th><th>Enseignant</th><th>Salle</th><th>Date</th><th>Horaire</th><th>Numero</th><th>Type</th><th>Titre</th><th>Nouvelle</th><th>Remarque</th></tr>" ;
      while($row = mysql_fetch_array($req))
      {
      echo "<tr><td>".$row['Enseignant'] . "</td><td> ". $row['Salle'] . "</td><td> ". $row['Date'] . "</td><td> ". $row['Horaire'] . "</td><td> ". $row['Numero'] . "</td><td> ". $row['Type']. "</td><td> ". $row['Titre']. "</td><td> ". $row['Nouvelle']. "</td><td> ". $row['Remarque']. "</td><td></tr>";
      }
      echo "</table";

      mysql_close();
      // on ferme la connexion
      }
      ?>

      Seulement j'ai un nouveau message d erreur :

      Erreur SQL !INSERT INTO infos_tbl(id, Enseignant, Salle, Date, Horaire, Numero, Titre, Nouvelle, Remarque) VALUES('','Enseignant','Salle','Date','Horaire','Numero','Titre','Nouvelle','Remarque')
      Champ 'Enseignant' inconnu dans field list
      1. Le champ est-it bien présent dans ta database ?
    2. Le champ Enseignant ? Oui il est bien présent dans ma table info_tbl
      1. Ton erreur n'est pas plus détaillée que cela ?
        Si est l'est, met tout dans ton post.

        Aussi, dans la requête SELECT tu as oublié le FROM.
        1. Ouai j'ai vu ! Je viens de l ajouter !

          <?php
          // On commence par récupérer les champs
          if(isset($_POST['Enseignant'])) $Enseignant=$_POST['Enseignant'];
          else $Enseignant="";

          if(isset($_POST['Salle'])) $Salle=$_POST['Salle'];
          else $Salle="";

          if(isset($_POST['Date'])) $Date=$_POST['Date'];
          else $Date="";

          if(isset($_POST['Horaire'])) $Horaire=$_POST['Horaire'];
          else $Horaire="";

          if(isset($_POST['Numero'])) $Numero=$_POST['Numero'];
          else $Numero="";

          if(isset($_POST['Titre'])) $Titre=$_POST['Titre'];
          else $Titre="";

          if(isset($_POST['Nouvelle'])) $Nouvelle=$_POST['Nouvelle'];
          else $Nouvelle="";

          if(isset($_POST['Remarque'])) $Remarque=$_POST['Remarque'];
          else $Remarque="";

          {
          // connexion à la base
          $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
          // sélection de la base

          mysql_select_db('phpmyadmin',$db) or die('Erreur de selection '.mysql_error());

          // on crée la requête sql
          $sql = "INSERT INTO infos_tbl(id, Enseignant, Salle, Date, Horaire, Numero, Titre, Nouvelle, Remarque) VALUES('','$Enseignant','$Salle','$Date','$Horaire','$Numero','$Titre','$Nouvelle','$Remarque')";

          // on selectionne les informations à afficher dans le tableau
          $result = 'SELECT Enseignant,Salle,Date,Horaire,Numero,Titre,Nouvelle,Remarque FROM infos_tbl';

          // on insère les informations du formulaire dans la table
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

          // on envoie la seconde requete
          $req = mysql_query($result) or die('Erreur SQL !'.$result.'<br>'.mysql_error());

          // on affiche le résultat pour le visiteur
          echo 'Vos infos on ete ajoutees.';

          // on affiche les données saisies dans un tableau
          echo"<table><tr><th>ID</th><th>Enseignant</th><th>Salle</th><th>Date</th><th>Horaire</th><th>Numero</th><th>Type</th><th>Titre</th><th>Nouvelle</th><th>Remarque</th></tr>" ;
          while($row = mysql_fetch_array($req))
          {
          echo "<tr><td>".$row['Enseignant'] . "</td><td> ". $row['Salle'] . "</td><td> ". $row['Date'] . "</td><td> ". $row['Horaire'] . "</td><td> ". $row['Numero'] . "</td><td> ". $row['Type']. "</td><td> ". $row['Titre']. "</td><td> ". $row['Nouvelle']. "</td><td> ". $row['Remarque']. "</td><td></tr>";
          }
          echo "</table";

          mysql_close();
          // on ferme la connexion
          }
          ?>

          Ca marche presque ! Mais j ai toujours un message d erreur :

          Vos infos on ete ajoutees.
          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53

          Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53
          ID Enseignant Salle Date Horaire Numero Type Titre Nouvelle Remarque
          M.Souyri B0123x 205 9 8345355 greubi B078 muuuz
          M.Rigoli Aj111 20583 900 09897873 Maxamud Aj211 gnaaaaa
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          vvvvv mmmmmm 0 0 nnnnnnnn ddddddddd vvvvvvvv Remujkukz
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          Enseignant Salle 0 0 Numero Titre Nouvelle Remarque
          souyri Salle 0 0 Numero Titre Nouvelle Remarque

          Apparemment un problème a cause de l index...j avance à petit pas ! Merci pour ton aide ;)
          1. En effet j'avais pas fait attention mais en utilisant
            mysql_fetch_array($something) 
            sans options, tu ne peux pas accéder aux cases en faisant
            $row[CHAMP_DE_TABLE]
            , mais seulement comme ceci
            $row[0], row[1]
            , etc.

            Si tu veux pouvoir accéder au champs tel que le fait actuellement, il faut que tu fasses un
            $row = mysql_fetch_array($req, MYSQL_ASSOC)
            plutôt.

            Cdlt,
          2. J'ai ajouté MYSQL_ASSOC mais j ai toujours le meme message d erreur

            <?php
            // On commence par récupérer les champs
            if(isset($_POST['Enseignant'])) $Enseignant=$_POST['Enseignant'];
            else $Enseignant="";

            if(isset($_POST['Salle'])) $Salle=$_POST['Salle'];
            else $Salle="";

            if(isset($_POST['Date'])) $Date=$_POST['Date'];
            else $Date="";

            if(isset($_POST['Horaire'])) $Horaire=$_POST['Horaire'];
            else $Horaire="";

            if(isset($_POST['Numero'])) $Numero=$_POST['Numero'];
            else $Numero="";

            if(isset($_POST['Titre'])) $Titre=$_POST['Titre'];
            else $Titre="";

            if(isset($_POST['Nouvelle'])) $Nouvelle=$_POST['Nouvelle'];
            else $Nouvelle="";

            if(isset($_POST['Remarque'])) $Remarque=$_POST['Remarque'];
            else $Remarque="";

            {
            // connexion à la base
            $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
            // sélection de la base

            mysql_select_db('phpmyadmin',$db) or die('Erreur de selection '.mysql_error());

            // on crée la requête sql
            $sql = "INSERT INTO infos_tbl(id, Enseignant, Salle, Date, Horaire, Numero, Titre, Nouvelle, Remarque) VALUES('','$Enseignant','$Salle','$Date','$Horaire','$Numero','$Titre','$Nouvelle','$Remarque')";

            // on selectionne les informations à afficher dans le tableau
            $result = 'SELECT Enseignant,Salle,Date,Horaire,Numero,Titre,Nouvelle,Remarque FROM infos_tbl';

            // on insère les informations du formulaire dans la table
            mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

            // on envoie la seconde requete
            $req = mysql_query($result) or die('Erreur SQL !'.$result.'<br>'.mysql_error());

            // on affiche le résultat pour le visiteur
            echo 'Vos infos on ete ajoutees.';

            // on affiche les données saisies dans un tableau
            echo"<table><tr><th>Enseignant</th><th>Salle</th><th>Date</th><th>Horaire</th><th>Numero</th><th>Type</th><th>Titre</th><th>Nouvelle</th><th>Remarque</th></tr>" ;
            while($row = mysql_fetch_array($req, MYSQL_ASSOC))
            {
            echo "<tr><td>".$row['Enseignant'] . "</td><td> ". $row['Salle'] . "</td><td> ". $row['Date'] . "</td><td> ". $row['Horaire'] . "</td><td> ". $row['Numero'] . "</td><td> ". $row['Type']. "</td><td> ". $row['Titre']. "</td><td> ". $row['Nouvelle']. "</td><td> ". $row['Remarque']. "</td><td></tr>";
            }
            echo "</table";

            mysql_close();
            // on ferme la connexion
            }
            ?>
            1. Salut, voir commentaires
              <?php
              // On commence par récupérer les champs
              if(isset($_POST['Enseignant'])) $Enseignant=$_POST['Enseignant'];
              else $Enseignant="";

              if(isset($_POST['Salle'])) $Salle=$_POST['Salle'];
              else $Salle="";

              if(isset($_POST['Date'])) $Date=$_POST['Date'];
              else $Date="";

              if(isset($_POST['Horaire'])) $Horaire=$_POST['Horaire'];
              else $Horaire="";

              if(isset($_POST['Numero'])) $Numero=$_POST['Numero'];
              else $Numero="";

              if(isset($_POST['Titre'])) $Titre=$_POST['Titre'];
              else $Titre="";

              if(isset($_POST['Nouvelle'])) $Nouvelle=$_POST['Nouvelle'];
              else $Nouvelle="";

              if(isset($_POST['Remarque'])) $Remarque=$_POST['Remarque'];
              else $Remarque="";
              //A quoi correspond l' accolade ci dessous ?
              {
              // connexion à la base
              $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
              // sélection de la base
              //très mauvaise idée de nommer ta base phpmyadmin !
              mysql_select_db('phpmyadmin',$db) or die('Erreur de selection '.mysql_error());

              // on crée la requête sql INSERT
              $sql = "INSERT INTO infos_tbl(id, Enseignant, Salle, Date, Horaire, Numero, Titre, Nouvelle, Remarque) VALUES('','$Enseignant','$Salle','$Date','$Horaire','$Numero','$Titre','$Nouvelle','$Remarque')";
              // on insère les informations du formulaire dans la table
              $insert=mysql_query($sql) or die('Erreur req INSERT'.$sql.'<br>'.mysql_error());
              // on affiche le résultat pour le visiteur (en cas de réussite !)
              if($insert){
              echo 'Vos infos on ete ajoutees.';
              }else {
              echo 'Pb les données n\'ont pas été insérées';
              }

              //affichage
              // requette SELECT.
              $result = 'SELECT * FROM infos_tbl'; //mets * comme cela tu sera sur de lire tous les champs
              $req = mysql_query($result) or die('Erreur req SELECT !'.$req.'<br>'.mysql_error()); //si tu veux afficher le texte de la requette la variable c'est $req et pas $result

              // on affiche les données saisies dans un tableau
              echo"<table><tr><th>Enseignant</th><th>Salle</th><th>Date</th><th>Horaire</th><th>Numero</th><th>Type</th><th>Titre</th><th>Nouvelle</th><th>Remarque</th></tr>" ;
              while($row = mysql_fetch_array($req)){
              //mysql_fetch_array te permet de fiare soit $row[0] soit $row['Enseignant'] etc...
              //mysql_fetch_assoc permet seulement $row['Enseignant'] etc..

              //Mais es tu sur que le champ Type existe dans ta table ??
              //de toute façon tu ne l'avait pas mis dans ta requette SELECT Enseignant,Salle,Date,Horaire,Numero,Titre,Nouvelle,Remarque FROM infos_tbl'; c'est pour cela que c'est mieux de mettre *
              echo "<tr><td>".$row['Enseignant'] . "</td><td> ". $row['Salle'] . "</td><td> ". $row['Date'] . "</td><td> ". $row['Horaire'] . "</td><td> ". $row['Numero'] . "</td><td> ". $row['Type']. "</td><td> ". $row['Titre']. "</td><td> ". $row['Nouvelle']. "</td><td> ". $row['Remarque']. "</td></tr>";
              //ci dessus tu avait un <td> en trop à la fin juste avant le </tr>
              }
              echo "</table>"; //la il te manquait >

              mysql_close();
              // on ferme la connexion
              }
              ?>
              1. Toujours le même message d erreur :(
                C est bizarre parce que ca affiche bien le contenu de la table dans mon tableau mais j ai tout de même le message d erreur

                Notice: Undefined index: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 53
                1. En effet le champ Type n existait pas dans ma table je vais le rajouter, c est peut etre ca qui pose problème....
                  1. Après modifications :

                    <?php
                    // On commence par récupérer les champs
                    if(isset($_POST['Enseignant'])) $Enseignant=$_POST['Enseignant'];
                    else $Enseignant="";

                    if(isset($_POST['Salle'])) $Salle=$_POST['Salle'];
                    else $Salle="";

                    if(isset($_POST['Date'])) $Date=$_POST['Date'];
                    else $Date="";

                    if(isset($_POST['Horaire'])) $Horaire=$_POST['Horaire'];
                    else $Horaire="";

                    if(isset($_POST['Numero'])) $Numero=$_POST['Numero'];
                    else $Numero="";

                    if(isset($_POST['Type'])) $Numero=$_POST['Type'];
                    else $Type="";

                    if(isset($_POST['Titre'])) $Titre=$_POST['Titre'];
                    else $Titre="";

                    if(isset($_POST['Nouvelle'])) $Nouvelle=$_POST['Nouvelle'];
                    else $Nouvelle="";

                    if(isset($_POST['Remarque'])) $Remarque=$_POST['Remarque'];
                    else $Remarque="";

                    {
                    // connexion à la base
                    $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
                    // sélection de la base

                    mysql_select_db('phpmyadmin',$db) or die('Erreur de selection '.mysql_error());

                    // on crée la requête sql
                    $sql = "INSERT INTO infos_tbl(id, Enseignant, Salle, Date, Horaire, Numero, Type, Titre, Nouvelle, Remarque) VALUES('','$Enseignant','$Salle','$Date','$Horaire','$Numero', '$Type','$Titre','$Nouvelle','$Remarque')";

                    // on selectionne les informations à afficher dans le tableau
                    $result = 'SELECT * FROM infos_tbl';

                    // on insère les informations du formulaire dans la table
                    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

                    // on envoie la seconde requete
                    $req = mysql_query($result) or die('Erreur SQL !'.$result.'<br>'.mysql_error());

                    // on affiche le résultat pour le visiteur
                    echo 'Vos infos on ete ajoutees.';

                    // on affiche les données saisies dans un tableau
                    echo"<table>
                    <tr>
                    <th>Enseignant</th>
                    <th>Salle</th>
                    <th>Date</th>
                    <th>Horaire</th>
                    <th>Numero</th>
                    <th>Type</th>
                    <th>Titre</th>
                    <th>Nouvelle</th>
                    <th>Remarque</th>
                    </tr>" ;
                    while($row = mysql_fetch_array($req, MYSQL_ASSOC))
                    {
                    echo "<tr>
                    <td>".$row['Enseignant'] . "</td>
                    <td> ". $row['Salle'] . "</td>
                    <td> ". $row['Date'] . "</td>
                    <td> ". $row['Horaire'] . "</td>
                    <td> ". $row['Numero'] . "</td>
                    <td> ". $row['Type']. "</td>
                    <td> ". $row['Titre']. "</td>
                    <td> ". $row['Nouvelle']. "</td>
                    <td> ". $row['Remarque']. "</td>
                    </tr>";
                    }
                    echo "</table";

                    mysql_close();
                    // on ferme la connexion
                    }
                    ?>

                    Ca marche mieux ! Mais toujours un tout petit message d erreur :

                    Notice: Undefined variable: Type in C:\Program Files\EasyPHP-12.1\www\add.php on line 38

                    line 38 : $sql = "INSERT INTO infos_tbl(id, Enseignant, Salle, Date, Horaire, Numero, Type, Titre, Nouvelle, Remarque) VALUES('','$Enseignant','$Salle','$Date','$Horaire','$Numero', '$Type','$Titre','$Nouvelle','$Remarque')";

                    Dois je mettre quelque chose pour l' id ???

                    Merci !
                    1. Bonjour

                      Le message te dit que la variable $Type n'existe pas. Il suffit de lire :
                      if(isset($_POST['Type'])) $Numero=$_POST['Type'];

                      Tu n'as pas à initialiser id si ce champ est bien défini en autoincrement. Tu peux lui mettre une valeur vide comme tu l'as fait, mais il est encore plus simple de ne pas le mettre du tout : ni dans la liste des champs, ni de valeur vide.
                      1. !!!Ah ouai...à l'avenir j'éviterai le copier/coller , ça évitera les fautes d'étourderies !
                        Merci bcp , ça marche à présent ;)
                        1. ça fonctionne mais tu as qd même un bizarrerie

                          ......
                          if(isset($_POST['Remarque'])) $Remarque=$_POST['Remarque'];
                          else $Remarque="";

                          {
                          //la que fait cette accolade toute seule elle devrait être après un test conditionnel

                          // connexion à la base
                          $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
                          // sélection de la base
                          ....


                          par exemple:
                          ......
                          if(isset($_POST['Remarque'])) $Remarque=$_POST['Remarque'];
                          else $Remarque="";


                          if(isset($_POST['submit'])){
                          //si le name de ton bouton submit du formualire est bien "submit" sinon change
                          // connexion à la base
                          $db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
                          // sélection de la base
                          ....
                          1. Aucune anomalie.
                            L'accolade en PHP sert juste à délimiter un bloc d'instructions.
                            Si on la trouve après les if et autres while, c'est parce qu'il faut bien indiquer au if ou au while sur quel bloc d'instructions porte le test. D'ailleurs on n'a pas besoin des accolades si il porte sur une seule instruction, comme c'est le cas dans son exemple.
                            Mais ça n'empêche pas de définir un bloc indépendamment de tout if.
                        2. Je pense que c'est une erreur d'inattention de sa part.

                          @alain_42, les accolades ne sont pas obligatoirement précédées d'un test conditionnel.

                          Elles ont pour but de délimiter un bloc.
                          En effet, une structure de contrôle a besoin d'opérer sur une instruction ou sur un bloc d'instructions.
                          Mais, la réciproque est fausse; un bloc d'instructions n'a pas besoin d'une structure de contrôle.

                          Cdlt,

                          1. pour l'homogénéité du code perso je préfère mettre des accolades tout le temps, si pour debugger on doit rajouter une instruction c'est plus commode

                            et je ne voit pas l'intérêt pour délimiter un bloc de mettre des accolades

                            et il est plus judicieux d'ailleurs de conditionner l'exécution de cette partie de code au test de formulaire "posté"
                            1. Les blocs ont leurs propriétés qui différent en fonction du langage.

                              Ils agissent surtout sur la portée des variables.
                              Je n'ai pas l'impression que ça ait grande influence en PHP après avoir testé ceci sur un interpreteur online :
                              <?php
                              {
                              $a = 0;
                              echo $a;
                              }
                              echo $a
                              ?>
                              Le deuxième echo affiche bien 0

                              Tandis qu'en C par exemple :
                              int main(void)
                              {
                              {
                              int a = 5;
                              printf("%d\n", a);
                              }
                              printf("%d\n", a); // a non défini
                              }
                              Le code ne compile pas car la variable a est définie seulement à l'intérieur du bloc.

                              Quoiqu'il en soit, un bloc n'a pas besoin de structure conditionnelle pour exister.
                              1. Dernière petite question concernant mon projet : comment faire pour vérifier que chacun des champs a bien été saisi ?
                                Faut il que je remplace "isset" par "empty" ?
                                Merci tout le monde !
                                1. empty ne teste pas si une variable est vide, mais si son contenu est nul.

                                  En particulier, une variable est "empty" même si elle contient le nombre 0 ou la chaîne "0", ou la valeur booléenne "false"
                                  Pour voir s'il y a "quelque chose" dans un champ de formulaire, le plus sûr est encore strlen. De plus, il faut toujours des tests complémentaires pour vérifier que la saisie est 'raisonnable' . Au strict minimum, qu'un nombre est bien un nombre.
                                  1. Merci pour ta réponse, je vais donc voir comment inclure strlen dans mon code afin qu il calcule la taille de ma chaine de caractère et vérifier qu'elle n est pas nulle...
                                    • 1
                                    • 2
                                    • 3
                                    • 4