[RESOLU] Aide php

Vous recherchez un programme, une solution, posez votre question ici.
Répondre
Auteur du sujet
Cguillon
Petit Nouveau
Petit Nouveau
Messages : 9
Enregistré le : il y a 8 ans

[RESOLU] Aide php

Message par Cguillon »

Bonjour,

Je cherche à faire un formulaire de recherche avec 4 select sur une page afin d'afficher sur cette même page les résultats une fois cliqué sur submit.

Cependant je n'arrive pas à faire apparaître les résultats de ma recherche...

Voici le code des select :

Code : Tout sélectionner

<form method="post" action="pneumatiques.php">
              <div class="input-field col s12 m12 l12">
                                            <select  name="largeur" autocomplete="off">
                                            <option value="">Choisissez la largeur</option>
                                            <?php $sql = "SELECT DISTINCT largeur from pneumatiques ORDER BY largeur ASC";
                                            $query = $dbh -> prepare($sql);
                                            $query->execute();
                                            $results=$query->fetchAll(PDO::FETCH_OBJ);
                                            $cnt=1;
                                            if($query->rowCount() > 0)
                                            {
                                            foreach($results as $resultt)
                                            {   ?>                                            
                                            <option value="<?php echo htmlentities($resultt->largeur);?>"><?php echo htmlentities($resultt->largeur);?></option>
                                            <?php }} ?>
                                            </select>
                                            &nbsp;&nbsp;
                                            <select  name="hauteur" autocomplete="off">
                                            <option value="">Choisissez la hauteur</option>
                                            <?php $sql = "SELECT DISTINCT hauteur from pneumatiques ORDER BY hauteur ASC";
                                            $query = $dbh -> prepare($sql);
                                            $query->execute();
                                            $results=$query->fetchAll(PDO::FETCH_OBJ);
                                            $cnt=1;
                                            if($query->rowCount() > 0)
                                            {
                                            foreach($results as $resultt)
                                            {   ?>                                            
                                            <option value="<?php echo htmlentities($resultt->hauteur);?>"><?php echo htmlentities($resultt->hauteur);?></option>
                                            <?php }} ?>
                                            </select>
                                            &nbsp;&nbsp;
                                            <select  name="diametre" autocomplete="off">
                                            <option value="">Choisissez le diamétre</option>
                                            <?php $sql = "SELECT DISTINCT diametre from pneumatiques ORDER BY diametre ASC";
                                            $query = $dbh -> prepare($sql);
                                            $query->execute();
                                            $results=$query->fetchAll(PDO::FETCH_OBJ);
                                            $cnt=1;
                                            if($query->rowCount() > 0)
                                            {
                                            foreach($results as $resultt)
                                            {   ?>                                            
                                            <option value="<?php echo htmlentities($resultt->diametre);?>"><?php echo htmlentities($resultt->diametre);?></option>
                                            <?php }} ?>
                                            </select>
                                            &nbsp;&nbsp;
                                            <select  name="charge" autocomplete="off">
                                            <option value="">Choisissez la charge</option>
                                            <?php $sql = "SELECT DISTINCT charge from pneumatiques ORDER BY charge ASC";
                                            $query = $dbh -> prepare($sql);
                                            $query->execute();
                                            $results=$query->fetchAll(PDO::FETCH_OBJ);
                                            $cnt=1;
                                            if($query->rowCount() > 0)
                                            {
                                            foreach($results as $resultt)
                                            {   ?>                                            
                                            <option value="<?php echo htmlentities($resultt->charge);?>"><?php echo htmlentities($resultt->charge);?></option>
                                            <?php }} ?>
                                            </select> 
            </div>
           
           <br>
  
      <center> <input type="submit" class="pure-button pure-button-primary" name="recherche" value="Envoyer"></center>
   

 
</form>
Puis en dessous le code qui devrait m'afficher les résultats en fonction des choix fait dans les select :

Code : Tout sélectionner

