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écupérer la valeur d'une procédure stockée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 57
    Points : 43
    Points
    43
    Par défaut Récupérer la valeur d'une procédure stockée
    Bonjour,
    Je n'arrive pas à récupérer la valeur de ma procédure stockée.

    Contexte:
    "select * from contenu" me récupère deux lignes
    Table contenu(id,auteur,texte)
    BDD = test

    Procédure stockée:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE DEFINER=`root`@`localhost` PROCEDURE `simple`()
    BEGIN
             SELECT * FROM `test`.`contenu`;
    END

    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //$uneRequete = "select * from contenu";
    //$unQuery = mysql_query($uneRequete);
    $unQuery = mysql_query('call simple()');
    $nb_resultats = mysql_num_rows($unQuery);
    echo $nb_resultats."<br/>";
    while ($mesData = mysql_fetch_array($unQuery)){
      echo $mesData['auteur']."<br/>";
    }
    Là le problème, c'est que rien ne s'affiche alors que je si je fais les tests à partir de la requête (en comment dans le code), ca marche!
    Je sais qu'il manque quelque chose dans mon code, mais quoi?
    Sur internet, il y a très peu d'aide sur les procédures stockées php/mysql.

    Merci d'avance pour vos réponses,

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    une procédure ne retourne rien , seule les fonctions retourne un résultat

    ici il faudrait que tu apelle ta procédure avec un passage de variable, et ensuite faire un select @mavariable

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    Ok en gros, les procédures sont à faire pour des insert,delete ou update.
    Les fonctions pour renvoyer un résultat?
    Mais les vues servent à quoi dans ce cas?

  4. #4
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    les vues c'est autre choses, c'est un peu à part.

    Une vue est une table virtuelle crée à partir d'un select.

    Exemple très simple :

    une table ville_de_france, avec une vue grande_ville_de_france ayant les même champs mais ne comportant que les villes de plus de 100 000 habitants , ca soulage la base de données parcequ'au final, les villes de plus de 100 000 habitants ne sont pas stockés dans une autre table

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    ok, merci pour tes réponses

  6. #6
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    si tu veux vraiment utiliser une fonction ou une procédure

    il te faudra utiliser la fonction GROUP_CONCAT pour vraiment extraire tout ce que tu souhaite, car une fonction ne retourne qu'une seule chose!

    le group_concat c'est l'implode php pour MySQL,

    Même exemple que plus haut :

    retourner toute les villes de france:

    select group_concat(nom_ville separator "/") from ville_de_france;

    et la tu aura une seule ligne de résultat sous la forme : Paris/Marseille/Lyon/...

    et à toi de l'exploiter coté php

    si tu tiens à réaliser une fonction, enumère moi les champs de ta table que tu veux extraire et je t'aiderais

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    ok pour la fonction, si tu peux me mettre à quoi ressemblera la synthaxe pour la lire en php, je suis preneur :

    Table Contenu:
    id(integer)
    timestamp(timestamp)
    auteur(varchar(32))
    titre(varchar(32))
    texte(text)

    En fait la premiere procédure que je voulais faire consistait à faire un test sans paramètres, donc juste récupérer tous les noms des auteurs ainsi que leurs titres. Je voulais vois comment ca marche pour afficher une procédure sans parametre dans mon code PHP.
    Puis après je voulais essayer avec un parametre d'entrée, je donne le nom de l'auteur et il me sort tout ses titres.Pareil, ce qui m'interessait, c'est de voir comment entrer des parametres dans le code php.

    Merci pour ton aide,

  8. #8
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    ok je te répondrais en éditant ce même message

    alors le sql pour moi serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     DELIMITER $$
     CREATE FUNCTION auteur() RETURNS TEXT deterministic reads sql data
     BEGIN
     DECLARE mesauteur TEXT;
     select concat('[COLONNE]',GROUP_CONCAT(auteur separator '-|||-'),'[COLONNE]',GROUP_CONCAT(titre separator '|---|')) from mail_test into mesauteur;
     RETURN mesauteur;
     END$$
     DELIMITER ;
    le php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tableau = explode('[COLONNE]',$row['auteur()']);
    $auteur = explode('-|||-',$tableau[1]);
    $titre = explode('|---|',$tableau[2]);
    ici $auteur[0] = "Zend" et $titre[0] = "Manuel PHP" par exemple

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    Est-ce que tu pourrais juste rajouter dans le code php l'appel de la fonction?

    Encore merci,

  10. #10
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $req = mysql_query('select auteur()');
     
    $row = mysql_fetch_array($req);

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    Merci pour tes réponses et ta patience !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/08/2008, 01h32
  2. [DEBUTANT]Récupérer plusieurs champs dans une procédure stockée
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/06/2007, 17h58
  3. Réponses: 3
    Dernier message: 23/01/2007, 09h20
  4. Récupérer le résultat d'une procédure stockée
    Par DanZzz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/11/2006, 22h08
  5. [C#] Récupérer le résultat d'une procédure stockée
    Par fabrice1596 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/10/2004, 13h45

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