Affichage de données en php

bonjour, voici mon code:

// on teste la déclaration de nos variables
if (isset($_POST['mat']) )
{
//on recupère les valeurs
$mat= $_POST['mat'];
}
// connexion au serveur
$con=mysql_connect("localhost","root","") or die("erreur de connexion au serveur");

//connexion à la base de données
$bd=mysql_select_db("m_berte") or die("erreur de connexion à la base de données");

//formulation de la requête de selection
$sql='SELECT * FROM information WHERE agen_mat= "'.$mat.'" ';

//execution de requête
$req=mysql_query($sql) or die("erreur de selection");

//
$affich=mysql_fetch_array($req);

//on libère l'espace mémoire pour cette interrogation à la base
mysql_free_result($req);

//fermeture de la connexion à la base de données
mysql_close();

//affichage des données sélectionnées dans la base
echo $affich["agen_mat"].''.$affich["agen_nom"].''.$affich["agen_pren"].''.$affich["agen_codexp"].''.$affich["agen_fonc"].''.$affich["agen_agce"].''.$affich["agen_obj"].''.$affich["agen_per"].''.$affich["agen_serv"].''.$affich["agen_real"].'<br/>';

nb: Mais rien ne s'affiche, ce qui m'etonne!
pouvez vous m'aidez? merci!!!

6 réponses

  1. Contributeur
    Salut,

    Que donne le print_r() suivant ?

    print_r($affich);

    S'il affiche Array() c'est que ta requête ne récupère rien en base. À ce moment-là il faut carrément vérifier les premières lignes de ton code :

    if (isset($_POST['mat'])){
         $mat= $_POST['mat'];
    }

    Peut-être que ta variable POST est vide.
    1. voici mes corrections:

      // on teste la déclaration de nos variables
      if (isset($_POST['mat']) )
      {
      //on recupère les valeurs
      $mat= $_POST['mat'];
      }
      // connexion au serveur
      $con=mysql_connect("localhost","root","") or die("erreur de connexion au serveur");

      //connexion à la base de données
      $bd=mysql_select_db("m_berte") or die("erreur de connexion à la base de données");

      //formulation de la requête de selection
      $sql='SELECT * FROM information WHERE agen_mat= "'.$mat.'" ';

      //execution de requête
      $req=mysql_query($sql) or die("erreur de selection");

      //
      $affich=mysql_fetch_array($req);

      //on libère l'espace mémoire pour cette interrogation à la base
      mysql_free_result($req);

      //fermeture de la connexion à la base de données
      mysql_close();

      //affichage des données sélectionnées dans la base
      print_r($affich);
      /*echo $affich["agen_mat"].''.$affich["agen_nom"].''.$affich["agen_pren"].''.$affich["agen_codexp"].''.$affich["agen_fonc"].''.$affich["agen_agce"].''.$affich["agen_obj"].''.$affich["agen_per"].''.$affich["agen_serv"].''.$affich["agen_real"] .'<br/>';*/

      mais php me dit:"undefined variable mat " à la ligne 23 (au niveau de la requête sql) or tout parait correcte
      1. Contributeur
        Je crois que l'erreur PHP parle bien pourtant !

        if (isset($_POST['mat'])){ 
             $mat= $_POST['mat']; 
        }


        Tu ne passes pas dans ce IF car ta variables $_POST['mat'] n'existe pas !
        Donc tu ne déclares pas ta variable $mat

        Mets plutôt ceci :

        $mat = "";
        if (isset($_POST['mat'])){ 
             $mat= $_POST['mat']; 
        }

        Cela va supprimer ton erreur mais le problème ne sera pas résolu, car tu as apparemment un problème avec ton formulaire. Fais-moi voir le code HTML de ton form.
        1. ok le voici:

          <table width="600" border="0" height="200" align="center" bgcolor="#FFCC66">
          <caption><u><font color="#FFFFFF"><h3 align="center">Verification d'objectif</h3></font></u></caption>
          <form method="post" action="affichage.php">
          <tr>
          <td>Matricule agent:</td>
          <td><input type="text" name="mat" align="middle" /></td>
          </tr>
          <tr>
          <td colspan="2"><center><input type="submit" value="Rechercher" name="ok"/></center>
          </td>
          </tr>
          </form>
          </table>
          1. Contributeur
            Si dans ton PHP tu mets ça :

            $mat = "";
            if (isset($_POST['mat'])){ 
                 $mat= $_POST['mat']; 
            }
            echo ($mat);


            Est-ce qu'il t'affiche bien la valeur que tu rentres dans ton formulaire ?
          2. Salut !

            Je pense savoir pourquoi ta variable est vide !
            Si je dis pas de bétise, on ne peut pas mettre de form dans des tables.
            https://forum.alsacreations.com/topic-2-24074-1.html
            (J'en ai fait l'experience dans un précédent dev)

            Donc soit tu enlèves ta <table>, soit il va falloir de mettre à l'AJAX ;-)
        2. j'avoue que je comprends pas ce que vous dites! suis un peu perdu!!!
          1. Enfaite, tu ne peux pas mettre de <form> dans un <table>, a part dans un <td> priori, mais il faut que tout le <form> soit entièrement dans le <td>