- Selectpicker gérer le select all PHP
- Winget upgrade --all - Guide
- Easy php - Télécharger - Divers Web & Internet
- Gerer les profils netflix - Guide
- Gerer foyer netflix - Accueil - Guide streaming
- Gerer stockage google - Guide
2 réponses
26 janv. 2023 à 22:00
Bonjour,
Tu prends ton IF / ELSEIF / ELSE à l'envers.....
Forcément, si les deux sont cochés .. ta première condition est donc vraie .... et ton code ne va pas plus loin...
Il te faut donc tester en premier la présence des deux... puis chaque vérification individuelle.
Bien entendu, pour éviter d'éventuelles erreurs de code ( dans le cas ou un seul ou aucun élément ne serait cliqué ), il faut, avant de les utiliser, récupérer PROPREMENT les variables.
Je t'invite à appliquer ce qui est indiqué ici :
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
J'ai essayé comme ça :
$etat = isset($_POST['etat']) ? $_POST['etat'] : NULL; if(!empty($etat)) { if($etat == "encours" && $etat == "clos") { $clos = " "; } else if($etat == "encours") { $clos = "clos = 0 AND "; } else if($etat == "clos") { $clos = "clos = 1 AND "; } } else { echo "c'est vide"; $etat = null; $clos = ""; }
$donneesEtat = $this->incident->mapFilter($etat);
Une erreur à chaque résultat :
Que ça soit en cours, clos ou tout sélectionné :
Notice: Undefined variable: etat in C:\Applications\wamp64\www\portail\controllers\IncidentController..php on line 364
Notice: Undefined variable: clos in C:\Applications\wamp64\www\portail\models\Incident.class.php on line 1407
Si rien n'est sélectionné :
Notice: Undefined variable: etat in C:\Applications\wamp64\www\portail\controllers\IncidentController.php on line 364
Modifié le 27 janv. 2023 à 16:29
$etat est une variable de type ARRAY qui contient 1 ou 2 valeurs
$etat[0] et/ou $etat[1]
ça reviendrait donc à écrire un truc du genre :
$etat = !empty($_POST['etat']) ? $_POST['etat'] : NULL; if($etat){ $etat_encours = !empty($etat[0]) ? true : false; $etat_clos = !empty($etat[1]) ? true : false; if($encours && $clos) { $clos = ""; } else if($etat_clos) { $clos = " clos = 1 AND "; } else if($encours) { $clos = " clos = 0 AND "; } // le reste de ton code }
27 janv. 2023 à 16:14
J'ai repris ton code et remis $etat en paramètre de l'appel de ma fonction
Pour en cours, clos et rien :
Notice: Undefined variable: etat in C:\Applications\wamp64\www\portail\controllers\IncidentController.php on line 364
Notice: Undefined variable: encours in C:\Applications\wamp64\www\portail\models\Incident.class.php on line 1385
Notice: Undefined variable: encours in C:\Applications\wamp64\www\portail\models\Incident.class.php on line 1389
Notice: Undefined variable: clos in C:\Applications\wamp64\www\portail\models\Incident.class.php on line 1400
Quand c'est en cours et clos :
Notice: Undefined variable: etat in C:\Applications\wamp64\www\portail\controllers\IncidentController.php on line 364
Notice: Undefined variable: encours in C:\Applications\wamp64\www\portail\models\Incident.class.php on line 1385
Y a un truc qui cloche, en plus aucun des résultats n'est bon que ce soit en cour ou clos il me renvoi les 2 et quand je sélectionne les 2 il me renvoi seulement les clos, ça n'a aucun sens
27 janv. 2023 à 16:29
faudrait :
1- nous montrer ton code COMPLET
2 - ajouter un var_dump de la variable $_POST au début du script pour voir ce qu'elle contient
27 janv. 2023 à 16:50
Ma fonction de filtre :
public function mapFilter($etat) { $etat = !empty($_POST['etat']) ? $_POST['etat'] : NULL; $etat_encours = !empty($etat[0]) ? true : false; $etat_clos = !empty($etat[1]) ? true : false; if($etat_encours && $etat_clos) { $clos = ""; } else if($etat_clos) { $clos = " clos = 1 AND "; } else if($etat_encours) { $clos = " clos = 0 AND "; } $req = $this->getBdd()->prepare( "SELECT nom, lat, long, date, type, ref, clos FROM incidentville as iv LEFT JOIN ville as v ON iv.ville_id = v.id LEFT JOIN incident as i ON iv.incident_id = i.id WHERE ". $clos."lat IS NOT NULL" ); $req->execute(); $allVilleEtat = $req->fetchAll(PDO::FETCH_ASSOC); $req->closeCursor(); return $allVilleEtat; }
Mon appel à ma fonction
public function map() { $this->incident = new Incident; $donneesEtat = $this->incident->mapFilter($etat); require "views/incident/map.view.php"; }
Var_dump :
var_dump($_POST) quand j'arrive sur ma page me donne un tableau vide -> array(0) { }
Quand je sélectionne en cours -> array(2) { ["etat"]=> array(1) { [0]=> string(7) "encours" } ["filtremap"]=> string(0) "" }
filtremap et mon bouton pcq c'est au clique du bouton que ca s'affiche et c'est dans mon var dump de post pcq j'ai ça :
if(isset($_POST['filtremap'])) {
var_dump($_POST);
}
Un var dump de $_POST['etat] qaund je sélectionne en cours et clos par exemple :
array(2) { [0]=> string(7) "encours" [1]=> string(4) "clos" }
Quand je sélectionne clos :
array(1) { [0]=> string(4) "clos" }
Quand je sélectionne en cours :
array(1) { [0]=> string(4) "en cours" }
Ce que ça me retourne :
Ca c'est le var_dump de ma variable $donneesEtat :
array(27) { [0]=> array(7) { ["nom"]=> string(14) "nom d'une ville" ["latitude"]=> string(7) "49.3167"...
et c'est la que je vois si il me sort que des incidents clos, encours ou les deux avec :
[...]"clos"]=> string(1) "0"
Pour l'instant avec ce code, mes erreurs sont :
Quand je sélectionne encours, clos ou rien :
Notice: Undefined variable: etat in C:\Applications\wamp64\www\portail\controllers\IncidentController.php on line 364
Notice: Undefined variable: clos in C:\Applications\wamp64\www\portail\models\Incident.class.php on line 1400
Quand je sélectionne les 2 :
Notice: Undefined variable: etat in C:\Applications\wamp64\www\portail\controllers\IncidentController.php on line 364
Les infos dans les var_dump des $_POST sont cohérentes, je vois pas ou est le problème
27 janv. 2023 à 15:04
Ok tout s'affiche bien mais j'ai quand même des erreurs comme tu dis "récupérer proprement les variables.
J'ai une erreur quand je chois en cours :
Et une autre quand je ne sélectionne rien :
Pcq j'utilise ma fonction pour filtrer dans une fonction de mon controller :
Sinon ce que je récupère est bon, code :
,
27 janv. 2023 à 15:22
Si tu récupères proprement les variables avant de les utiliser ...... tu ne dois donc plus utiliser les $_POST dans le reste du code....