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. 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. 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. 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. 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. 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