Salut tout le monde,
Mes urls sont de ce type : monsite.com/index.php?p=bla&c=1
Le 'c' représente des catégories de mon forum, et ce sont toujours des nombres car ce sont les id sql de ces catégorie.
Donc pour faire cour, je veux que c soit toujours un nombre sinon on affiche un message d'erreur, ceci est fait j'ai utiliser la fonction is_numeric().
Mais je veux aussi que si ces nombres sont différents de ceux qui sont dans ma BDD on affiche un message d'erreur.
Voici le code que j'ai fait :
<?php
if(is_numeric($_GET'c'])){
$catReq = $bdd->query('SELECT id FROM categories');
while($dataCat = $catReq->fetch()){
$c= array($dataCat'id']);
}
if(in_array($_GET'c'], $c)){
// mon code
}else{
// message d'erreur
}
}else{
//message d'erreur
}
?>
Si je fait un print_r($c) dans ma boucle cela m'affiche ceci : Array ( [0] => 1 ) Array ( [0] => 2 ) Array ( [0] => 3 )
Et si je fait un print_r($c) en dehors de ma boucle (juste avant le if) cela m'affiche ceci : Array ( [0] => 3 )
Donc vous pouvez constatez que cela ne marche pas si mon $_GET'c'] vaut 1 ou 2.
Donc comment faire ?
Merci :)
Tu initialise mal ta variable $c. Fais plutôt ça :
<?php
if(is_numeric($_GET'c'])){
$catReq = $bdd->query('SELECT id FROM categories');
$c= array();
while($dataCat = $catReq->fetch()){
$c]= $dataCat'id'];
}
if(in_array($_GET'c'], $c)){
// mon code
}else{
// message d'erreur
}
}else{
//message d'erreur
}
?>
Mais après je comprends pas trop à quoi ça sert ton code...