IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

valeur de la requete non definit


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Webdesigner
    Inscrit en
    Avril 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2005
    Messages : 120
    Points : 93
    Points
    93
    Par défaut valeur de la requete non definit
    Bonjour,

    mon code fonctionne pas avec cette methode , avant avec le CRUD fonctionne a merveille
    mais quand je recupere la valeur avec AJAX , ne s'affiche dés chargemenet de la page .

    avec ce code, en principe il affiche des donner meme c'est $_POST['cat']

    mais dans mon cas ça donne rien , saud si le $_POST['cat'] et non empty.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    if(empty($_POST['cat'])){
        $query_filter = '';
    }else{
        $query_filter = (' WHERE Categorie like "'.addslashes($_POST['cat']).'"');
    }
    $query= "SELECT * FROM Vedettes".$query_filter;
    $statement = $connect->prepare($query);
    if($statement->execute())
    {
        $result = $statement->fetchAll();
        $output = '';
        foreach($result as $row)
        {
            $output .= '<a class="blocc" href="#">  '.$row["Titre"].' </a>';
     
        }
        echo $output;
    }

  2. #2
    Membre habitué
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Septembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 103
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    Alors dans un premier temps il faut déjà penser à utiliser des PreparedStatements. Addslashes peut être bypassé et donc tu es possiblement vulnérable à une SQL injection.
    Réellement quand vous traitez des données pouvant être modifiées par un attaquant -> Prepared Statements !
    Après pourquoi vous vous compliquez la vie à ce point, pourquoi ne pas faire quelque chose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    if(empty($_POST['cat'])){
            $statement = $connect->prepare("SELECT * FROM Vedettes");
    }
    else
    {
            $statement = $connect->prepare("SELECT * FROM Vedettes WHERE Categorie like ?");
            $statement->bind_param("s", $_POST['cat']);
    }
    if($statement->execute())
    {
    	$result = $statement->fetchAll();
    	$output = '';
    	foreach($result as $row)
    	{
                        $output .= '<a class="blocc" href="#">  '. htmlspecialchars($row["Titre"], ENT_QUOTES, 'UTF-8').' </a>';
            }
    	echo $output;
    }
    J'ai aussi ajouté un htmlspecialchars() pour éviter les XSS au cas ou les données en base ne sont pas totalement contrôlé non plus .
    Hervé
    -------

  3. #3
    Membre régulier
    Homme Profil pro
    Webdesigner
    Inscrit en
    Avril 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2005
    Messages : 120
    Points : 93
    Points
    93
    Par défaut
    Merci Hervé , pour tes precieuse réponse .
    j'appricié ce style de codage , mais je l'ai d.ja essayé et ça ne pas marcher.

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Bonjour,

    Apparemment c'est parce que ta requête n'est pas correcte, car tu ajoutes des doubles quotes "" autour de la valeur recherchée + l'absence du modulo "%" dans la clause like :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    else{
    	$query_filter = ' WHERE Categorie like ?';//pas la peine de mettre des parenthèses ici..
            $statement->bind_param("s", "%".$_POST['cat']."%");
    }

Discussions similaires

  1. [WAS 5] web group / non definit
    Par otb82 dans le forum Websphere
    Réponses: 3
    Dernier message: 23/01/2007, 08h28
  2. Réponses: 2
    Dernier message: 24/05/2006, 15h20
  3. Trier sur une valeur de champs et non sur le nom du champs
    Par kamalkam dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/05/2006, 17h41
  4. Recuperer les valeurs d'une requette [C#]
    Par AlphonseBrown dans le forum C#
    Réponses: 7
    Dernier message: 22/11/2005, 16h36
  5. Valeur d'un champ non connu
    Par Pierre FORAZ dans le forum XMLRAD
    Réponses: 2
    Dernier message: 11/10/2004, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo