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 :

Limite dans les données remontées [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Par défaut Limite dans les données remontées
    Bonjour,
    Actuellement, j'essaie de faire une requête toute simple en PHP pour interroger une base de données MYSQL :

    connexionTest.php :
    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
    20
    21
     
    <?PHP 
     
        function getBDD() {
     
            $_HOST = "127.0.0.1";
            $_DBNAME = "bibliothequenas";
            $_USER = "root";
            $_PASSWORD="";
     
            try {
                $dbh = new PDO('mysql:host=localhost;dbname=bibliothequenas', $_USER,  $_PASSWORD);
     
            } catch (PDOException $e) {
                print "Erreur ! : ". $e -> getMessage(). "<br/>";
                die();
            }
     
            return $dbh;
        }
    ?>
    requeteTest.php :
    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
    20
     
     
    <?PHP
        include "connexionTest.php";
            //echo "bdd";
            $bdd = getBDD();
            //echo "\nquery";
            $testRequete = $bdd->prepare("SELECT * FROM personne WHERE personne_id<=34"); 
            $testRequete->execute();
     
            $res = $testRequete->fetchAll();
     
            if ($res == 'undefined' || $res == null) {
                echo "aucune donnée";
            }
     
            header('Content-Type: application/json');
     
            echo json_encode($res);
    ?>
    Lorsque dans ma clause WHERE, je mets personne_id <= 34, j'arrive à remonter les données :

    Nom : resultat Select Inf 34.PNG
Affichages : 242
Taille : 136,5 KoNom : resultat Select Inf 34.PNG
Affichages : 242
Taille : 136,5 Ko

    Seulement, si je mets dans ma clause WHERE : personne_id <= 35, je ne remonte aucune données. Le content-length dans le header de la réponse HTTP est à 0.
    Ma table contient 73 enregistrements au total.

    Je voulais savoir, si il y avait une restriction au niveau de la quantité de données remontées depuis MySQL ?
    Depuis que je développe en PHP/MySQL, je n'ai jamais rencontré ce problème.
    Je précise que j'utilise WAMP pour faire le développement.

    En vous remerciant d'avance pour votre réponse

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Plutôt bizarre comme cas A titre indicatif, tu as essayé un autre nombre (genre 36 ou 33) ?

    Remarque en passant : tu n'as peut-être pas besoin que ton json contienne les données en double. Pense à préciser le mode de récupération dans fetch_all :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $testRequete->fetchAll(PDO::FETCH_ASSOC);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Par défaut
    Bonjour, merci pour votre réponse.
    Oui c'est bizarre, j'ai jamais eut ce genre de pb, c'est pour ça que je passe par le forum J'ai l'impression que c'est une taille limite quelque part dans un paramétrage. J'ai d'autres tables où ça ne me remonte rien. J'ai réussi à obtenir des données avec cette table. Dès que j'ai un peu trop de données, il ne m'affiche aucun résultat...
    Je comprends pas d'où cela peut venir...

  4. #4
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Bonjour,

    Si tes données ne sont pas confidentielles pourrais tu nous fournir un export de celle-ci ?
    J'aimerais bien tester de mon coté car je ne suis encore jamais tombé sur ce cas là.
    Sinon tu as essayé le mot clé LIMIT dans ta clause ? Plutôt que sur l'identifiant de l'utilisateur ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2014
    Messages : 4
    Par défaut
    Non, elle ne sont pas confidentielles, je faisais juste une appli pour me former sur angular avec un backend php.
    Mon but n'est pas de limiter la quantité de donnée, c'était pour comprendre pourquoi ma requête ne remontait rien. Sinon cela se limite à un SELECT * FROM personne.
    Je me suis rendu compte que quand je remontais les 34 premières personnes, tout était ok mais lorsque je voulais en remonter une 35ème, plus rien n'était remonté.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    C'est bien ton jeu de données qui pose problème.
    À la ligne 35 de la table personne dans ta base de données tu as la valeur "François" dans le champ "personne_prenom".
    Sauf que le 'ç' n'est pas interprété par la fonction json_encode puisqu'il n'est pas au format utf-8.
    J'ai essayé avec pas mal de choses comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: application/json; charset=utf-8');
    Ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo json_encode($res, JSON_UNESCAPED_UNICODE);
    Mais pour le cas d'un tableau multi-dimentionnel, ça n'a pas l'air de marcher.

    Donc la seule solution que j'ai trouvé c'est de parcourir les lignes de ton tableau et de formater tes tableaux de données en utf-8 et de renvoyer le tout au format JSON.

    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
    20
    21
    22
    23
    <?php
     
    include "connexionTest.php";
     
    $output      = [];
    $bdd         = getBDD();
    $testRequete = $bdd->prepare("SELECT * FROM personne WHERE personne_id <= :id");
    $testRequete->execute([
        ':id'  => 70
    ]);
     
    /* Tu encodes tes résultats. */
    while ($res = $testRequete->fetch()) {
        $output[] = array_map("utf8_encode", $res );
    }
     
    header('Content-type: application/json; charset=utf-8');
    /* S'il n'y a pas de données en sortie tu renvoies ton erreur. */
    if (empty($output)) {
        $output['error'] = "aucune donnée";
    }
     
    echo json_encode($output);
    Voilà voilà ! amuse toi bien

    PS : Bonne chose d'utiliser PDO et les requêtes préparés

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/09/2011, 09h58
  2. Réponses: 6
    Dernier message: 16/10/2007, 09h15
  3. Réponses: 4
    Dernier message: 07/09/2007, 17h47
  4. Filtre dans les données d'un tableau dynamique
    Par lbar012001 dans le forum Excel
    Réponses: 2
    Dernier message: 07/06/2007, 14h06
  5. pb de cotes dans les données avec findfirst
    Par patbeautifulday1 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/05/2007, 15h57

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