Nouveau en PHP, je suis en train de coder une page avec un formulaire de recherche multicritères qui me pose des problèmes depuis quelques jours.
En utilisant l'URL rewriting, j'ai d'abord rencontré des problèmes pour obtenir mes informations $ _POST. J'ai résolu mon problème en ajoutant le flag [QSA] à ma règle (tout d'abord, est-ce correct de l'utiliser pour un $ _POST ?).
Sauf que j'ai maintenant d'autres problèmes.
1) J'ai maintenant de jolis messages "Array to string conversion" sur les commentaires de chacun des ID que je demande (mais j'ai mes ID en affichant un var_dump de mon $ _POST).
2) J'ai également un message "Cannot modify header information - headers already sent by..." (et c'est là que je me demande si le flag [QSA] est vraiment le bon).
3) Ma requête SQL n'est pas exécutée (ma table est vide en affichant un var_dump de la variable dans laquelle je souhaite stocker les informations demandées par la requête).
Voici mon phtml, mon code PHP ainsi que ma RewriteRule:
Code : Tout sélectionner
RewriteRule ^trouver_un_jardin$ model/frontend/trouver.php [QSA]Code : Tout sélectionner
<select name="idType[]" class="form-control my-5">
<?php foreach ($rechercheType as $searchType) : ?>
<option <?php echo $searchType["selected"] ?> value="<?php echo $searchType["id"] ?>"><?php echo $searchType["type_de_jardin"] ?></option>
<?php endforeach ?>
</select>
<select name="idTaille[]" class="form-control my-5">
<?php foreach ($rechercheTaille as $searchTaille) : ?>
<option <?php echo $searchTaille["selected"] ?> value="<?php echo $searchTaille["id"] ?>"><?php echo $searchTaille["taille"] ?></option>
<?php endforeach ?>
</select>
<select name="idZone[]" class="form-control my-5">
<?php foreach ($rechercheZone as $searchZone) : ?>
<option <?php echo $searchZone["selected"] ?> value="<?php echo $searchZone["id"] ?>"><?php echo $searchZone["zone"] ?></option>
<?php endforeach ?>
</select>
<select name="idPrix[]" class="form-control my-5">
<?php foreach ($recherchePrix as $searchPrix) : ?>
<option <?php echo $searchPrix["selected"] ?> value="<?php echo $searchPrix["id"] ?>"><?php echo $searchPrix["prix"] ?></option>
<?php endforeach ?>
</select>
</div>
<div class="form-group px-5">
<button class="btn btn-form btn-block" type="submit" name="action" value="search">Trouver</button>
</div>
<?php print_r($_POST) ?>
<?php var_dump($rechercheJardins) ?>
</form>Code : Tout sélectionner
if (isset($_POST["action"]) && $_POST["action"] == "search") {
$req = "SELECT jardins.id, jardins.image, jardins.alt, jardins.titre, jardins.description, jardins.prix FROM jardins JOIN recherche_jardin ON jardins.id = id_jardin WHERE id_recherche_type = :idType AND id_recherche_taille = :idTaille AND id_recherche_zone = :idZone AND id_recherche_prix = :idPrix";
$stm = $sqlQuery->prepare($req);
$postValue = $_POST;
unset($postValue["action"]);
$stm->execute($postValue);
$rechercheJardins = $stm->fetchall(PDO::FETCH_ASSOC);
header("location: trouver_un_jardin");
};Merci d'avance.