Bonjour,
M'inspirant de ce site: http://annuaire.lenouveleconomiste.fr/salons/recherche.html?s=1&srubrique=all_1,all_53&salon=&From=03/02/2015&To=&lieu=&organisateur=&svg=all_53&ParDate=desc&ParGenre=-20&ParPage=10&

, je voudrais donner aux utilisateurs le choix de filtrer une liste d'évènements selon leurs centres d'intérêts.
Description de mon module simplifié :
Par défaut, Dans la zone de gauche, la page affiche tous les évents par date décroissante.
et dans la zone droite, un formulaire avec des checkboxes correspondant aux différentes valeurs du genre (nature) de l'event. Selon les cases cochées , la page se recharge et ne liste que les évents dont le (ou les) genre(s) est (sont) coché(s).
Je ne sais pas comment m'y prendre, et je sollicite votre aide pour m'indiquer le principe de fonctionnement, les étapes ou les grandes lignes. À moi de faire le reste en cherchant d'après vos indications.

CREATE TABLE IF NOT EXISTS `events` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `titreEvent` varchar(255) NOT NULL,
  `genreEvent` varchar(255) NOT NULL,
  `yearEvent` varchar(4) NOT NULL,
  `dateEvent` date NOT NULL,
  PRIMARY KEY (`id`)
)
<body>
    <section id="leftside" style="width:640px;float:left;">
        <?php
        $sql = 'SELECT * FROM events WHERE yearEvent="2015" ORDER BY dateEvent DESC';
        $resultat = mysql_query($sql);
        ?>
        <ul>
            <?php
            while ( $donnee = mysql_fetch_assoc($resultat) ) {
            ?>
                <li><?php echo $donnee['genreEvent']; ?><br />
                </li><?php echo $donnee['titreEvent']; ?>
                <hr>
            <?php
            }
            ?>
        </ul>

    </section>
    <section id="rightside" style="width:330px;float:right;" >
        <form id="trier" method="post" action="index.php" style="width:300px;">
        <p>
            <input type="checkbox" name="sort[]" id="tous" value="Tous" /><label>Tous</label><br />
            <input type="checkbox" name="sort[]" id="salon" value="Salon" /><label>Salon</label><br />
            <input type="checkbox" name="sort[]" id="expo" value="Exposition" /><label>Exposition</label><br />
            <input type="checkbox" name="sort[]" id="foire" value="Foire" /><label>Foire</label><br />
            <input type="checkbox" name="sort[]" id="jpo" value="Journées Portes Ouvertes" /><label>Journées Portes Ouvertes</label><br />
            <input type="checkbox" name="sort[]" id="inaug" value="Inauguration" /><label>Inauguration</label><br />
            <input type="checkbox" name="sort[]" id="conf" value="Conférence" /><label>Conférence</label><br />
            <input type="checkbox" name="sort[]" id="debat" value="Débat" /><label>Débat</label><br />
            <input type="checkbox" name="sort[]" id="congr" value="Congrès" /><label>Congrès</label><br />
            <input type="checkbox" name="sort[]" id="semin" value="Séminaire" /><label>Séminaire</label><br />
            <input type="checkbox" name="sort[]" id="forma" value="Formation" /><label>Formation</label><br />
            <input type="checkbox" name="sort[]" id="jurid" value="Juridique" /><label>Juridique</label><br />
            <input type="checkbox" name="sort[]" id="fisc" value="Fiscal" /><label>Fiscal</label><br />
            <input type="checkbox" name="sort[]" id="autre" value="Autre" /><label>Autre</label><br />

            <input type="submit" value="Filtrer"/>
        </p>
        </form>
        <?php
            $sorting = $_POST["sort"];
            echo "<b>Vous avez choisi </b><br />";
            for ($i=0; $i<count($sorting); $i++) {
                echo $sorting[$i]."<br />";
            }
        ?>
    </section>
</body>

Merci d'avance

1 réponse


Il faut que tu utilises ta boucle pour construire une partie de ta requete mysql et que tu fusionnes après.

        <?php
            $sorting = $_POST["sort"];
            $req = null;
            echo "<b>Vous avez choisi </b><br />";
            for ($i=0; $i<count($sorting); $i++) {
                echo $sorting[$i]."<br />";
                $req .= 'genreEvent = " ' . $sorting[$i] . ' " OR ';
            }
// pense à retirer le dernier OR
        ?>

Plus bas ta requete

$sql = 'SELECT * FROM events WHERE '.$req.' AND yearEvent="2015" ORDER BY dateEvent DESC';

J'ai rien testé, c'est juste pour te donner une petite idée du truc...