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 :)

2 réponses


SnoT
Réponse acceptée

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...

Babou
Auteur

Ca marche mieux en effet, merci :)