Mysql_fetch_array() expects parameter 1 to be resource

sylvain83 Messages postés 64 Statut Membre -  
sylvain83 Messages postés 64 Statut Membre -


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

  • 1
  • 2
  • 3
  • 4
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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. sylvain83 Messages postés 64 Statut Membre 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
    1. juliencolin54 Messages postés 238 Statut Membre 55
       
      Le champ est-it bien présent dans ta database ?
      0
  2. Utilisateur anonyme
     
    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
  3. juliencolin54 Messages postés 238 Statut Membre 55
     
    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,
    0
  4. sylvain83 Messages postés 64 Statut Membre 1
     
    Le champ Enseignant ? Oui il est bien présent dans ma table info_tbl
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. juliencolin54 Messages postés 238 Statut Membre 55
     
    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.
    0
  7. sylvain83 Messages postés 64 Statut Membre 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 ;)
    0
  8. juliencolin54 Messages postés 238 Statut Membre 55
     
    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,
    0
  9. sylvain83 Messages postés 64 Statut Membre 1
     
    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
    }
    ?>
    0
  10. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
    }
    ?>
    0
  11. sylvain83 Messages postés 64 Statut Membre 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
    0
  12. sylvain83 Messages postés 64 Statut Membre 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....
    0
  13. sylvain83 Messages postés 64 Statut Membre 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 !
    0
  14. Utilisateur anonyme
     
    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.
    0
  15. sylvain83 Messages postés 64 Statut Membre 1
     
    !!!Ah ouai...à l'avenir j'éviterai le copier/coller , ça évitera les fautes d'étourderies !
    Merci bcp , ça marche à présent ;)
    0
  16. Alain_42 Messages postés 5413 Statut Membre 904
     
    ç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
    ....
    0
    1. Utilisateur anonyme
       
      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.
      0
  17. juliencolin54 Messages postés 238 Statut Membre 55
     
    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,

    0
  18. Alain_42 Messages postés 5413 Statut Membre 904
     
    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é"
    0
  19. juliencolin54 Messages postés 238 Statut Membre 55
     
    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.
    0
  20. sylvain83 Messages postés 64 Statut Membre 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 !
    0
  21. sylvain83 Messages postés 64 Statut Membre 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...
    0
  • 1
  • 2
  • 3
  • 4