Problème de création de boite de réception

Résolu
Bonjour à tous,

Je bloque sur un petit problème lors de la création d'une sorte de boite de réception.
Ma page reste blanche, j'ai vérifié mes points-virgule, mes crochets et autre... mais sans succès. Et mes recherches sur les différents forums se sont révélé infructueuses.

Ma base de donnée comprend une table 'recpt_mail'
Avec des champ 'num_mail', 'date', 'heure', 'nomexp', 'prenomexp', 'nom_ent', mailexp', 'tel', 'fax', 'objet', 'texte_mail'.

Mon code PHP ne me sert uniquement pour afficher dans un tableau les champs 'date', 'heure', 'nomexp', 'prenomexp', 'nom_ent', 'objet'.
J'ai utilisé la boucle WHILE pour cela.

Si quelqu'un de gentil pouvait m'indiquer l'endroit de mon erreur, parce que je galère là :/

Merci beaucoup! ;) et voici mon code:

<tbody>
 <tr class="list_mail">
  <?php
  $BDD = mysql_connect('localhost', 'root', 'root')  or die('Erreur de connexion '.mysql_error());
  mysql_select_db('protonic',$BDD)  or die('Erreur de selection '.mysql_error());

         
  $donnees=mysql_query("SELECT num_mail FROM recpt_mail",$BDD);
  $i=mysql_result($donnees,0,0);
 
  $SQL="SELECT date,heure,nomexp,prenomexp,nom_ent,objet FROM recpt_mail WHERE num_mail=$i";
  $donnees=mysql_query("SELECT num_mail FROM recpt_mail",$BDD);
  while($valeurs=mysql_fetch_array($donnees))
         {                                                                                           
   echo '<td>'.$valeurs[0].'</td>';
   echo'<td>'.$valeurs[1].'</td>';
   echo'<td>'.$valeurs[2].'</td>';
   echo'<td>'.$valeurs[3].'</td>';
   echo'<td>'.$valeurs[4].'</td>';
   echo'<td>'.$valeurs[5].'</td>';
   echo'<td class="sup">'Supprimer'</td>';
};
   mysql_close();
  ?>
 </tr>
</tbody>

7 réponses

Résumé de la discussion

Le problème porte sur l'affichage d'une boîte de réception sous forme de tableau à partir de la table recpt_mail, avec les champs date, heure, nomexp, prenomexp, nom_ent et objet. Le code tente d'établir une connexion MySQL et d'utiliser une boucle while sur des résultats pour afficher les colonnes, mais les requêtes et l'extraction des valeurs semblent mal alignées. Les réponses recommandent d'exécuter correctement la requête construite (utiliser $SQL dans mysql_query) et de récupérer les résultats avec les noms de colonnes appropriés, en corrigeant l'usage de $i et l'ordre des appels. Des corrections spécifiques ajoutent aussi de remplacer mysql_result par mysql_fetch_assoc, afficher les valeurs par noms de colonnes et fermer correctement la connexion afin d'éviter les résultats partiels et les erreurs.

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

    Ajoutes des "or Die" après tes mysql_query.

    Déjà. à quoi correspond ton $i ??
    Tu es sûr que là .. comme ça.. tu récupères bien quelque chose via ta requête :
     $donnees=mysql_query("SELECT num_mail FROM recpt_mail",$BDD);
      $i=mysql_result($donnees,0,0);
    


    Ensuite.. tu créés une requête ($SQL) mais tu ne l'appelles pas....
     $SQL="SELECT date,heure,nomexp,prenomexp,nom_ent,objet FROM recpt_mail WHERE num_mail=$i";
      $donnees=mysql_query($SQL,$BDD) or die('<br> Erreur de reqête <br>'.$sql."<br>".mysql_error();
    
    $Nb_rows = mysql_num_rows($donnees);
    if($Nb_rows){
      while($valeurs=mysql_fetch_array($donnees)){                           
       echo '<td>'.$valeurs['date'].'</td>';
       echo'<td>'.$valeurs['heure'].'</td>';
       echo'<td>'.$valeurs['nomexp'].'</td>';
       echo'<td>'.$valeurs['prenomexp'].'</td>';
       echo'<td>'.$valeurs['nom_ent'].'</td>';
       echo'<td>'.$valeurs['objet'].'</td>';
       echo'<td class="sup">'Supprimer'</td>';
    }
    }else{
      echo "<br> Aucun résultat trouvé.<br><b> REQUETE =></b><br>".$sql;
    }
       mysql_close();
      ?>
    


    1
    1. je vais mettre mes "or die" ^^
      et $i me sert pour récuperer les numéro d'email et le mettre dans ma requête $sql

      Et tu à raison pour $sql qui ne sert a rien si je ne l'utilise pas :/ j'avais pas fait attention

      Je vais essayer ^^
      0
      1. Ma page reste blanche ><
        est-ce que si mon code php est dans <tbody> ou <tr> peu gêner?
        0
      2. J'ai modifié, ma page n'est plus blanche!
        J'ai uniquement le haut de ma page (avant le code php) qui s'affiche par contre.
        Tout ce qui est après ne s'affiche pas, et le code php ne s'exécute pas non plus ^^

        Edit: en regardant de plus près, et le code source de la page, on peu voir que il s'arrête jsute avant le 'include' et tout ce qui est après ne s'affiche pas :/
        0
      3. Modérateur
        Si comme je le pense, tu es en LOCAL sur ton pc ...
        Tu utilises quel logiciel comme serveur web ( Wamp ... easyPhp ... ) ? -> il est bien lancé ?
        Tu as quoi dans l'url de ton navigateur internet ? ( tu as bien quelque chose du style : localhost/tonsite.php
        0
      4. J'utilise phpMyAdmin avec uniserverZ, et oui il est bien lancé ^^

        Oui j'ai ça ^^ http://localhost/dossier_du_site/lapro_mail.php
        0
      5. j'ai déjà essayer de changer d'utilisateur au cas où, mais ça ne change rien :/
        0
    2. Voici le code de ma page:

      <!DOCTYPE html>
      <html>
       <head>
        <title> Boite Mail - LA PROTONIC </title> 
        <?php
         include("head.php");
        ?>   
        </head>
        <div class="fond_principal">
        <body>
         <div class="cadre_acceuil">
        
      
           <h2 class="deconnecte"><a href="connect_lapro_mail.php">Deconnexion</a></h2>
            <h1 class="titre_page"><div class="color_blue">Boite de réception</div></h1></br>
            
           
           <table>
            <caption>Messages reçus:</caption>  
            <thead>
             <tr class="list_mail">
              <th> Date </th>
              <th> Heure </th>
              <th> Nom de l\'expediteur </th>
              <th> Prénom de l\'expediteur </th>
              <th> Nom de l\'entreprise </th>
              <th> Objet </th>
              <th class="sup"> Supprimer </th>  
             </tr>
            </thead>
            <tbody>
              <?php
               include("mail.inc.php");
              ?>
            </tbody>
            
            <tfoot>
             <tr class="list_mail">
              <th> Date </th>
              <th> Heure </th>
              <th> Nom de l\'expediteur </th>
              <th> Prénom de l\'expediteur </th>
              <th> Nom de l\'entreprise </th>
              <th> Adresse mail </th>
              <th class="sup"> Supprimer </th>
             </tr>
            </tfoot>
            
            
           </table>
         <!--FIN CODE A GARDER-->
         </div>
        </body>
       </div>
      </html>


      Et celui du php:

      <?php
      echo '<tr class="list_mail">';';        
       $BDD = mysql_connect('localhost', 'proto', 'proto')  or die('Erreur de connexion '.mysql_error());
       mysql_select_db('protonic',$BDD)  or die('Erreur de selection '.mysql_error());
            
       $ligne=mysql_query("SELECT num_mail FROM recpt_mail",$BDD);
       $i=mysql_result($ligne,0,0);
       $SQL="SELECT date,heure,nomexp,prenomexp,nom_ent,objet FROM recpt_mail WHERE num_mail=$ligne";
       $donnees=mysql_query($SQL,$BDD) or die('<br> Erreur de reqête <br>'.$sql."<br>".mysql_error();
            
       $Nb_rows = mysql_num_rows($donnees);
       if($Nb_rows){
        while($valeurs=mysql_fetch_array($donnees))
        {                                                                                           
         echo '<td>'.$valeurs['date'].'</td>';
         echo'<td>'.$valeurs['heure'].'</td>';
         echo'<td>'.$valeurs['nomexp'].'</td>';
         echo'<td>'.$valeurs['prenomexp'].'</td>';
         echo'<td>'.$valeurs['nom_ent'].'</td>';
         echo'<td>'.$valeurs['objet'].'</td>';
         echo'<td class="sup">'Supprimer'</td>';
        }
       }else{
        echo "<br> Aucun résultat trouvé.<br><b> REQUETE =></b><br>".$sql;
       }
       mysql_close($BDD);
      echo'</tr>';
      ?>

      Your soul is mine to keep
      0
      1. Modérateur
        Place ta connexion à ta BDD dans un fichier à part.(tu n'auras qu'à l'include au besoin)

        connexion_bdd.php
        $BDD = mysql_connect('localhost', 'proto', 'proto')  or die('<br>Erreur de connexion '.mysql_error());
         mysql_select_db('protonic',$BDD)  or die('<br>Erreur de selection '.mysql_error());
        


        Et dans mail.inc.php
        
        <?php
        //Include de la page de connexion à la BDD
        
        require_once("connexion_bdd.php");
        
        echo '<tr class="list_mail">';        
        
        $sql = "SELECT num_mail FROM recpt_mail";
         $ligne=mysql_query($sql,$BDD) or die('<br> Erreur de reqête <br>'.$sql."<br>".mysql_error();
         $i=mysql_result($ligne,0,0);
        
         $SQL="SELECT date,heure,nomexp,prenomexp,nom_ent,objet FROM recpt_mail WHERE num_mail=$ligne";
         $donnees=mysql_query($SQL,$BDD) or die('<br> Erreur de reqête <br>'.$sql."<br>".mysql_error();
              
         $Nb_rows = mysql_num_rows($donnees);
         if($Nb_rows){
          while($valeurs=mysql_fetch_array($donnees))
          {                                                                                           
           echo '<td>'.$valeurs['date'].'</td>';
           echo'<td>'.$valeurs['heure'].'</td>';
           echo'<td>'.$valeurs['nomexp'].'</td>';
           echo'<td>'.$valeurs['prenomexp'].'</td>';
           echo'<td>'.$valeurs['nom_ent'].'</td>';
           echo'<td>'.$valeurs['objet'].'</td>';
           echo'<td class="sup">'Supprimer'</td>';
          }
         }else{
          echo "<br> Aucun résultat trouvé.<br><b> REQUETE =></b><br>".$sql;
         }
         mysql_close($BDD);
        echo'</tr>';
        ?>
        


        Testes ça et dis moi ce que ça donne.
        0
        1. Toujours le même problème :/
          0
        2. La connexion à la bdd est bonne, une autre partie de mon site fonctionne correctement :/
          0
        3. Modérateur
          Le tableau se créé quand même ??
          Dans le code source de la page GENERE ... est qu'il y a les table/tr.... ??

          AU pire, peux tu faire afficher le code source de ta page ( donc..le code généré dans ton naivgateur quand tu affiches la page) et nous le coller ici ??
          0
        4. Le tableau ne se créé pas, il s'arrete au <tbody>

          Code source de la page:
          
          <!DOCTYPE html>
          <html>
           
           
           <head>
            <title> Boite Mail  </title> 
            <!-- head le même pour chaque page -->
          <head>
            <meta charset="utf-8"/>
            <link rel="stylesheet" href="style sheet.css"/>
            <link rel="stylesheet" media="screen and (max-width: 1024px)" href="mobile.css" />
            <meta name="viewport" content="width=device-width, target-densitydpi=device-dpi"/>
            <!--[if lt IE 9]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
            <![endif]-->
            
          </head>
          </head>   
            </head>
            <div class="fond_principal">
            <body>
             <div class="cadre_acceuil">
          
               <h2 class="deconnecte"><a href="connect_lapro_mail.php">Deconnexion</a></h2>
                <h1 class="titre_page"><div class="color_blue">Boite de réception</div></h1></br>
                
               
               <table>
                <caption>Messages reçus:</caption>  
                <thead>
                 <tr class="list_mail">
                  <th> Date </th>
                  <th> Heure </th>
                  <th> Nom de l\'expediteur </th>
                  <th> Prénom de l\'expediteur </th>
                  <th> Nom de l\'entreprise </th>
                  <th> Objet </th>
                  <th class="sup"> Supprimer </th>  
                 </tr>
                </thead>
                <tbody>
                  
          0
        5. Mon php ne devrais pas inclure l'ensemble dans le tableau comme ceci?
          <?php
          echo'<table>'
          //code php déja présent
          echo'</table>'
          ?>
          
          0
      2. Modérateur
        Je me demande si le souci ne viendrait pas de ma fonction pour inclure les fichiers....

        Testes comme ceci :
        <?php
        // Affichage des erreurs de code sur la page
        error_reporting(-1);
        
        
        // Fonctions utiles (à mettre éventuellement dans un autre fichier à include...)
        /**
        * Fonction pour afficher du debug.
        */
        function debug($value,$title=NULL){
          echo "<pre>";
           echo "--> debug:";
             if ($title){
               echo "<b>".$title." : </b>";
             }       
            if(is_array($value)){
              echo "<br>";
              print_r($value);
            }else{
              echo $value;
            }  
                echo "<br>";
                var_dump(debug_backtrace());
            echo "</pre>";  
         
         } 
         
        ?>
        <!DOCTYPE html>
        <html>
         <head>
          <title> Boite Mail - LA PROTONIC </title> 
          <?php
        	if(file_exists("head.php"){
             include("head.php");
        	 }else{
        	  debug("Fichier introuvable head.php","Error");
        	 }
          ?>   
          </head>
          <div class="fond_principal">
          <body>
           <div class="cadre_acceuil">
          
        
             <h2 class="deconnecte"><a href="connect_lapro_mail.php">Deconnexion</a></h2>
              <h1 class="titre_page"><div class="color_blue">Boite de réception</div></h1></br>
              
          	<?php	 
        	 // Juste pour les tests...
        	 debug(" DEBUT DU TABLEAU","Test");
        	?>   
             <table>
              <caption>Messages reçus:</caption>  
              <thead>
               <tr class="list_mail">
                <th> Date </th>
                <th> Heure </th>
                <th> Nom de l\'expediteur </th>
                <th> Prénom de l\'expediteur </th>
                <th> Nom de l\'entreprise </th>
                <th> Objet </th>
                <th class="sup"> Supprimer </th>  
               </tr>
              </thead>
              <tbody>
                <?php
        				if(file_exists("mail.inc.php"){
                 require("mail.inc.php");
        				 }else{
        				  debug("Fichier introuvable mail.inc.php","Error");
        				 }
                ?>
              </tbody>
              <tfoot>
               <tr class="list_mail">
                <th> Date </th>
                <th> Heure </th>
                <th> Nom de l\'expediteur </th>
                <th> Prénom de l\'expediteur </th>
                <th> Nom de l\'entreprise </th>
                <th> Adresse mail </th>
                <th class="sup"> Supprimer </th>
               </tr>
              </tfoot>
             </table>
        		 
        	<?php	 
        	 // Juste pour les tests...
        	 debug(" FIN DU TABLEAU","Test");
        	?>	 
           <!--FIN CODE A GARDER-->
           </div>
          </body>
         </div>
         
        </html>
        


        
        Et dans mail.inc.php
        <?php
        // Affichage des erreurs de code sur la page
        error_reporting(-1);
        
        //Include de la page de connexion à la BDD
        if(file_exists("connexion_bdd"){
           require("connexion_bdd");
        }else{
          debug("Fichier introuvable connexion_bdd.php","Error");
         }
             
        
        $sql = "SELECT num_mail FROM recpt_mail";
         $ligne=mysql_query($sql,$BDD) or die('<br> Erreur de reqête <br>'.$sql."<br>".mysql_error();
         $i=mysql_result($ligne,0,0);
         if($i){
         $SQL="SELECT date,heure,nomexp,prenomexp,nom_ent,objet FROM recpt_mail WHERE num_mail=$i";
         $donnees=mysql_query($SQL,$BDD) or die('<br> Erreur de reqête <br>'.$sql."<br>".mysql_error();     
         $Nb_rows = mysql_num_rows($donnees);
         if($Nb_rows){
          while($valeurs=mysql_fetch_array($donnees)) { 
            echo '<tr class="list_mail">';   
            echo '<td>'.$valeurs['date'].'</td>';
            echo'<td>'.$valeurs['heure'].'</td>';
            echo'<td>'.$valeurs['nomexp'].'</td>';
            echo'<td>'.$valeurs['prenomexp'].'</td>';
            echo'<td>'.$valeurs['nom_ent'].'</td>';
            echo'<td>'.$valeurs['objet'].'</td>';
            echo'<td class="sup">Supprimer</td>';
        		echo'</tr>';
           }
          }else{
        	 echo '<tr class="list_mail"><td colspan="7">';   
           debug("Aucun résultat trouvé.<br><b> REQUETE =></b><br>".$sql," NO RESULT >> donnees");
        	 echo '</td></tr>';
          }
         }else{
           echo '<tr class="list_mail"><td colspan="7">'; 
           debug(" i est vide "," >> i :!");
        	 echo '</td></tr>';
         }
         mysql_close($BDD);
        
        ?>
        

        0
        1. Page blanche :/ plus rien de rien ^^
          0
          1. Modérateur
            J'ai du mal à comprendre où est le souci....

            testes ça
            <?php
            // Affichage des erreurs de code sur la page
            //error_reporting(-1);
            
            
            // Fonctions utiles (à mettre éventuellement dans un autre fichier à include...)
            /**
            * Fonction pour afficher du debug.
            */
            function debug($value,$title=NULL){
              echo "<pre>";
               echo "--> debug:";
                 if ($title){
                   echo "<b>".$title." : </b>";
                 }       
                if(is_array($value)){
                  echo "<br>";
                  print_r($value);
                }else{
                  echo $value;
                }  
                    echo "<br>";
                    var_dump(debug_backtrace());
                echo "</pre>";  
             
             } 
             
            ?>
            <!DOCTYPE html>
            <html>
             <head>
              <title> Boite Mail - LA PROTONIC </title> 
              <?php
            	debug("Import du HEAD.PHP","");
              ?>   
              </head>
              <div class="fond_principal">
              <body>
               <div class="cadre_acceuil">
              
            
                 <h2 class="deconnecte"><a href="connect_lapro_mail.php">Deconnexion</a></h2>
                  <h1 class="titre_page"><div class="color_blue">Boite de réception</div></h1></br>
                  
              	<?php	 
            	 // Juste pour les tests...
            	 debug(" DEBUT DU TABLEAU","Test");
            	?>   
                 <table>
                  <caption>Messages reçus:</caption>  
                  <thead>
                   <tr class="list_mail">
                    <th> Date </th>
                    <th> Heure </th>
                    <th> Nom de l\'expediteur </th>
                    <th> Prénom de l\'expediteur </th>
                    <th> Nom de l\'entreprise </th>
                    <th> Objet </th>
                    <th class="sup"> Supprimer </th>  
                   </tr>
                  </thead>
                  <tbody>
                   <tr class="list_mail">
            			  <td>
            				test
            				</td>
            			  <td>
            				test
            				</td>
            			  <td>
            				test
            				</td>
            			  <td>
            				test
            				</td>
            			  <td>
            				test
            				</td>
            			  <td>
            				test
            				</td>
            			 </tr>
            			 
                  </tbody>
                  <tfoot>
                   <tr class="list_mail">
                    <th> Date </th>
                    <th> Heure </th>
                    <th> Nom de l\'expediteur </th>
                    <th> Prénom de l\'expediteur </th>
                    <th> Nom de l\'entreprise </th>
                    <th> Adresse mail </th>
                    <th class="sup"> Supprimer </th>
                   </tr>
                  </tfoot>
                 </table>
            		 
            	<?php	 
            	 // Juste pour les tests...
            	 debug(" FIN DU TABLEAU","Test");
            	?>	 
               <!--FIN CODE A GARDER-->
               </div>
              </body>
             </div>
             
            </html>
            
            0
        2. Moi aussi je t'avoue, j'ai réussi à résoudre les problèmes que j'avais sur les autres parties du site, mais sur ça je bloque complètement :/

          Merci de m'aider ;)

          Voici le résulat:

          --> debug:Import du HEAD.PHP
          array(1) {
          [0]=>
          array(4) {
          ["file"]=>
          string(75) "C:\Users\maxime\Desktop\UniServerZ\www\LA PROTONIC Site-Web\lapro_mail.php"
          ["line"]=>
          int(34)
          ["function"]=>
          string(5) "debug"
          ["args"]=>
          array(2) {
          [0]=>
          &string(18) "Import du HEAD.PHP"
          [1]=>
          &string(0) ""
          }
          }
          }
          Deconnexion

          Boite de réception

          --> debug:Test : DEBUT DU TABLEAU
          array(1) {
          [0]=>
          array(4) {
          ["file"]=>
          string(75) "C:\Users\maxime\Desktop\UniServerZ\www\LA PROTONIC Site-Web\lapro_mail.php"
          ["line"]=>
          int(47)
          ["function"]=>
          string(5) "debug"
          ["args"]=>
          array(2) {
          [0]=>
          &string(17) " DEBUT DU TABLEAU"
          [1]=>
          &string(4) "Test"
          }
          }
          }
          Messages reçus:
          Date Heure Nom de l\'expediteur Prénom de l\'expediteur Nom de l\'entreprise Objet Supprimer
          test test test test test test
          Date Heure Nom de l\'expediteur Prénom de l\'expediteur Nom de l\'entreprise Adresse mail Supprimer
          --> debug:Test : FIN DU TABLEAU
          array(1) {
          [0]=>
          array(4) {
          ["file"]=>
          string(75) "C:\Users\maxime\Desktop\UniServerZ\www\LA PROTONIC Site-Web\lapro_mail.php"
          ["line"]=>
          int(100)
          ["function"]=>
          string(5) "debug"
          ["args"]=>
          array(2) {
          [0]=>
          &string(15) " FIN DU TABLEAU"
          [1]=>
          &string(4) "Test"
          }
          }
          }


          Your soul is mine to keep
          0
          1. Au moins, le tableau est entier cette fois ^^
            0
          2. Modérateur
            ok
            ajoutes y juste l'import du HEAD et retestes..

            	if(file_exists("head.php")){
                 include("head.php");
            	 }else{
            	  debug("Fichier introuvable head.php","Error");
            	 }
            
            0
          3. Il y a ça:


            --> debug:Test : DEBUT DU TABLEAU
            array(1) {
            [0]=>
            array(4) {
            ["file"]=>
            string(75) "C:\Users\martine\Desktop\UniServerZ\www\LA PROTONIC Site-Web\lapro_mail.php"
            ["line"]=>
            int(51)
            ["function"]=>
            string(5) "debug"
            ["args"]=>
            array(2) {
            [0]=>
            &string(17) " DEBUT DU TABLEAU"
            [1]=>
            &string(4) "Test"
            }
            }
            }


            Ici mon tableau avec la mise en forme et la ligne remplie de 'test'

            et le debug


            --> debug:Test : FIN DU TABLEAU
            array(1) {
            [0]=>
            array(4) {
            ["file"]=>
            string(75) "C:\Users\martine\Desktop\UniServerZ\www\LA PROTONIC Site-Web\lapro_mail.php"
            ["line"]=>
            int(104)
            ["function"]=>
            string(5) "debug"
            ["args"]=>
            array(2) {
            [0]=>
            &string(15) " FIN DU TABLEAU"
            [1]=>
            &string(4) "Test"
            }
            }
            }
            0
          4. Modérateur
            oki.
            laisse la ligne de test et ajoutes en dessous l'include de ton fichier mail php

             <?php
                if(file_exists("mail.inc.php")){
                     require("mail.inc.php");
                 }else{
                  debug("Fichier introuvable mail.inc.php","Error");
                 }
                    ?>
            
            0
          5. Modérateur
            Sachant que dans le fichier mail.inc.php il y a une erreur dans l'include au fichier de connexion à la BDD.
            Il faut corriger en remplaçant par ceci :

            //Include de la page de connexion à la BDD
            if(file_exists("connexion_bdd")){
               require("connexion_bdd");
            }else{
              debug("Fichier introuvable connexion_bdd.php","Error");
             }
            


            EDIT : Tu as bien créé le fichier connexion_bdd.php ? (dans lequel tu as mis les infos de connexion à ta base ? )
            0