<?php
$largeur=($_POST['largeur']);
$hauteur=($_POST['hauteur']);
$diametre=($_POST['diametre']);
$charge=($_POST['charge']);
$sql="SELECT * FROM pneumatiques WHERE largeur=:largeur AND hauteur=:hauteur AND diametre=:diametre AND charge=:charge";
$query = $bdd->prepare($sql);
$query->bindParam(':largeur',$largeur,PDO::PARAM_STR);
$query->bindParam(':hauteur',$hauteur,PDO::PARAM_STR);
$query->bindParam(':diametre',$diametre,PDO::PARAM_STR);
$query->bindParam(':charge',$charge,PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
$cnt=1;
if($query->rowCount() > 0)
{
foreach($results as $result)
{         
      ?>  
                           
                      
                              
                              
                               <center><table class="pure-table table-bordered">
        <tr>
            <th width="150"><center>Constructeur</center></th>
            <th width="150"><center>Reference</center></th>
            <th width="150"><center>Designation</center></th>
            <th width="200"><center>Dimension</center></th>
            <th width="100"><center>Saison</center></th>
            <th width="260"><center>Prix Public HT</center></th>
        </tr>        


                                   
                                   <tr>
                                            <td><center><?php echo htmlentities($result->constructeur);?></center></td>
                                            <td><center><?php echo htmlentities($result->reference);?></center></td>
                                            <td><center><?php echo htmlentities($result->designation);?></center></td>
                                            <td><center><?php echo htmlentities($result->dimension);?></center></td>
                                            <td><center><?php echo htmlentities($result->saison);?></center></td>
                                            <td><center><?php echo htmlentities($result->prix);?></center></td>
                                       
                                   </tr>   
                                   <?php $cnt++;} }?>
                                                               
                                   </table></center>
Si l'un de vous peut m'aider je lui en serais vraiment reconnaissant.

Merci d'avance et bonne soirée =)
Avatar du membre
MrLafia
Privilégié
Privilégié
Messages : 53
Enregistré le : il y a 13 ans
Contact :

Message par MrLafia »

bonjour Cguillon

je n'y connais rien en php mais afin d'assurer tes chances d'obtenir des réponses
je te conseil (si ce n'est déjà fait) d'exposer tes problèmes sur les forum spécialisés comme :

http://forum.phpdebutant.org/
https://forum.phpfrance.com/
https://php.developpez.com/

Bonne chance.
--
"Les newbies d' aujourd'hui seront l' élite de demain".
-+- NG in GNU : Tu seras un homme, mon neuneu -+-
MrLafia list movie
Avatar du membre
Stiouf
Modérateur
Modérateur
Messages : 2893
Enregistré le : il y a 13 ans

Message par Stiouf »

Ah même page, pas besoin du action alors dans le form

Tu fais juste après ton formulaire un if (isset($_POST['recherche'])) {, c'est le nom de ton bouton submit, il faudra par la suite mettre aussi isset($_POST['largeur'])), enfin tous les select sinon même en ayant rien choisi, tout ce qui sera sous sera fait et ta requête sql aimerait pas, euh ouais non elle sortira rien du fait des values vides de tes select donc

Et ce que tu veux afficher après ce isset


Utilise plutôt htmlspecialchars au lieu de htmlentities, surtout si tu as des accents

Au lieu de <?php echo, tu peux juste utiliser <?=

TU devrais aussi afficher tes variables avant de faire ta requête, historie de voir si les variables sont bien récupérés
Décryptage des liens du forum
-/ ThiWeb Live
-/ Extension ThiWeb Crypt/Decrypt
Auteur du sujet
Cguillon
Petit Nouveau
Petit Nouveau
Messages : 9
Enregistré le : il y a 8 ans

Message par Cguillon »

MrLafia a écrit : il y a 5 ans bonjour Cguillon

je n'y connais rien en php mais afin d'assurer tes chances d'obtenir des réponses
je te conseil (si ce n'est déjà fait) d'exposer tes problèmes sur les forum spécialisés comme :

http://forum.phpdebutant.org/
https://forum.phpfrance.com/
https://php.developpez.com/

Bonne chance.
Hello merci de ta réponse :)

J'ai déja posté sur phpfrance et sur openclassroom sans grand résultat je vais donc tenter sur les deux autres liens :)
Stiouf a écrit : il y a 5 ans Ah même page, pas besoin du action alors dans le form

Tu fais juste après ton formulaire un if (isset($_POST['recherche'])) {, c'est le nom de ton bouton submit, il faudra par la suite mettre aussi isset($_POST['largeur'])), enfin tous les select sinon même en ayant rien choisi, tout ce qui sera sous sera fait et ta requête sql aimerait pas, euh ouais non elle sortira rien du fait des values vides de tes select donc

Et ce que tu veux afficher après ce isset


Utilise plutôt htmlspecialchars au lieu de htmlentities, surtout si tu as des accents

Au lieu de <?php echo, tu peux juste utiliser <?=

TU devrais aussi afficher tes variables avant de faire ta requête, historie de voir si les variables sont bien récupérés
Merci de ta réponse Stiouf, j'ai tenté de faire ce que tu m'as dit et bingo les résultats s'affichent :scream:

Cependant il me reste un problème de placement dans tout ce code qui fait que l'entête de mon tableau se répète à chaque ligne de résultat :sweat:

Image

Ci-dessous mon code actualisé :

Code : Tout sélectionner

<?php
session_start();
error_reporting(0);
include('includes/config2.php');
if(strlen($_SESSION['emplogin'])==0):
header('location:index.php');

else:
?>

<!DOCTYPE html>
<html lang="fr">
<head>
        <title>Catalogue des pneumatiques</title>
 
  <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Quicksand:300,400,500,700"  rel="stylesheet">
   <link rel="stylesheet" href="https://unpkg.com/purecss@1.0.0/build/pure-min.css">
    <link href="https://maxcdn.icons8.com/fonts/line-awesome/1.1/css/line-awesome.min.css"
  rel="stylesheet">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css" integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous">
  <link rel="stylesheet" type="text/css" href="app-assets/css/cssperso.css">
  <link rel="stylesheet" type="text/css" href="app-assets/css/vendors.css">
  <link rel="stylesheet" type="text/css" href="app-assets/css/app.css">
  <link rel="stylesheet" type="text/css" href="app-assets/css/core/menu/menu-types/vertical-menu-modern.css">
  <link rel="stylesheet" type="text/css" href="app-assets/css/core/colors/palette-gradient.css">
  <link rel="stylesheet" type="text/css" href="app-assets/vendors/css/charts/jquery-jvectormap-2.0.3.css">
  <link rel="stylesheet" type="text/css" href="app-assets/vendors/css/charts/morris.css">
  <link rel="stylesheet" type="text/css" href="app-assets/fonts/simple-line-icons/style.css">
  <link rel="stylesheet" type="text/css" href="app-assets/css/core/colors/palette-gradient.css">
  <link type="text/css" rel="stylesheet" href="app-assets/css/popModal.css">
</head>
<body class="vertical-layout vertical-menu-modern 2-columns   menu-expanded fixed-navbar"
data-open="click" data-menu="vertical-menu-modern" data-col="2-columns">
            <?php include('includes/header.php');?>
            
            <?php include('includes/leftbar.php');?>


                        
                                        
   <div class="app-content content">
    <div class="content-wrapper">
      <div class="content-header row">
      </div>
      <div class="content-body">
        <!-- Revenue, Hit Rate & Deals -->

<div class="row">
                    <div class="col s12 m12 l12">                        
                        <div class="card">
                            <div class="card-content">
                                <div class="card-body">
                  <div class="media d-flex">
                    <div class="media-body text-left">
                             
                                        <center><table class="pure-table table-bordered">
              
                         
                                                                             
                              
<?php
if (isset($_POST['recherche']) && isset($_POST['largeur']) && isset($_POST['hauteur']) && isset($_POST['diametre']) && isset($_POST['charge'])) 
{ 
$largeur=($_POST['largeur']);
$hauteur=($_POST['hauteur']);
$diametre=($_POST['diametre']);
$charge=($_POST['charge']);
$sql="SELECT * FROM pneumatiques WHERE largeur=:largeur AND hauteur=:hauteur AND diametre=:diametre AND charge=:charge";
$query = $dbh->prepare($sql);
$query->bindParam(':largeur',$largeur,PDO::PARAM_STR);
$query->bindParam(':hauteur',$hauteur,PDO::PARAM_STR);
$query->bindParam(':diametre',$diametre,PDO::PARAM_STR);
$query->bindParam(':charge',$charge,PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
$cnt=1;
if($query->rowCount() > 0)
{
foreach($results as $result)
{  


      ?>  
                           
                      
                              
                              
           

                                   
                                   <tr>
                                            <th width="150"><center>Constructeur</center></th>
                                            <th width="150"><center>Reference</center></th>
                                            <th width="150"><center>Designation</center></th>
                                            <th width="200"><center>Dimension</center></th>
                                            <th width="100"><center>Saison</center></th>
                                            <th width="260"><center>Prix Public HT</center></th>
                                    </tr>
                                    <tr>       
                                            <td><center><?php echo htmlentities($result->constructeur);?></center></td>
                                            <td><center><?php echo htmlentities($result->reference);?></center></td>
                                            <td><center><?php echo htmlentities($result->designation);?></center></td>
                                            <td><center><?php echo htmlentities($result->dimension);?></center></td>
                                            <td><center><?php echo htmlentities($result->saison);?></center></td>
                                            <td><center><?php echo htmlentities($result->prix);?></center></td>
                                       
                                   </tr>   
                                   <?php $cnt++;} }?>
                                                               
                                   </table></center>
                                   
                            </div> 
                        </div>
                    </div>
                </div>
 </div>
                        
                        
                        
                        
                        
                        
                    </div>
                </div>



        </div>
        </div></div>                    
            
      
   
    <?php
				}
                        
				else
				{
				?>
    
    <center><h4>Recherche pneumatiques</h4></center>
         <br>
        <center><form method="post">
              <div class="input-field col s12 m12 l12">
                                            <select  name="largeur" autocomplete="off" required>
                                            <option value="">Choisissez la largeur</option>
                                            <?php $sql = "SELECT DISTINCT largeur from pneumatiques ORDER BY largeur ASC";
                                            $query = $dbh -> prepare($sql);
                                            $query->execute();
                                            $results=$query->fetchAll(PDO::FETCH_OBJ);
                                            $cnt=1;
                                            if($query->rowCount() > 0)
                                            {
                                            foreach($results as $resultt)
                                            {   ?>                                            
                                            <option value="<?php echo htmlentities($resultt->largeur);?>"><?php echo htmlentities($resultt->largeur);?></option>
                                            <?php }} ?>
                                            </select>
                                            &nbsp;&nbsp;
                                            <select  name="hauteur" autocomplete="off" required>
                                            <option value="">Choisissez la hauteur</option>
                                            <?php $sql = "SELECT DISTINCT hauteur from pneumatiques ORDER BY hauteur ASC";
                                            $query = $dbh -> prepare($sql);
                                            $query->execute();
                                            $results=$query->fetchAll(PDO::FETCH_OBJ);
                                            $cnt=1;
                                            if($query->rowCount() > 0)
                                            {
                                            foreach($results as $resultt)
                                            {   ?>                                            
                                            <option value="<?php echo htmlentities($resultt->hauteur);?>"><?php echo htmlentities($resultt->hauteur);?></option>
                                            <?php }} ?>
                                            </select>
                                            &nbsp;&nbsp;
                                            <select  name="diametre" autocomplete="off" required>
                                            <option value="">Choisissez le diamétre</option>
                                            <?php $sql = "SELECT DISTINCT diametre from pneumatiques ORDER BY diametre ASC";
                                            $query = $dbh -> prepare($sql);
                                            $query->execute();
                                            $results=$query->fetchAll(PDO::FETCH_OBJ);
                                            $cnt=1;
                                            if($query->rowCount() > 0)
                                            {
                                            foreach($results as $resultt)
                                            {   ?>                                            
                                            <option value="<?php echo htmlentities($resultt->diametre);?>"><?php echo htmlentities($resultt->diametre);?></option>
                                            <?php }} ?>
                                            </select>
                                            &nbsp;&nbsp;
                                            <select  name="charge" autocomplete="off" required>
                                            <option value="">Choisissez la charge</option>
                                            <?php $sql = "SELECT DISTINCT charge from pneumatiques ORDER BY charge ASC";
                                            $query = $dbh -> prepare($sql);
                                            $query->execute();
                                            $results=$query->fetchAll(PDO::FETCH_OBJ);
                                            $cnt=1;
                                            if($query->rowCount() > 0)
                                            {
                                            foreach($results as $resultt)
                                            {   ?>                                            
                                            <option value="<?php echo htmlentities($resultt->charge);?>"><?php echo htmlentities($resultt->charge);?></option>
                                            <?php }} ?>
                                            </select> 
            </div>
           
           <br>
  
      <center> <input type="submit" class="pure-button pure-button-primary" name="recherche" value="Envoyer"></center>
   

 
</form></center> 
   
   <?php
                  }  
				  ?>
    
    
          
       
<?php include('includes/footer.php');?>

    
    </body>
</html>
<?php endif;?>
Déja tu m'as énormément aidé si jamais tu pouvais me mettre sur la voie pour ce soucis ça serait parfaitement parfait =)
Auteur du sujet
Cguillon
Petit Nouveau
Petit Nouveau
Messages : 9
Enregistré le : il y a 8 ans

Message par Cguillon »

Bon en fait c'est bon j'ai reussi =)

Merci à tous :)
Avatar du membre
Stiouf
Modérateur
Modérateur
Messages : 2893
Enregistré le : il y a 13 ans

Message par Stiouf »

Juste le foreach à mettre sous les th mais tu as dû le voir
Décryptage des liens du forum
-/ ThiWeb Live
-/ Extension ThiWeb Crypt/Decrypt
Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : triton et 8 invités