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 :

Incompréhension du résultat..


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 66
    Par défaut Incompréhension du résultat..
    Bonjour, Voila, j'ai effectué une requete afin de connaitre un Id max dans une table. La requete est bonne puisque je l'ai testé sur mon SGBD. Mais lorsque je l'execute dans mon code php, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id_max: Resource id #7 Erreur de syntaxe pr�s de 'SELECT id FROM newsletter_contenu WHERE id= (SELECT Max(id) from newsletter_cont' � la ligne 1
    Mon code PHP est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $id_max = 'SELECT id FROM newsletter_contenu WHERE id= (SELECT Max(id) from newsletter_contenu)';
    $Reslt_rqte = mysql_query($id_max) or die(mysql_error());
    echo("id_max: ".$Reslt_rqte);
    Alors bien sur, le résultat etant spécial, j'ai essayé un utf8_decode():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $id_max = 'SELECT id FROM newsletter_contenu WHERE id= (SELECT Max(id) from newsletter_contenu)';
    $Reslt_rqte =  utf8_decode(mysql_query($id_max) or die(mysql_error()));
    echo("id_max: ".$Reslt_rqte);
    Mais le résultat de id_max est 1 à la place de 86...

    AU SECOURS! Je ne comprend pas mon erreur en ce moment...

    Cordialement,

    Ctesias

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    Si la requête fonctionne sous ton SGBD, et au vue de l'erreur, je pense qu'il y avait un problème d'encodage.

    Mais en passant par en utf8_decode() cela te retourne 1. Étonnant. Ta base contient bien un id qui est à 86 ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 66
    Par défaut
    Et bien oui puisque c'est la réponse que m'a fourni le SGBD quand j'ai executé ma requete.

    PAr contre, j'ai trouvé un article sur la fonction mysql_queyr qui dit cela: "Permet d'exécuter une requête SQL sur une ou plusieurs tables d'une base de données. Si la requête exécute une instruction: INSERT, DELETE ou UPDATE, une valeur booléenne sera retournée (0 ou 1). Dans le cas d'une requête de type SELECT, vous obtiendrez un identifiant de résultat."

    Alors est-ce qu'il l'interprete comme un INSERT, DELETE ou UPDATE?

  4. #4
    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
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM newsletter_contenu WHERE id= (SELECT Max(id) from newsletter_contenu)
    Pourquoi faire une sous-requête ?

    Pourquoi pas ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX(id) AS max_id
    FROM newsletter_contenu
    C'est normal que tu obtiennes une ressource, car la fonction mysql_query() retourne une ressource.
    La doc de Php -> mysql_query()

    Faut que tu fasse un mysql_fetch_array() ou mysql_fetch_assoc() pour obtenir le résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $max_query = 'SELECT MAX(id) AS max_id
    FROM newsletter_contenu';
    $max_rs =  mysql_query($max_query) or die(mysql_error());
    $max = mysql_fetch_assoc($max_rs);
    echo 'max_id : '.$max['max_id'];
    J'ai rajouté un alias "max_id" à la requête, c'est plus pratique pour récupérer la valeur.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 66
    Par défaut
    Merci de vos réponses. Mais le echo($id) affiche 'Array'. Le echo echo("id :".$id['max_id']) affiche bien 86 par contre lui. Le problème, c'est que comme le $id equivaut a array, la valeur de la variable n'est pas bonne. et cela pose un problème puisque le requetes suivantes finissent en erreur.

    JE sais pas si vous m'avez compris... Mais merci quand meme.

  6. #6
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Bonjour,

    ben, il suffit de récupérer la première valeur du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sql= "SELECT MAX(id) FROM newsletter_contenu";
    $res= mysql_query($sql) or die(mysql_error());
    $rows = mysql_fetch_row($res);
    $id= $rows[0];
     
    echo "max_id : $id";

Discussions similaires

  1. LinqTOEntities : Incompréhension du résultat suite à ToList()
    Par takinelinfo dans le forum Accès aux données
    Réponses: 9
    Dernier message: 25/07/2011, 14h31
  2. iconv : incompréhension du résultat
    Par YvainBosse dans le forum AS/400
    Réponses: 2
    Dernier message: 02/09/2010, 17h12
  3. Réponses: 7
    Dernier message: 19/03/2008, 10h35
  4. Réponses: 4
    Dernier message: 12/11/2006, 18h49
  5. Réponses: 6
    Dernier message: 19/10/2006, 14h58

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