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 :

PHP Requête count(*) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut PHP Requête count(*)
    Bonjour,

    j'ai une base de donnée sur Wampserver et une requête qui fonctionne et qui calcule le nombre de colonnes d'une table :

    select count(*) from information_schema.columns where table_schema = 'movebdd' and table_name='maTab'

    J'ai crée le fichier .php qui, lorsqu'il est lancé dans le navigateur, me renvoie :

    SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

    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
    24
    25
    26
    27
    <?php
    
    header('Access-Control-Allow-Origin: *');
    header('Content-Type: application/json; charset=utf-8');
    				
    	try{
    	  include('config.php');
    	  include('pdo2.php');
    	  $pdo = PDO2::getInstance();
    	  $etatsmat=0;
    	  $pdo->exec("SET CHARACTER SET utf8");	 
    	 
    	  $requete_prepare_1=$pdo->prepare("select count(*) from information_schema.columns where table_schema = 'movebdd' and table_name='maTab'");
    	  	  
    	 $lignes=$requete_prepare_1->fetch(PDO::FETCH_OBJ);
    	 $json['count'] = $lignes->count;
    	 
    	 $requete_prepare_1->closeCursor();
    	 $json['success'] = true;
    	 
    	 echo json_encode($json);
    
    	
    	}catch(PDOException $e) {
    	     echo 'Error:'.$e->getMessage();
    	}
    ?>
    Pourriez-vous me dire d'où viens l'erreur svp? (Elle se situe à coup sûr au niveau du count)

    Merci d'avance.

    Arsène

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 29 208
    Points : 43 406
    Points
    43 406
    Par défaut
    Elle se situe à coup sûr au niveau du count
    Ca c'est de la voyance c'est pas du debugage.

    Regarde plutôt si ton fichier n'est pas encodé avec un BOM.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Avec notepad++ j'ai ouvert le fichier .sql que j'ai transféré sur Wampserver et j'ai vu que l'encodage sélectionné est UTF8 sans Bom. Peut-être que lorsque je l'ai importé l'encodage a changé et qu'il est maintenant avec Bom. Sur Php myAdmin, j'ai l'encodage utf8_general. Peut-être qu'il est avec Bom. Alors j'ai essayé de le modifier en utf8_bin ou en utf8_unicode, mais le résultat est le même, l'erreur persiste.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 29 208
    Points : 43 406
    Points
    43 406
    Par défaut
    Je parlais du fichier PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Le fichier .php est sans Bom. J'ai mis tous les fichiers .php sans Bom mais ça n'a rien changé.

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

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

    Informations forums :
    Inscription : avril 2007
    Messages : 8 632
    Points : 16 367
    Points
    16 367
    Par défaut
    Si c'est le json_encode qui plante, la 1ere chose à faire, c'est regarder ce qu'il ya dans la variable $json, avec un var_dump par exemple, en retirant l'en-tête pour avoir du texte brut...
    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]

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Si je retire l'entête, j'obtiens :

    Notice: Trying to get property of non-object in D:\ProgramFiles\wamp64\www\Articles\requestMesTextCounter.php on line 19

    Call Stack
    # Time Memory Function Location
    1 0.0011 239720 {main}( ) ...\requestMesTextCounter.php:0


    D:\ProgramFiles\wamp64\www\Articles\requestMesTextCounter.php:24:
    array (size=2)
    'count' => null
    'success' => boolean true
    {"count":null,"success":true}

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

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

    Informations forums :
    Inscription : avril 2007
    Messages : 8 632
    Points : 16 367
    Points
    16 367
    Par défaut
    Raaaaah ! je suis une andouille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requete_prepare_1=$pdo->prepare("select count(*) from information_schema.columns where table_schema = 'movebdd' and table_name='maTab'");
     
    $lignes=$requete_prepare_1->fetch(PDO::FETCH_OBJ);
    Il ne manquerait pas un truc là ? Genre, l'exécution de la requête ?
    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]

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Y manquait peut-être $requete_prepare_1->execute(); ? Je le rajoute au milieu ou à la fin, mais le résultat est toujours le même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requete_prepare_1=$pdo->prepare("select count(*) from information_schema.columns where table_schema = 'movebdd' and table_name='maTab'");
     
    $requete_prepare_1->execute();
     
    $lignes=$requete_prepare_1->fetch(PDO::FETCH_OBJ);

  10. #10
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Heu, c'est pas aussi l'initialisation de la variable "json" qui manquerait?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	 $lignes=$requete_prepare_1->fetch(PDO::FETCH_OBJ);
             $json = array(); // ceci
    	 $json['count'] = $lignes->count;

  11. #11
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2011
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2011
    Messages : 538
    Points : 1 060
    Points
    1 060
    Par défaut
    Salut,
    $pdo->exec("SET CHARACTER SET utf8");, le manuel le déconseille surtout à partir de PHP 5.3.6, utilisez le ;charset=utf8 dans le DSN http://php.net/manual/fr/mysqlinfo.concepts.charset.php

    Pour la requête la colonne count n'existe pas dans le SELECT donc $lignes->count ne devrait pas fonctionner et pas besoin de prepare pour une requête aussi simple. On peut avoir un truc comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $requete = $pdo->query("SELECT COUNT(*)  FROM information_schema.columns WHERE table_schema = 'movebdd' AND table_name='maTab'");
    $json['count'] = $requete->fetchColumn();
    $json['success'] = TRUE;
    echo json_encode($json);
    Le bienfait n'est jamais perdu

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Merci beaucoup pour toutes ces informations. J'ai enfin le bon code grâce à vous :


    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
    <?php
    header('Access-Control-Allow-Origin: *');
    header('Content-Type: application/json; charset=utf-8');				
    	try{
    	  include('config.php');
    	  include('pdo2.php');
    	  $pdo = PDO2::getInstance();
             $requete = $pdo->query("SELECT COUNT(*)  FROM information_schema.columns WHERE table_schema = 'movebdd' AND table_name='maTab'");
    	  $json['count'] = $requete->fetchColumn();
    	  $json['success'] = TRUE;
    	  echo json_encode($json); 
     
    	}catch(PDOException $e) {
    	     echo 'Error:'.$e->getMessage();
    	}
    ?>
    JQUERY :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function CountRecup() {
            $.ajax({
                url: "http://localhost/Articles\requestMesTextCounter.php",
                type: 'get',
                dataType: 'json',  
    success:function(data1){	
        alert(data1.count);
    	 }					
                 });
      };

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

Discussions similaires

  1. Requête count un peu chaud
    Par louroulou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/06/2006, 15h43
  2. Requête Count(*)
    Par shr3dpit dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/05/2006, 16h21
  3. [mysql et php] requêtes imbriquées
    Par php_de_travers dans le forum Requêtes
    Réponses: 7
    Dernier message: 13/04/2006, 23h46
  4. PB avec une requête Count
    Par Marion dans le forum ASP
    Réponses: 7
    Dernier message: 05/07/2004, 13h56
  5. Réponses: 14
    Dernier message: 17/03/2003, 19h31

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