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

  1. #1
    Candidat au Club
    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
    Points : 3
    Points
    3
    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 : 221
Taille : 136,5 KoNom : resultat Select Inf 34.PNG
Affichages : 221
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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    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
    Candidat au Club
    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
    Points : 3
    Points
    3
    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 averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    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 : 164
    Points : 377
    Points
    377
    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 ?
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  5. #5
    Candidat au Club
    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
    Points : 3
    Points
    3
    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 averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    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 : 164
    Points : 377
    Points
    377
    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
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  7. #7
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Eventuellement essaie d'ajouter ;charset=UTF8 à la chaîne de connexion.


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    $_DBNAME = "bibliothequenas";
    ...
    $dbh = new PDO('mysql:host=localhost;dbname='.$_DBNAME.';charset=UTF8', $_USER,  $_PASSWORD);
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  8. #8
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    WOW, alors là j'aurais jamais pensé à regarder de ce côté là :o.
    Oui pour PDO, j'ai eut de bon prof ^^.
    Merci beaucoup pour votre aide

  9. #9
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    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 : 164
    Points : 377
    Points
    377
    Par défaut
    Pour avoir essayé la proposition de badaze ça fonctionne et c'est plus simple, tu restes sur la fonction fetchAll(), ça t'évite une boucle inutile
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

+ 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