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 :

Résultat d'une requête dans un tableau [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Avatar de omar344
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2007
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 287
    Points : 301
    Points
    301
    Par défaut Résultat d'une requête dans un tableau
    Salut, je veux mettre les résultats d'une requête dans un tableau (array), comment puis-je procéder, j'ai essayé fetchAll() mais ça marche,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try {
    	$bdd= new PDO('mysql:host=localhost;dbname=maBase;charset=utf8', 'root', '');
    }
    catch (Exception $e) {
    	die ('Erreur : '.$e->getMessage());
    }
    $reponse = $bdd->query("SELECT DISTINCT champ FROM `MaTable`");
    $result=$reponse->fetchAll();
    $donnees =array();
    je suis coincé là dessus, je n'arrive pas à inscrire les résultats dqans le tableau
    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonsoir,

    quand tu dit que ça ne marche pas cela veut dire qu'il y'a une erreur ou que ton tableau est vide ? Car fetchAll() renvoi un tableau si ta requête retourne au moins un résultat.
    une réponse vous a permis d'avancer ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    => Comprendre PDO

  4. #4
    Membre averti
    Avatar de omar344
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2007
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 287
    Points : 301
    Points
    301
    Par défaut
    Salut,
    merci pour vos réponse, je savais pas comment fonctionne fetchAll(), dans tous les cas elle retourne un tableau, vide si pas de résultat,
    à présent je veux vérifier si un élément existe dans ce tableau, ma fonction me retourne toujours false, sachant bien que l'élément existe dans le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (in_array($var, $result)) {
    	echo "existe";
    } else { echo "n'existe pas";}
    la variable $var est une chaine de caractères récupérée par $_GET depuis une autre page

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonsoir,

    in_array n'est pas une fonction récursive donc si ton tableau contient plusieurs dimensions in_array ne recherchera que dans la dimension que tu lui a donné,

    je n'ais pour l'instant pas trouvé la fonction in_array récursive je vais continuer de chercher mais c'est pas sûr qu'elle existe.

    EDIT : Aucune fonction récursive existe, à la place fonction

    la fonction récursive en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function in_array_r($needle, $haystack, $strict = true) {
        foreach ($haystack as $item) {
            if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
                return true;
            }
        }
     
        return false;
    }
    une réponse vous a permis d'avancer ?

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    la variable $var est une chaine de caractères récupérée par $_GET depuis une autre page
    Pourquoi TOUT récupérer en 1er dans la Bdd (donc sans exception) pour après vérifier en Php si un élément existe parmi tout ces données de la Bdd selon un paramètre ($_GET) ?


    Le langage SQL permet de filtrer, donc de récupérer qu'une partie des donnée selon tel ou tel clause (ou condition).
    Exemple (basique bien sûr) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sth = $dbh->prepare('SELECT DISTINCT champ
    FROM `MaTable`
    WHERE truc = :parametre');
    $sth->bindValue(':parametre', $var, PDO::PARAM_STR);
    $sth->execute();
    $donnees = $sth->fetchAll();

    à présent je veux vérifier si un élément existe dans ce tableau, ma fonction me retourne toujours false, sachant bien que l'élément existe dans le tableau
    fetchAll() retourne un tableau à plusieurs dimensions, c'est cela qui provoque comme retour FALSE.

    Fait un print_r($result) pour t'en rendre compte.
    De même que, lis la doc de Php concernant la fonction (explications, les exemple fournis) : in_array().

    Vu que la 1ère dimension tableau obtenu sera indicé comme : 0, 1, ..., jusqu'à ... n, et bien il est normal que la fonction in_array() ne trouve pas d'équivalent à la valeur de la chaine que tu lui donne.

    Il te faudrait faire une boucle (genre foreach) sur le tableau obtenu par fetchAll(), et faire la comparaison dans la boucle.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Membre averti
    Avatar de omar344
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2007
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 287
    Points : 301
    Points
    301
    Par défaut
    Salut,
    merci pour vos explications ainsi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] récupérer le résultat d'une requête dans un tableau
    Par faty2 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/05/2007, 16h22
  2. Réponses: 2
    Dernier message: 27/03/2007, 01h19
  3. [MySQL] Résultat d'une requête dans un tableau
    Par olivier94 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 22/03/2007, 21h03
  4. [MySQL] Afficher le résultat d'une requête dans un tableau
    Par magobouli dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/02/2007, 14h41
  5. Réponses: 12
    Dernier message: 09/01/2007, 19h04

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