Partage
  • Partager sur Facebook
  • Partager sur Twitter

echo reste en mémoire

    25 novembre 2020 à 9:56:51

    Alors je viens d'afficher l'id dans mon tableau, maintenant je dois remplacer l'id et faire comprendre au programme que je veux toute les champs de cette id 

          $reponse = $bdd->query('SELECT image, ref, designation, marque, ID_proprietaire, prix, MAJ FROM test ORDER BY ID DESC LIMIT 1');
                        // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
                        while ($donnees = $reponse->fetch()){
                            echo '<img src="uploads/'.$donnees['image'].'" />';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['ref']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['designation']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['marque']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['ID_proprietaire']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['prix']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['MAJ']) .  '</p>';
                        }


    je dois mettre "select tout les champs de cette id"

     $reponse = $bdd->query('SELECT image, ref, designation, marque, ID_proprietaire, prix, MAJ FROM test ORDER BY ID DESC LIMIT 1');
                        // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
                        while ($donnees = $reponse->fetch()){
                            echo '<img src="uploads/'.$donnees['image'].'" />';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['ref']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['designation']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['marque']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['ID_proprietaire']) .  '</p>';
                                     
    	                        $req = $bdd->query('SELECT * FROM contact WHERE id = ID_proprietaire');                       
    	                        while ($donnees = $req->fetch())
    			                {
    			                	echo '' .htmlspecialchars($donnees['nom_contact']) .  '</p>';
    			                }                       
    	                        $reponse->closeCursor(); 
                              
    	                        echo "</td><td> ";
    	                        echo '' .htmlspecialchars($donnees['prix']) .  '</p>';
    	                        echo "</td><td> ";
    	                        echo '' .htmlspecialchars($donnees['MAJ']) .  '</p>';
    	                    
    	                }


    et bah voila !!!!!!!!!!!!!!!!!!!!!

         $reponse = $bdd->query('SELECT image, ref, designation, marque, ID_proprietaire, prix, MAJ FROM test ORDER BY ID DESC LIMIT 1');
                        // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
                        while ($donnees = $reponse->fetch()){
                            echo '<img src="uploads/'.$donnees['image'].'" />';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['ref']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['designation']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['marque']) .  '</p>';
                            echo "</td><td> ";
                            echo '' .htmlspecialchars($donnees['ID_proprietaire']) .  '</p>';
                                      
    	                        $req = $bdd->prepare('SELECT * FROM contact WHERE id = ?');    
    	                        $req->execute(array($donnees['ID_proprietaire']));                   
    	                        while ($donnees = $req->fetch())
    			                {
    			                	echo '' .htmlspecialchars($donnees['nom']) .  '</p>';
    			                	echo '' .htmlspecialchars($donnees['prenom']) .  '</p>';
    			                	echo '' .htmlspecialchars($donnees['mail']) .  '</p>';
    			                	echo '' .htmlspecialchars($donnees['telephone']) .  '</p>';
    			                	echo '' .htmlspecialchars($donnees['entreprise']) .  '</p>';
    			                }                       
    	                        $reponse->closeCursor(); 
    
    	                        echo "</td><td> ";
    	                        echo '' .htmlspecialchars($donnees['prix']) .  '</p>';
    	                        echo "</td><td> ";
    	                        echo '' .htmlspecialchars($donnees['MAJ']) .  '</p>';
    	                    
    	                }

    mais du coup j'ai un problème d'actualisation de contact mdrrr.............................

    si j'ajoute un contact dans mon formulaire contact il ne saffiche pas dans la liste déroulante du formulaire produits 

    c'est bizzare j'ai juste rajouté ID_contact ..

    		$reponse = $bdd->query('SELECT t.commercial nom_commercial, c.nom nom_contact, c.prenom prenom_contact, c.mail 	mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
                      	FROM contact c
                        INNER JOIN test t
                        ON t.ID_proprietaire = c.ID ');					
                        while ($donnees = $reponse->fetch()){                 
                        ?>
                        <option value=<?php echo $donnees['ID_contact'];?>> 
                        <?php echo $donnees['nom_contact'];?>
                        <?php echo "-";?>
                        <?php echo $donnees['prenom_contact'];?>
                        </option>
                        <?php
                        }
                        ?>

    c'est bon ^^ j'ai remplacé par : 

    $reponse = $bdd->query('SELECT t.commercial nom_commercial, c.nom nom_contact, c.prenom prenom_contact, c.mail 	mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
                      	FROM contact c
                        INNER JOIN test t
                        ON t.ID_proprietaire = c.ID ');					
                        $reponse = $bdd->query('SELECT * FROM contact');
                        while ($donnees = $reponse->fetch())
                        {
                        ?>
                                   <option value="<?php echo $donnees['id']; ?>"> <?php echo"".$donnees['nom']."  ".$donnees['prenom'].""; ?></option>
                        <?php
                        }                   
                        ?>




    -
    Edité par BaptDam 25 novembre 2020 à 10:52:30

    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2020 à 10:54:54

      Avec ton second code du message ci-dessus, tu écrases $donnees de la première boucle avec la deuxième. C'est une des raisons pour lesquelles on recommande un nommage pertinent.

      Tu devrais faire à nouveau une jointure, parce que là tu as une requête dans une boucle et cette boucle est déjà sur les résultats d'une autre requête, c'est typique d'un cas où une jointure permet de gagner en performances.

      Ton HTML résultant va être horrible, avec des fermetures de paragraphes sans ouverture, et je ne te parle pas des lignes et cellules du tableau.

      J'aimerais bien voir le code entier actuel, parce que j'ai l'impression qu'il y a largement de quoi optimiser des trucs faciles.

      -
      Edité par Ymox 25 novembre 2020 à 10:57:23

      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2020 à 11:02:07

        Tu devrais faire à nouveau une jointure, parce que là tu as une requête dans une boucle et cette boucle est déjà sur les résultats d'une autre requête, c'est typique d'un cas où une jointure permet de gagner en performances.

        Ca explique sûrement pourquoi je n'affiche pas 

        	                        echo "</td><td> ";
        	                        echo '' .htmlspecialchars($donnees['prix']) .  '</p>';
        	                        echo "</td><td> ";
        	                        echo '' .htmlspecialchars($donnees['MAJ']) .  '</p>';

        je peu afficher tous ce qu'il y a avant  mais après avoir mis 

                       
        	                        $req = $bdd->prepare('SELECT * FROM contact WHERE id = ?');    
        	                        $req->execute(array($donnees['ID_proprietaire']));                   
        	                        while ($donnees = $req->fetch())
        			                {
        			                	echo '' .htmlspecialchars($donnees['nom']) .  '</p>';
        			                	echo '' .htmlspecialchars($donnees['prenom']) .  '</p>';
        			                	echo '' .htmlspecialchars($donnees['mail']) .  '</p>';
        			                	echo '' .htmlspecialchars($donnees['telephone']) .  '</p>';
        			                	echo '' .htmlspecialchars($donnees['entreprise']) .  '</p>';
        			                }                       
        	                        $reponse->closeCursor(); 

        je n'affiche plus rien 


        <!DOCTYPE html>
        <html>
            <head>
                <meta charset="utf-8" />
                <title>Mini-chat</title>
                 <style>
                    form{
                        text-align:center;
                    }
                </style>
            </head>
        <body>
            <form action="reception_produit.php" method="post" enctype="multipart/form-data"> 
                <div id="formulaire">
                <!-- Définition du tableau -->
                <center><table border="1" id="formulaire" style="text-align:center">
                
                    <!-- Balise caption pour définir le titre d'un tableau -->
                    <h1 style="  font-family: serif; background: #0066CC none; color: white; border: 3px dotted #9999FF; padding: 0.3em; text-align: center; letter-spacing: 0.3em;">FORMULAIRE</h1>
                    <!-- Corps du tableau -->
                    <tbody>
                        <!-- La balise tr défini une ligne du tableau -->
                        <tr rowspan="2"> <th>Image</th><th>Numéro_fournisseur</th><th>Choix_famille</th><th>ref</th><th>Désignation</th><th>marque</th><th>Prix</th></th></tr>
                        <tr id="formulaire"> </tr> 
                            <!-- La balise td défini une cellule du corps du tableau -->
                        <tr>  
        
                        <td> <label for="image"></label><input type="file" name="monfichier" /></td>
                        <td> <label for="personne">
                        <select name="ID_contact">
                            <?php
                             try{
                                $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
                                } 
                                catch(Exception $e){
                                    die('Erreur : '.$e->getMessage());
                                }
        
                           // $reponse = $bdd->query('SELECT * FROM contact');
        
        
        					$reponse = $bdd->query('SELECT t.commercial nom_commercial, c.nom nom_contact, c.prenom prenom_contact, c.mail 	mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
                          	FROM contact c
                            INNER JOIN test t
                            ON t.ID_proprietaire = c.ID ');					
                            $reponse = $bdd->query('SELECT * FROM contact');
                            while ($donnees = $reponse->fetch())
                            {
                            ?>
                                       <option value="<?php echo $donnees['id']; ?>"> <?php echo"".$donnees['nom']."  ".$donnees['prenom'].""; ?></option>
                            <?php
                            }                   
                            ?>
        
        
                         </select>
        
                            <td> <label for="famille">
        						<select name="nom_sous_type"><?php
                                $reponse = $bdd->query('SELECT  t.nom nom_type, s.nom nom_sous_type
                                                        FROM sous_type s
                                                        INNER JOIN type t
                                                        ON t.ID = s.id_type');
                                $type='';
                               ?> <optgroup label=""> <?php
                                while ($donnees = $reponse->fetch()){
                                    if($type != $donnees['nom_type']){
                                    ?> </optgroup> <optgroup label="<?php echo $donnees['nom_type']; ?>">  <?php         
                                    }
                                    ?> <option value=<?php echo $donnees['nom_sous_type'];?>> <?php echo $donnees['nom_sous_type'];?></option> <?php            
                                    $type = $donnees['nom_type'];
                                }
                                    
                                ?>
                                </optgroup> 
                                </select>
                                            <td> <label for="ref"></label><input type="text" name="ref" /></td>
                            <td> <label for="designation"></label><input type="text" name="designation" /></td>
                            <td> <label for="marque"></label><input type="text" name="marque" /></td>
                            <td> <label for="prix"></label><input type="number" name="prix" /></td>
                            <td> <label for="submit"></label><input type="submit" value="Envoyer le fichier" /></td>
                            </tr>                                         
                    </tbody>              
                </table> </center>
                </div> 
             </form>
            <?php
        try{
            $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
            } 
            catch(Exception $e){
                die('Erreur : '.$e->getMessage());
            }
        ?>
        <div id="listeProduit">
            <!-- Définition du tableau -->
            <center><table border="1" id="tabListeProduit" style="text-align:center">
                
                <!-- Balise caption pour définir le titre d'un tableau -->
                <h1 style="  font-family: serif; background: #0066CC none; color: white; border: 3px dotted #9999FF; padding: 0.3em; text-align: center; letter-spacing: 0.3em;">Outillage de mise à la terre</h1>
                <!-- Corps du tableau -->
                <tbody>
                    <!-- La balise tr défini une ligne du tableau -->
                    <tr rowspan="2">
                        
                    </tr>
                        <th rowspan="2" width="10%">image</th>
                        <th rowspan="2" width="10%">Ref</th>
                        <th rowspan="2" width="10%">Désignation</th>
                        <th rowspan="2" width="10%">marque</th>
                        <th rowspan="2" width="10%">commercial</th>
                        <th rowspan="2" width="5%">Prix</th></tr>
                        <th rowspan="2" width="7%">Date de la MAJ</th></tr>
                        <tr id="tabListeProduitEntete"> 
                    </tr> 
                            <!-- La balise td défini une cellule du corps du tableau -->
                        <tr><td> 
                         <?php
                            // Redirection du visiteur vers la page du minichat
                            // Récupération des 10 derniers messages
                            $reponse = $bdd->query('SELECT image, ref, designation, marque, ID_proprietaire, prix, MAJ FROM test ORDER BY ID DESC LIMIT 1');
                            // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
                            while ($donnees = $reponse->fetch()){
                                echo '<img src="uploads/'.$donnees['image'].'" />';
                                echo "</td><td> ";
                                echo '' .htmlspecialchars($donnees['ref']) .  '</p>';
                                echo "</td><td> ";
                                echo '' .htmlspecialchars($donnees['designation']) .  '</p>';
                                echo "</td><td> ";
                                echo '' .htmlspecialchars($donnees['marque']) .  '</p>';
                                echo "</td><td> ";
                                echo '' .htmlspecialchars($donnees['ID_proprietaire']) .  '</p>';
                                          
        	                        $req = $bdd->prepare('SELECT * FROM contact WHERE id = ?');    
        	                        $req->execute(array($donnees['ID_proprietaire']));                   
        	                        while ($donnees = $req->fetch())
        			                {
        			                	echo '' .htmlspecialchars($donnees['nom']) .  '</p>';
        			                	echo '' .htmlspecialchars($donnees['prenom']) .  '</p>';
        			                	echo '' .htmlspecialchars($donnees['mail']) .  '</p>';
        			                	echo '' .htmlspecialchars($donnees['telephone']) .  '</p>';
        			                	echo '' .htmlspecialchars($donnees['entreprise']) .  '</p>';
        			                }                       
        	                        $reponse->closeCursor(); 
        
        	                        echo "</td><td> ";
        	                        echo '' .htmlspecialchars($donnees['prix']) .  '</p>';
        	                        echo "</td><td> ";
        	                        echo '' .htmlspecialchars($donnees['MAJ']) .  '</p>';
        	                    
        	                }
                              
                          //	$reponse = $bdd->query('SELECT t.commercial nom_commercial, c.nom nom_contact, c.prenom prenom_contact, c.mail 	mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact
                          //	FROM contact c
                           // INNER JOIN test t
                           // ON t.ID_proprietaire = c.ID '); 
                       		//$req = $bdd->prepare('INSERT INTO t (nom_commercial) VALUES(?, ?, ?, ?, ?)');
                            //$req->execute(array($_POST['nom_contact'], $_POST['prenom_contact'], $_POST['mail_contact'], $_POST['telephone_contact'], $_POST['entreprise_contact']));	
                           // while ($donnees = $reponse->fetch()){ echo '' .htmlspecialchars($donnees['nom_contact']) .  '</p>';}
                    		//$reponse->closeCursor(); 	
                        ?>              
        
                        </td></tr>      
                </tbody>
             </table></center>     
        </div> 
        </body>
        </html>
         



        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2020 à 12:18:36

          Si jamais, pour le dernier code, tu peux choisir "PHP" dans la liste de langages, mais penses-y s'il te plaît.

          Je ne sais pas ce que tu voulais dire par "anticiper du texte", mais tu as conservé les chaînes vides pour les concaténations. En l'état, ça reste inutile.

          Tu as toujours deux connexions à la base de données, les lignes 87 à 94 sont toujours inutiles.

          Pour la seconde partie (deuxième tableau), tu peux effectivement le faire en une seule requête avec une jointure, d'autant que tu récupères le propriétaire et non pas une liste.

          Après quoi on s'attaquera au HTML, parce qu'actuellement c'est vraiment pas terrible. Des balises vides (sans tenir compte de ce qui est dû aux boucles), des balises qui n'ont rien à faire là où elles sont, des balises pas fermées ou pas ouvertes (et non, ce n'est pas parce que tu pensais les avoir ouvertes quelque part et fermées ailleurs), une balise obsolète, des attributs sur de mauvaises balises… Tu vas avoir de la peine a réaliser la mise en page finale.

          • Partager sur Facebook
          • Partager sur Twitter
            25 novembre 2020 à 13:22:11

            Je ne sais pas ce que tu voulais dire par "anticiper du texte", mais tu as conservé les chaînes vides pour les concaténations. En l'état, ça reste inutile.


            Pour cette partie c'est fait

            Tu as toujours deux connexions à la base de données, les lignes 87 à 94 sont toujours inutiles

            Pour cette partie c'est fait

            j'ai pas très bien compris cette partie :

            Avec ton second code du message ci-dessus, tu écrases $donnees de la première boucle avec la deuxième. C'est une des raisons pour lesquelles on recommande un nommage pertinent.

            je dois changer le nom de cette variable ? pour un des deux label 

            <td> <label for="personne">
            		                <select name="ID_contact">
            		                    <?php
            		                     try{
            		                        $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
            		                        } 
            		                        catch(Exception $e){
            		                            die('Erreur : '.$e->getMessage());
            		                        }
            							$reponse = $bdd->query('SELECT t.commercial nom_commercial, c.nom nom_contact, c.prenom prenom_contact, c.mail 	mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
            		                  	FROM contact c
            		                    INNER JOIN test t
            		                    ON t.ID_proprietaire = c.ID ');					
            		                    $reponse = $bdd->query('SELECT * FROM contact');
            		                    while ($donnees = $reponse->fetch())
            		                    {
            		                    ?>
            		                    <option value="<?php echo $donnees['id']; ?>"> <?php echo"".$donnees['nom']."  ".$donnees['prenom'].""; ?></option>
            		                    <?php } ?>                 
            	                	</select>
            
            		                    <td> <label for="famille">
            								<select name="nom_sous_type"><?php
            		                        $reponse = $bdd->query('SELECT  t.nom nom_type, s.nom nom_sous_type
            		                                                FROM sous_type s
            		                                                INNER JOIN type t
            		                                                ON t.ID = s.id_type');
            		                        $type='';
            		                       ?> <optgroup label=""> <?php
            		                        while ($donnees = $reponse->fetch()){
            		                            if($type != $donnees['nom_type']){
            		                            ?> </optgroup> <optgroup label="<?php echo $donnees['nom_type']; ?>">  <?php         
            		                            }
            		                            ?> <option value=<?php echo $donnees['nom_sous_type'];?>> <?php echo $donnees['nom_sous_type'];?></option> <?php            
            		                            $type = $donnees['nom_type'];
            		                        }
            		                            
            		                        ?>
            		                        </optgroup> 
            		                        </select>
            




            Pour la seconde partie (deuxième tableau), tu peux effectivement le faire en une seule requête avec une jointure, d'autant que tu récupères le propriétaire et non pas une liste.

            J'ai essayé de le simplifier comme je pouvais mais pour la partie jointure je commence à bloquer, j'ai modifier des ligne 98 à 121, je pense être sur la bonne voie ? mais avec ce que je viens de modifier quand je fais envoyer ca  stocke dans ma bdd mais ca naffiche pas 

            <!DOCTYPE html>
            <html>
                <head>
                    <meta charset="utf-8" />
                    <title>Mini-chat</title>
                     <style>
                        form{
                            text-align:center;
                        }
                    </style>
                </head>
            	<body>
            	    <form action="reception_produit.php" method="post" enctype="multipart/form-data"> 
            	        <div id="formulaire">
            	        <!-- Définition du tableau -->
            	        <center><table border="1" id="formulaire" style="text-align:center">
            	            <!-- Balise caption pour définir le titre d'un tableau -->
            	            <h1 style="  font-family: serif; background: #0066CC none; color: white; border: 3px dotted #9999FF; padding: 0.3em; text-align: center; letter-spacing: 0.3em;">FORMULAIRE</h1>
            	            <!-- Corps du tableau -->
            	            <tbody>
            	                <!-- La balise tr défini une ligne du tableau -->
            	                <tr rowspan="2"> <th>Image</th><th>Numéro_fournisseur</th><th>Choix_famille</th><th>ref</th><th>Désignation</th><th>marque</th><th>Prix</th></th></tr>
            	                <tr id="formulaire"> </tr> 
            	                    <!-- La balise td défini une cellule du corps du tableau -->
            	                <tr>  
            		                <td> <label for="image"></label><input type="file" name="monfichier" /></td>
            		                <td> <label for="personne">
            		                <select name="ID_contact">
            		                    <?php
            		                     try{
            		                        $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
            		                        } 
            		                        catch(Exception $e){
            		                            die('Erreur : '.$e->getMessage());
            		                        }
            							$reponse = $bdd->query('SELECT t.commercial nom_commercial, c.nom nom_contact, c.prenom prenom_contact, c.mail 	mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
            		                  	FROM contact c
            		                    INNER JOIN test t
            		                    ON t.ID_proprietaire = c.ID ');					
            		                    $reponse = $bdd->query('SELECT * FROM contact');
            		                    while ($donnees = $reponse->fetch())
            		                    {
            		                    ?>
            		                    <option value="<?php echo $donnees['id']; ?>"> <?php echo"".$donnees['nom']."  ".$donnees['prenom'].""; ?></option>
            		                    <?php } ?>                 
            	                	</select>
            
            		                    <td> <label for="famille">
            								<select name="nom_sous_type"><?php
            		                        $reponse = $bdd->query('SELECT  t.nom nom_type, s.nom nom_sous_type
            		                                                FROM sous_type s
            		                                                INNER JOIN type t
            		                                                ON t.ID = s.id_type');
            		                        $type='';
            		                       ?> <optgroup label=""> <?php
            		                        while ($donnees = $reponse->fetch()){
            		                            if($type != $donnees['nom_type']){
            		                            ?> </optgroup> <optgroup label="<?php echo $donnees['nom_type']; ?>">  <?php         
            		                            }
            		                            ?> <option value=<?php echo $donnees['nom_sous_type'];?>> <?php echo $donnees['nom_sous_type'];?></option> <?php            
            		                            $type = $donnees['nom_type'];
            		                        }
            		                            
            		                        ?>
            		                        </optgroup> 
            		                        </select>
            		                    <td> <label for="ref"></label><input type="text" name="ref" /></td>
            		                    <td> <label for="designation"></label><input type="text" name="designation" /></td>
            		                    <td> <label for="marque"></label><input type="text" name="marque" /></td>
            		                    <td> <label for="prix"></label><input type="number" name="prix" /></td>
            		                    <td> <label for="submit"></label><input type="submit" value="Envoyer le fichier" /></td>
            	                </tr>                                         
            	            </tbody>              
            	        </table> </center>
            	        </div> 
            	    </form>
            		<div id="listeProduit">
            		    <!-- Définition du tableau -->
            		    <center><table border="1" id="tabListeProduit" style="text-align:center">      
            		        <!-- Balise caption pour définir le titre d'un tableau -->
            		        <h1 style="  font-family: serif; background: #0066CC none; color: white; border: 3px dotted #9999FF; padding: 0.3em; text-align: center; letter-spacing: 0.3em;">Outillage de mise à la terre</h1>
            		        <!-- Corps du tableau -->
            	        <tbody>
            	            <!-- La balise tr défini une ligne du tableau -->
            	            <tr rowspan="2">               
            	            </tr>
            	                <th rowspan="2" width="10%">image</th>
            	                <th rowspan="2" width="10%">Ref</th>
            	                <th rowspan="2" width="10%">Désignation</th>
            	                <th rowspan="2" width="10%">marque</th>
            	                <th rowspan="2" width="10%">commercial</th>
            	                <th rowspan="2" width="5%">Prix</th></tr>
            	                <th rowspan="2" width="7%">Date de la MAJ</th></tr>
            	                <tr id="tabListeProduitEntete"> 
            	            </tr> 
            	                <tr><td> 
            	                 <?php
            	                		$reponse = $bdd->query('SELECT t.commercial commercial_test, t.image image_test, t.ref ref_test, t.designation designation_test, t.marque marque_test, t.prix prix_test, c.nom nom_contact, c.prenom prenom_contact, c.mail 	mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
            		                  	FROM contact c
            		                    INNER JOIN test t
            		                    ON t.ID_proprietaire = c.ID ');	
            
            	                    while ($donnees = $reponse->fetch()){
            	                        echo '<img src="uploads/'.$donnees['image_test'].'" />';
            	                        echo "</td><td> ";
            	                        echo htmlspecialchars($donnees['ref_test']);
            	                        echo "</td><td> ";
            	                        echo htmlspecialchars($donnees['designation_test']);
            	                        echo "</td><td> ";
            	                        echo htmlspecialchars($donnees['marque_test']);
            	                        echo "</td><td> ";	                        	                                  
            		                	echo htmlspecialchars($donnees['nom_contact']);echo "-";
            		                	echo htmlspecialchars($donnees['prenom_contact']);echo "</br>";
            		                	echo htmlspecialchars($donnees['mail_contact']);echo "</br>";
            		                	echo htmlspecialchars($donnees['telephone_contact']);echo "</br>";
            		                	echo htmlspecialchars($donnees['entreprise_contact']);
            	                        echo "</td><td> ";
            	                        echo htmlspecialchars($donnees['prix_test']);
            	                        echo "</td><td> ";
            	                        echo htmlspecialchars($donnees['MAJ']);
            		                     $req->closeCursor(); 
            		                }	
            	                ?>              
                            </td></tr>      
            		    </tbody>
            		    </table></center>     
            		</div> 
            	</body>
            </html>
             

            -
            Edité par BaptDam 25 novembre 2020 à 13:27:07

            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2020 à 17:08:16

              Pour ce qui est de remplacer deux requêtes par une jointure, c'est uniquement pour simplifier les deux sélections, l'insertion doit rester — comment pourrais-tu remplacer une insertion par une sélection ?  ;)

              Toujours cette histoire de remplacement par une jointure : ça t'évite d'écraser la requête de la "première boucle" (qui affiche les lignes, dernier bloc de code d'ici, ligne 123) avec celle de "la deuxième boucle" (qui affiche les informations du contact, dernier bloc de code d'ici, ligne 136).

              Du dernier code ci-dessus : les lignes 36 à 39, elles servent à quoi ? Parce qu'à nouveau tu écrases les résultats de la requête par les résultats d'une autre ligne 40…

              • Partager sur Facebook
              • Partager sur Twitter
                26 novembre 2020 à 8:11:26

                Bonjour :), 

                Alors ca reste un peu flou quand tu me parles d'insertion car pour moi la seul insertion que j'ai c'est : 

                  $req = $bdd->prepare('INSERT INTO test (image, ref, designation, marque, prix, ID_proprietaire, choix_famille, MAJ) VALUES(?, ?, ?, ?, ?, ?, ?, NOW())');
                                            $req->execute(array($namefile, $_POST['ref'], $_POST['designation'], $_POST['marque'], $_POST['prix'], $_POST['ID_contact'], $_POST['nom_sous_type']));

                 mais je vais regarder de mon coté comment je peux remplacer une insertion par une sélection même si j'ai pas très bien compris,

                je comprends que je dois simplifier mon code par des jointures pour éviter d'avoir des boucle dans des boucle combiné à des requête.

                Je comprends pas pourquoi je ne peux pas afficher mes valeur: 

                         <?php
                	         $reponse = $bdd->query('SELECT t.commercial commercial_test, t.image image_test, t.ref ref_test, t.designation designation_test, t.marque marque_test, t.prix prix_test, c.nom nom_contact, c.prenom prenom_contact, c.mail  mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
                                            FROM contact c
                                            INNER JOIN test t
                                            ON t.ID_proprietaire = c.ID ');	        		                 		                   		                    	        
                                        while ($donnees = $reponse->fetch()){
                                            echo '<img src="uploads/'.$donnees['image_test'].'" />';
                                            echo "</td><td> ";
                                            echo htmlspecialchars($donnees['ref_test']);
                                            echo "</td><td> ";
                                            echo htmlspecialchars($donnees['designation_test']);
                                            echo "</td><td> ";
                                            echo htmlspecialchars($donnees['marque_test']);
                                            echo "</td><td> ";                                                               
                                            echo htmlspecialchars($donnees['nom_contact']);echo "-";
                                            echo htmlspecialchars($donnees['prenom_contact']);echo "</br>";
                                            echo htmlspecialchars($donnees['mail_contact']);echo "</br>";
                                            echo htmlspecialchars($donnees['telephone_contact']);echo "</br>";
                                            echo htmlspecialchars($donnees['entreprise_contact']);
                                            echo "</td><td> ";
                                            echo htmlspecialchars($donnees['prix_test']);
                                            echo "</td><td> ";
                                            echo htmlspecialchars($donnees['MAJ']);
                                             $reponse->closeCursor();
                                        } 
                	                ?> 

                ca me paraissait pas mal 

                ligne 36 à 39 du coup je vais supprimer ces lignes elle ne me serve pas surtout quand je regarde à froid j'ai pas besoin d'une jointure ici c'est une liste déroulante simple . 

                je vais voir si j'arrive à trouver ou j'écrase encore des requête   



                -
                Edité par BaptDam 26 novembre 2020 à 8:20:00

                • Partager sur Facebook
                • Partager sur Twitter
                  26 novembre 2020 à 8:45:03

                  Tu ne peux pas remplacer une insertion par une sélection. C'est comme si tu voulais, au lieu de manger, ressortir quelque chose… J'ai bien dit dans mon message précédent que ce n'était pas possible, pourtant.

                  Quand aux écrasements, j'ai donné les lignes concernées, il n'y a pas de souci avec ce que tu mentionnes à nouveau ci-dessus qui était bien plus bas.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 novembre 2020 à 8:50:21

                    J'avais mal compris, je n'ais pas remplacé mon insertion par une selection désolé si je mélange tout mais 

                    $req = $bdd->prepare('INSERT INTO test (image, ref, designation, marque, prix, ID_proprietaire, choix_famille, MAJ) VALUES(?, ?, ?, ?, ?, ?, ?, NOW())');
                                              $req->execute(array($namefile, $_POST['ref'], $_POST['designation'], $_POST['marque'], $_POST['prix'], $_POST['ID_contact'], $_POST['nom_sous_type']));
                    

                    J'ai pas touché à cette ligne 

                    j'essaye d'afficher mes paramètre avec ma jointure je comprends pourquoi j'ai aucun message d'erreur et aucun paramètre qui s'affiche  

                      $reponse = $bdd->query('SELECT t.commercial commercial_test, t.image image_test, t.ref ref_test, t.designation designation_test, t.marque marque_test, t.prix prix_test, c.nom nom_contact, c.prenom prenom_contact, c.mail  mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
                                                FROM contact c
                                                INNER JOIN test t
                                                ON t.ID_proprietaire = c.ID ');	   
                                            while ($donnees = $reponse->fetch()){
                                            	echo "bonjour"; 
                                                echo '<img src="uploads/'.$donnees['image_test'].'" />';
                                                echo "</td><td> "; echo "bonjour"; 
                                                echo htmlspecialchars($donnees['ref_test']);
                                                echo "</td><td> "; echo "bonjour"; 
                                                echo htmlspecialchars($donnees['designation_test']);
                                                echo "</td><td> ";
                                                echo htmlspecialchars($donnees['marque_test']);
                                                echo "</td><td> ";                                                               
                                                echo htmlspecialchars($donnees['nom_contact']);echo "-";
                                                echo htmlspecialchars($donnees['prenom_contact']);echo "</br>";
                                                echo htmlspecialchars($donnees['mail_contact']);echo "</br>";
                                                echo htmlspecialchars($donnees['telephone_contact']);echo "</br>";
                                                echo htmlspecialchars($donnees['entreprise_contact']);
                                                echo "</td><td> ";
                                                echo htmlspecialchars($donnees['prix_test']);
                                                echo "</td><td> ";
                                                echo htmlspecialchars($donnees['MAJ']);
                                                 $reponse->closeCursor();
                                            } 
                    	                ?>



                    j'ai simplifié le code pour me focaliser sur la partie qui me pose problème pour l'instant , je reste bloqué sur l'affichage je ne sais pas pourquoi je stocke dans ma table mais que j'affiche pas 

                    formulaire: 

                    <!DOCTYPE html>
                    <html>
                        <head>
                            <meta charset="utf-8" />
                      <title>Notes</title>
                    </head>
                    <body>
                    		<form method="post" action="jointure2_contact.php"> 
                    	 	       <td> <label for="personne">
                    		                <select name="ID_contact">
                    		                    <?php
                    		                     try{
                    		                        $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
                    		                        } 
                    		                        catch(Exception $e){
                    		                            die('Erreur : '.$e->getMessage());
                    		                        }				
                    		                    $req2 = $bdd->query('SELECT * FROM contact');
                    		                    while ($donnees2 = $req2->fetch())
                    		                    {
                    		                    ?>
                    		                    <option value="<?php echo $donnees1['id']; ?>"> <?php echo"".$donnees2=['nom']."  ".$donnees2['prenom'].""; ?></option>
                    		                    <?php } ?>                 
                    	                	</select>
                    
                    		                    <td> <label for="famille">
                    								<select name="nom_sous_type"><?php
                    		                        $req1 = $bdd->query('SELECT  t.nom nom_type, s.nom nom_sous_type
                    		                                                FROM sous_type s
                    		                                                INNER JOIN type t
                    		                                                ON t.ID = s.id_type');
                    		                        $type='';
                    		                       ?> <optgroup label=""> <?php
                    		                        while ($donnees1 = $req1->fetch()){
                    		                            if($type != $donnees1['nom_type']){
                    		                            ?> </optgroup> <optgroup label="<?php echo $donnees['nom_type']; ?>">  <?php         
                    		                            }
                    		                            ?> <option value=<?php echo $donnees1['nom_sous_type'];?>> <?php echo $donnees1['nom_sous_type'];?></option> <?php            
                    		                            $type = $donnees1['nom_type'];
                    		                        }		                            
                    		                        ?>
                    		                        </optgroup> 
                    		                        </select>
                    		                        <td> <label for="submit"></label><input type="submit" value="Envoyer le fichier" /></td>
                            </form>
                    <?php
                    						
                                                $req3 = $bdd->query('SELECT t.ID_proprietaire ID_proprietaire_test, c.ID ID_contact
                                                FROM contact c
                                                INNER JOIN test t
                                                ON t.ID_proprietaire = c.ID limit 1 ');	 
                    
                     $req2 = $bdd->prepare('SELECT * FROM contact WHERE id = ?');    
                    		                        $req2->execute(array($donnees2['ID_proprietaire']));                   
                    		                        while ($donnees2 = $req2->fetch())
                    				                {
                    				                	echo htmlspecialchars($donnees2['nom']);
                    				                	echo htmlspecialchars($donnees2['prenom']);
                    				                	echo htmlspecialchars($donnees2['mail']);
                    				                	echo htmlspecialchars($donnees2['telephone']);
                    				                	echo htmlspecialchars($donnees2['entreprise']);
                    				                }                
                    ?>
                    	</body>
                    </html>
                    
                        
                          

                    reception: 

                    <!DOCTYPE html>
                    <html>
                        <head>
                            <meta charset="utf-8" />
                      <title>Notes</title>
                    </head>
                    <body>
                    <?php
                            try{
                            $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
                            } 
                            catch(Exception $e){
                                die('Erreur : '.$e->getMessage());
                            }   
                        $reponse = $bdd->prepare('INSERT INTO test (ID_proprietaire, choix_famille) VALUES(?, ?)');
                        $reponse->execute(array($_POST['ID_contact'], $_POST['nom_sous_type']));
                    ?>
                    	</body>
                    </html>
                    
                        

                    je ne sais pas si tu attendais ce genre de chose mais au moins j'ai réussi à le faire fonctionner 

                         <?php // affichage du formulaire cette partie est temporaire elle permet de valider si l'envoie a été effectué à deplacer dans la page lister produit 
                    	  				    $reponse = $bdd->query('SELECT t.commercial nom_commercial, t.ref ref_test, c.nom nom_contact, c.prenom prenom_contact, c.mail 	mail_contact, c.telephone telephone_contact, c.entreprise entreprise_contact, c.ID ID_contact
                    		                  	FROM contact c
                    		                    INNER JOIN test t
                    		                    ON t.ID_proprietaire = c.ID ');	
                    	                    // Récupération des messages
                    	                    $reponse = $bdd->query('SELECT * FROM test ORDER BY ID DESC LIMIT 1');
                    	                    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
                    	                    while ($donnees = $reponse->fetch()){	 	                                                           
                    		                        $req = $bdd->prepare('SELECT * FROM contact WHERE id = ?');    
                    		                        $req->execute(array($donnees['ID_proprietaire']));  
                    		                        while ($donnees1 = $req->fetch())
                    				                {
                    				                	echo '<img src="uploads/'.$donnees['image'].'" />';
                    				                	echo "</td><td> "; 
                    				                	echo htmlspecialchars($donnees['ref']);
                    				                	echo "</td><td> "; 
                    				                	echo htmlspecialchars($donnees['designation']);
                                           				echo "</td><td> ";
                                           				echo htmlspecialchars($donnees['marque']);
                                                		echo "</td><td> "; 
                    				                	echo htmlspecialchars($donnees1['nom']);echo "--";
                    				                	echo htmlspecialchars($donnees1['prenom']);echo "</br>";
                    				                	echo htmlspecialchars($donnees1['mail']);echo "</br>";
                    				                	echo htmlspecialchars($donnees1['telephone']);echo "</br>";
                    				                	echo htmlspecialchars($donnees1['entreprise']);
                    				                	echo "</td><td> ";
                                               			echo htmlspecialchars($donnees['prix']);
                                               			echo "</td><td> ";
                                                		echo htmlspecialchars($donnees['MAJ']);	
                    				                }                       
                    		                        $req->closeCursor(); 
                    		                                  
                    						$reponse->closeCursor(); 
                    					}
                    	                ?> 



                    -
                    Edité par BaptDam 26 novembre 2020 à 15:07:47

                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 décembre 2020 à 20:27:22

                      OK, avec les éditions, je n'avais pas tout vu.

                      Il serait vraiment intéressant que tu modifies ce dernier code pour n'avoir qu'une requête avec jointure. Là, une requête dans une boucle, c'est pas terrible, d'autant que le petit plus d'utiliser une requête préparée est anéanti par le fait que tu prépares la requête à chaque itération. Donc petit plus : permuter les lignes 9 et 10.

                      Pour le fait d'exécuter la requête dans la boucle, sachant que tu ne souhaites que le dernier utilisateur et non tous, je ne suis pas assez sûr de moi, mais il y a peut-être moyen de le faire avec une jointure.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      echo reste en mémoire

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown