IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Filtrer des résultats PHP


Sujet :

PHP & Base de données

  1. #21
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Qu'est-ce qui ne va pas dans la recherche multicritères ? Est-ce que tu choisis 2 couleurs par exemple ?


    Si c'est le cas, il faut que les noms des checkboxes finissent par [] pour faire qu'elles soient considérées comme un tableau.

    Par exemple, marque[] fera en sorte que si tu coches 2 valeurs $_POST['marque'] sera un tableau.

  2. #22
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Version sans js. Toujours avec voitures.xml

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
    //---- Bufferisation => je mets les print de test9254b.php dans la variable $criteres
    ob_start();
    include('test9254b.php');
    $criteres = ob_get_contents();
    ob_end_clean();
    //---- Bufferisation => je mets les print de test9254c.php dans la variable $criteres
    ob_start();
    include('test9254c.php');
    $donnees = ob_get_contents();
    ob_end_clean();
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <table align="top">
     <tr align="top">
      <td id="criteres" valign="top">
       <form action="test9254.php" method="post">
       <?php print $criteres;?>
       <input type="submit" name="valider" value="Valider" />
       </form>
      </td>
      <td id="donnees"  valign="top"><?php print $donnees;?></td>
     </tr>
    </table>
    </body>
    </html>

    test9254b.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?php
    function creeListe($entete,$info,$array,$elementsCoches) {?>
     <tr>
     <td><?php print $entete;?></td>
     </tr>
     <?php
     foreach($array as $key => $value) {
      $checked = in_array($value,$elementsCoches) ? "checked" : "";?>
      <tr>
      <td>
      <input type="checkbox" class="<?php print $info;?>" name="<?php print $info.'[]';?>" value="<?php print $value;?>" <?php print $checked;?> />
      <?php print $value;?>
      </td>
      </tr><?php
     } 
    }
    $marquesCochees = array();
    if (isset($_POST['marque'])) {
     $marquesCochees = $_POST['marque'];
    }
    $carburantsCoches = array();
    if (isset($_POST['carburant'])) {
     $carburantsCoches = $_POST['carburant'];
    }
     
    $fichier   = 'voitures.xml';
    $xml       = simplexml_load_file($fichier);
    $arrMarque = array();
    $arrModele = array();
    $arrCarbur = array();
    // je fais le fainéant en ne testant pas l'existence dans le tableau avant
    foreach($xml as $wature){
        $arrMarque[] = trim($wature->marque);
        $arrModele[] = trim($wature->modele);
        $arrCarbur[] = trim($wature->carburant);
    }
    $arrMarque = array_unique($arrMarque);
    $arrModele = array_unique($arrModele);
    $arrCarbur = array_unique($arrCarbur);
    natsort($arrMarque);
    natsort($arrModele);
    natsort($arrCarbur);
    ?>
    <table id="tableau">
     <tr>
      <td>Filtres</td>
     </tr>
     <?php
     creeListe("Marque","marque",$arrMarque,$marquesCochees);
     creeListe("Carburant","carburant",$arrCarbur,$carburantsCoches);
     ?>
     </tr>
    </table>

    test9254c.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <?php
    $marques = "";
    if (isset($_POST['marque'])) {
     $marques = implode(',',$_POST['marque']);
    }
    $carburants =  "";
    if (isset($_POST['carburant'])) {
     $carburants = implode(',',$_POST['carburant']);
    }
    $resultat  = array();
    $fichier   = 'voitures.xml';
    $xml       = simplexml_load_file($fichier);
    foreach($xml as $wature){
        $marque    = trim($wature->marque);
        $modele    = trim($wature->modele);
        $carburant = trim($wature->carburant);
     $okM        = 0;
     if ($marques == "" || strpos($marques,$marque) !== false) {
      $okM++;
     }
     $okC = 0; 
     if ($carburants == "" || strpos($carburants,$carburant) !== false) {
      $okC++;
     }
     if ($okM == 1 && $okC == 1) {
      $resultat[] = array($marque,$modele,$carburant);
     }
    }
    asort($resultat);
    print count($resultat) > 1 ? count($resultat)." trouvés" : count($resultat)." trouvé";
    print "<br/>";
    ?>
    <table>
     <tr>
      <td>Marque</td><td>Modèle</td><td>Carburant</td>
     </tr><?php
     foreach($resultat as $subarray) {
      $marque    = $subarray[0];
      $modele    = $subarray[1];
      $carburant = $subarray[2];?>
      <tr>
       <td><?php print $marque;?></td>
       <td><?php print $modele;?></td>
       <td><?php print $carburant;?></td><?php
     }?>
    </table>

  3. #23
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Par défaut
    Citation Envoyé par badaze Voir le message
    Qu'est-ce qui ne va pas dans la recherche multicritères ? Est-ce que tu choisis 2 couleurs par exemple ?


    Si c'est le cas, il faut que les noms des checkboxes finissent par [] pour faire qu'elles soient considérées comme un tableau.

    Par exemple, marque[] fera en sorte que si tu coches 2 valeurs $_POST['marque'] sera un tableau.
    Non, le soucis c'est que si je choisis "converses" "blanches" ca me sort uniquement les résultats pour "blanches" enfaite ca récupère uniquement les informations du dernier formulaire

  4. #24
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Citation Envoyé par h_kril Voir le message
    Par contre quand je fais la recherche multicritère :
    C:\wamp64\www\php\chaussures.php:23:
    array (size=5)
    'nom' => string 'converse' (length=6)
    'couleur' => string 'blanche' (length=8)
    'type' => string '' (length=0)
    'sub' => string 'Valider' (length=7)
    Il y a bien converse et blanche.

  5. #25
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Par défaut
    C'est ca que je n'ai pas compris, j'ai bien vu que les deux étaient pris en compte, cependant à l'affichage, j'ai toutes les chaussures "blanches" qui s'affichent et non pas l'intersection des deux ou meme les deux complètements..

  6. #26
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    C'est qu'il y a un pb dans le code.

  7. #27
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Par défaut
    Je me doute bien

  8. #28
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Tu semblais dire qu'il ne prenait pas la seconde valeur lors du post....

  9. #29
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Par défaut
    Non justement il prend en compte la seconde, mais celle qui le précède il ne veut pas l'afficher..

  10. #30
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Essaie le second code que j'ai posté.

  11. #31
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Par défaut
    Il fonctionne bien, je vais le mettre à ma sauce maintenant parce qu'utilisé comme ca, il y a beaucoup trop de choix, du coup je vais l'utiliser apres une premiere recherche de la part de l'utilisateur
    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2015, 20h59
  2. [SQL-Server] Copier des résultats d'une table en php
    Par Sami37 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 20/05/2012, 15h01
  3. [html PHP] Affichage des résultats à l'horizontal
    Par camzo dans le forum Langage
    Réponses: 13
    Dernier message: 29/12/2006, 18h36
  4. Réponses: 2
    Dernier message: 02/12/2005, 21h21
  5. Réponses: 1
    Dernier message: 02/12/2005, 20h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo