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

SQL Procédural MySQL Discussion :

Où se trouve le code de ma fonction ?


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut Où se trouve le code de ma fonction ?
    Bonjour,
    Je travaille actuellement sur une fonctionnalité similaire à celle décrite dans cette discussion, à savoir trouver des villes dans un rayon donnée.

    J'ai - en lisant ce post - réussit à faire fonctionner ma requête et j'ai bien mes villes en sortie.

    Mais quelque chose me trouble...
    Pour tester le bout de code fournit ici, je l'ai copié/collé dans la fenêtre sql de phpmyadmin en changeant quelques paramètres pour que ça colle avec ma base.

    Donc j'ai copié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    delimiter $$
    DROP FUNCTION IF EXISTS `distance terrestre`$$
    CREATE FUNCTION `distance terrestre`(lo_target float,la_target float,lo_ref float,la_ref float)
    returns float
    deterministic
    begin
      RETURN (6366*acos(cos(radians(la_ref))*cos(radians(la_target))*cos(radians(lo_target)-radians(lo_ref))+sin(radians(la_ref))*sin(radians(la_target))));
    end$$
    delimiter ;
     
    SELECT ville,`distance terrestre`(longitude,latitude,-1.4814908,47.9742104) AS proximite FROM communes WHERE `distance terrestre`(longitude,latitude,-1.4814908,47.9742104)<5 ORDER BY proximite;
    Résultat ok donc je clique sur "créer source php" et ça me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, nom_ville,`distance terrestre`(longitude,latitude,$_longitude,$_latitude) AS proximite FROM villes WHERE `distance terrestre`(longitude,latitude,$_longitude,$_latitude) <5 ORDER BY proximite
    Et quand je colle cette requête dans mon fichier php, ça marche aussi impeccablement mais il ya une chose que je comprends pas c'est la fonction "distance_terrestre", enfin je comprend son rôle mais dans mon code php elle est passé où cette fonction ?
    car je l'ai rentré une fois dans phpmyadmin mais ensuite elle n’apparaît pas dans mon script php, et ça fonctionne malgré tout...ça me trouble ça ! elle est stocké quelque part cette fonction ?

    Bref ça fonctionne et tant mieux, mais j'aimerai bien éclaircir ce point car c'est troublant de voir une fonction marcher sans l'avoir en dur dans le code...

    Merci d'avance
    Olivier

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 430
    Points
    28 430
    Par défaut
    C'est normal que le code de ta fonction ne soit pas dans le code PHP puisqu'elle a été créée dans le SGBD.

  3. #3
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    oui elle est dans la bd, coté mysql donc, qui était sélectionnée lors de sa création

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Merci pour vos réponses rapides.

    Qu'en est il alors, si je désire imaginons modifier cette fonction, où puis je la retrouvé dans phpmyadmin ?

    Est elle stocké en dur dans ma base de donnée ? si j'exporte ma base, la fonction suit ?

    Désolé si mes questions vous semblent "basiques", mais je suis un peu dans l’incompréhension là...

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Je ne sais pas si MySQL autorise le CREATE OR REPLACE FUNCTION. Sinon il faut faire d'abord un DROP FUNCTION puis un CREATE FUNCTION pour pouvoir la modifier.

    Et pour retrouver son code enregistrer dans MySQL, il faut interroger information_schema qui doit présenter ça quelque part dans une de ses vues.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Bon je trouve pas la fonction dans phpmyadmin...
    j'ai trouvé cette requête en cherchant "information_shema" sous google :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_TYPE
    Et ça me sort tout un tas de trucs totalement obscures pour moi, mais dans la liste je ne vois rien qui ressemble à ma fonction.

    Faut dire que habituellement mon utilisation de php/mysql est plutôt basique et j'en ai donc une connaissance toute relative...

    C'est chiant de ne pas comprendre, mais quand ça fonctionne quand même, c'est moins gênant.

    Bon au final ce que je cherche principalement à savoir, c'est si je vais bien retrouver cette fonction quand j'aurais importer ma base sur mon site distant ?

    Je reste preneur d'explications plus concises mais si au moins quelqu'un pouvait répondre à la question ci-dessus, ça serait bien.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Dans phpMyAdmin, tu as information_schema dans la colonne de gauche, au même endroit que ta BDD et ça s'ouvre comme ta BDD. Tu verras qu'il n'y a pas que la vue TABLES dedans mais plein d'autres dont notamment la vue ROUTINES.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Oui je viens juste de la trouver dans "Procédures stockées" à la racine de ma base.

    Sinon j'ai testé un export vite fait, et je la retrouve bien en sortie...me voilà rassuré !

    En tout cas je mettrais le nez dans le sql procédural quand j'aurais un peu de temps, c'est intéressant tout ça et j'ai bien envie de savoir comment ça s'articule...

    Merci beaucoup pour votre aide. Je met en résolu

  9. #9
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    regarde mon cours sur le procédural tu auras des réponses à la plupart de tes questions...
    Images attachées Images attachées

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Merci génial !

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

Discussions similaires

  1. [Free Pascal] [2.4.3] Où se trouve le code de la fonction int dans les sources
    Par Invité dans le forum Free Pascal
    Réponses: 5
    Dernier message: 08/11/2010, 18h50
  2. Réponses: 1
    Dernier message: 09/02/2009, 01h36
  3. [Tableaux] demande de code pour une fonction.php
    Par carmen256 dans le forum Langage
    Réponses: 4
    Dernier message: 21/01/2006, 17h22
  4. Menu : trouvé l'ID appelant une fonction
    Par firejocker dans le forum MFC
    Réponses: 15
    Dernier message: 28/11/2005, 10h22
  5. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41

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