// Nombre de site VALIDE
$row = $bdd->prepare("SELECT id FROM commercants WHERE id =:id");
$row->bindParam(':id', $id, PDO::PARAM_INT);
$row->execute();
le vardump correspond à la requete j'ai put avancer de mon coté
Tout sauf un champ qui n'affiche pas la valeur souhaité
tu fais un SELECT pour récupérer l'id que tu connais déjà ? C'est pour vérifier qu'il existe ?
quel est le rapport entre SELECT id FROM commercants WHERE id =:id et 'SELECT * FROM commercants WHERE id = ' .$id ? Parce que sur la seconde, ça sent l'injection SQL ...
sur ton select (la balise html), si le but est de resélectionner, ce qui est en base, je pense que tu t'y prends mal :
ton premier option n'a pas de value
normalement, tu compares chaque value de chaque option pour savoir si tu dois mettre ou non le selected
Pour les select/option, il y a l'idée mais c'est uniquement le selected que tu dois echo si ta condition est vraie, pas toute la balise option. Il faudrait aussi que tu apprennes à ne pas te répéter, avec un tableau et une boucle, tu peut tout autant générer tes options sans que ce soit si inutilement répétitif.
Pour les requêtes SELECT, ok, $id/$_SESSION['membre']['id'] doit être sûr. Ta requête SELECT id FROM commercants WHERE id =:id est inutile, tu ne fais même pas de fetch (le code est incomplet ?). C'est quoi qui buggue sinon au juste ?
Ton test ligne 10 devrait être avant tous les autres. Et ta "cast" ligne 2 et 3, si vraiment ce code est utile par rapport à cette ligne 10, devrait plutôt être un simple isset.
Dis, si tu écrases et affiches toujours la même variable, comment veux-tu que ça fonctionne ? Tu vas tous les afficher selected ou non en fonction de ta dernière valeur (30).
Il te faut des variables différentes sinon, pour utiliser la même, gérer le selected d'une option pour l'afficher (la balise option + le selected) et ainsi de suite (une à la fois quoi).
Je voudrais savoir mon bug avec le code ci-dessous, il marche très bien sauf 1 truc.
Quand tu arrives sur la page tu as tous les résultats ensuite tu filtres avec les chekboxes, ca marche sauf que je me retrouve toujours avec au moins une chekboxes de coché peut importe laquelle.
eN BDD j'ai une colonne qui vaut 1 ou 0 pour chaque type
Problème de SESSION surement
<?php
const KEYS_TO_COPY = [
'type_legumes',
'type_viandes',
'type_fromages',
'type_hygiene',
'type_restauration',
'type_autres',
];
// Memoire pour passage des Checkboxes avec pagination
if (!empty($_POST)) {
$base = array_fill_keys(KEYS_TO_COPY, NULL);
$_SESSION = array_merge(
$_SESSION,
$base,
array_intersect_key(
$_POST,
$base
)
);
}
// Protection des variables passé en POST => htmlspecialchars
$ville = htmlspecialchars(ucfirst(strtolower($_GET['ville'])));
$page = (!empty($_GET['page']) ? (int)$_GET['page'] : 1);
$limite = 10; // Nombre d'élément à afficha dans la page
$debut = ($page - 1) * $limite;
$sql = 'SELECT * FROM commercants WHERE ville = :ville';
if (!empty($_SESSION['type_legumes'])) {
$sql .= ' AND type_legumes = 1';
}
if (isset($_SESSION['type_viandes'])) {
$sql .= ' AND type_viandes = 1';
}
if (isset($_SESSION['type_fromages'])) {
$sql .= ' AND type_fromages = 1';
}
if (isset($_SESSION['type_hygiene'])) {
$sql .= ' AND type_hygiene = 1';
}
if (isset($_SESSION['type_restauration'])) {
$sql .= ' AND type_restauration = 1';
}
if (isset($_SESSION['type_autres'])) {
$sql .= ' AND type_autres = 1';
}
$sql .= " GROUP BY nom_etablissement " ;
$sql .= ' LIMIT :limite OFFSET :debut'; // Limitation à l'affichage des données
$sql = $bdd->prepare($sql);
$sql->bindParam(':ville', $ville, PDO::PARAM_STR);
$sql->bindValue('debut', $debut, PDO::PARAM_INT);
$sql->bindValue('limite', $limite, PDO::PARAM_INT);
$sql->execute();
$resultFoundRows = $bdd->query('SELECT found_rows()');
$nombredElementsTotal = $resultFoundRows->fetchColumn();
$nombreDePages = ceil($nombredElementsTotal / $limite);
var_dump($sql);
?>
1 problème = 1 sujet, surtout que tu as déjà fait cette même demande que j'ai vue mais je ne comprends même pas ta demande (s'il reste une case cochée quand il n'est plus censé en avoir aucune - laquelle ? - ou si tu veux justement en garder une au lieu de tout vider - laquelle ? basé sur quoi ?)
(bref, ne me réponds pas ici, remonte cet autre sujet si tu as des précisions/peux mieux le décrire parce qu'un modo supprimera peut être ce post et le tien ci-dessus)
× 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.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli