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 :

retourner l'id d'une occurence d'une table avec une fonction de la classe [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web (en formation)
    Inscrit en
    Septembre 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine Saint Denis (Île de France)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 30
    Points : 25
    Points
    25
    Par défaut retourner l'id d'une occurence d'une table avec une fonction de la classe
    Bonjour,
    Je débute en POO et j'avoue avoir du mal.
    J'ai une classe "type" avec les propriétés "idType" et "libelle". J'ai aussi dans ma base de données la table "type" avec les colonnes "idType" et "libelle" correspondantes à la classe "Type".
    J'ai fais cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static function lireIdTypeDepuisLib($libelle) {
          try {
            $oMyPdo = new MyPDO();
          } catch(PDOException $e) {
            echo $e->getMessage();
          }
          $oMyPdo->exec("set names utf8");
          $reqSql = "SELECT idType FROM type WHERE libelle=$libelle;";
          $oMyPdoStmt = $oMyPdo->query($reqSql);
          $idType = $oMyPdoStmt->fetch();
          return $idType;
        }
    Mais je n'arrive pas à avoir le retour de l' "idType".
    J'ai essayé pas mal de choses différentes mais sans succès, dont une autre fonction pour retourner tout l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static function lireTypeDepuisLib($libelle) {
          try {
            $oMyPdo = new MyPDO();
          } catch(PDOException $e) {
            echo $e->getMessage();
          }
          $oMyPdo->exec("set names utf8");
          $reqSql = "SELECT * FROM type WHERE libelle=$libelle;";
          $oMyPdoStmt = $oMyPdo->query($reqSql);
          $oType = $oMyPdoStmt->fetch(PDO::FETCH_OBJ);
          return $oType;
        }
    mais sans succès également.
    Il doit y avoir un problème dans ma façon d'appeler la fonction ou autres.
    Je dois probablement mal utiliser l'appel aux fonctions et j'avoue ne pas avoir bien capté la différence entre -> et :: pour appeler les fonctions.
    Quelqu'un pourrait il m'aider svp ?

  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
    M'est avis que le problème vient davantage du code de la fonction que de la fonction elle-même : il te manque les quotes autour du libellé Et au passage, il faudrait échapper le paramètre avant de l'injecter dans la requête, ou utiliser une requête préparée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pLib = $oMyPdo->quote($libelle);
    $reqSql = "SELECT * FROM type WHERE libelle='$pLib'";
    $oMyPdoStmt = $oMyPdo->query($reqSql);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $stmt = $oMyPdo->prepare("SELECT * FROM type WHERE libelle=?");
    $stmt->execute([$libelle]);
    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
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web (en formation)
    Inscrit en
    Septembre 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine Saint Denis (Île de France)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Avec les quotes autour de la variable, cela fonctionne, merci.

    Cela dit, j'avoue ne pas comprendre car les quotes habituellement sont sensés être utilisés pour écrire du texte ce qui me faisait penser que cela donnerait la même chose que si j'écrivais en dure $libelle comme paramètre et non que ce soit le contenu de la variable qui soit pris comme paramètre.

    J'avais essayé d'écrire la requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT * FROM type WHERE libelle' . $libelle;
    mais cela ne fonctionnait pas non plus.

  4. #4
    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
    Les quotes sont effectivement faites pour écrire du texte. Ta base de donnée attendait un texte (je suppose que la colonne libelle dans ta table est un VARCHAR ou quelque chose de similaire)
    La requête SQL brute devrait être quelque chose comme
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM type WHERE libelle='Chaussette'
    , ce qui en PHP donne une chaine de la forme :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM type WHERE libelle='Chaussette'";
    .
    Si on ajoute la variable dans l'équation, ça devient
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $libelle = "Chaussette";
    $sql = "SELECT * FROM type WHERE libelle='$libelle'";
    .
    CQFD.
    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]

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web (en formation)
    Inscrit en
    Septembre 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine Saint Denis (Île de France)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    D'accord, donc il faut juste le savoir, dans ce cas les quotes servent pour encadrer une variable, merci.

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

Discussions similaires

  1. [POO] retourner les attributs d'une classe
    Par ozzmax dans le forum Langage
    Réponses: 10
    Dernier message: 12/01/2006, 00h10
  2. Procédure stockée - Retourner plusieurs ligne d'une table
    Par ronando dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/11/2005, 13h19
  3. Réponses: 2
    Dernier message: 31/10/2005, 17h25
  4. Retourner un tableau depuis une fonction
    Par obalais dans le forum C++
    Réponses: 2
    Dernier message: 20/10/2005, 16h49
  5. Réponses: 3
    Dernier message: 18/10/2005, 15h34

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