Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1155 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Récupérer des données sur une clé double

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer des données sur une clé double

n°1844804
moaaaaa
Posté le 29-01-2009 à 15:42:24  profilanswer
 

Bonjour,
 
J'ai un soucis pour récupérer mes données d'une table qui est constituée d'une double clé. En gros, nous pourrions prendre comme exemple que nous avons un type d'ampoule qui aurait une puissance. Ainsi, une ampoule serait définie par son type ainsi que sa puissance. Ces deux champs formeraient donc la clé primaire qui suffirait à définir nos besoins, à savoir une ampoule.
 
J'ai une méthode qui est la suivante:


public function selectLines($champs, $table, $condition){
     $requeteSQL = 'SELECT ' . $champs . ' FROM ' . $table . ' ' . $condition;
     // Affichage de la requête pour les tests
     //echo '<br />' . $requeteSQL . '<br />';
        $resultatRequete = array();
        $ressource = mysql_query($requeteSQL);
        $i=0;
        while ($row = mysql_fetch_array($ressource)){
         $resultatRequete[$i] = $row[0];
         $i++;
  }
  return $resultatRequete;
}


Et une autre pour ne faire la recherche que sur un seul champ qui est:
 


public function selectTypeSourceSimple($typeSourceLum){
     $typeSource = new TypeSource();
     
     // Données pour le type de source
     $resultats = $this->selectRow('*','type_source','WHERE type_source_lum LIKE "%' . $typeSourceLum . '%"');
     $typeSource->setTypeSource($resultats[0]);
     $typeSource->setPuissance($resultats[1]);
     $typeSource->setDureeVie($resultats[2]);
     return $typeSource;
}


 
Et lors de l'appel, je fais:


$resultats = $db->selectLines('*','type_source','WHERE type_source.type_source_lum LIKE "%' . $valeur . '%"');
 for ($i=0; $i<sizeof($resultats);$i++){
  $typeSource = $db->selectTypeSourceSimple($resultats[$i]);
  $typeSource->afficher();
 }


 
J'ai testé avec l'affichage de la requete et ai rentré celui-ci dans phpMyAdmin. Ce dernier me retourne bien le résultat escompté. Par contre, lors de l'affichage dans ma page, il me trouve bien X-entrées (le nombre juste) mais il me retourne toujours la même valeur pour la deuxième clé.
Ainsi, si nous avons un type d'ampoule Sodium avec des puissances de 10, 20, 30, 40 et 50 [W] (pour l'exemple), il me retournera bien 5 valeurs mais ce sera 5 ampoules de sodium à 10 [W].
 
Quelqu'un aurait-il une idée???  
 
Merci à ceux qui voudront bien aider un débutant comme moi...
 
P.S. Je pense qu'il y a bien plus facile à faire, autant pour la base de données que pour le code. En ce qui concerne la BDD, j'aimerais bien garder la structure de la clé-double par contre, au niveau du code, je suis ouvert à toute proposition.
P.S.2: Inutile de faire des commentaires qui n'apportent rien à mon problème... Je suis débutant et vous êtes certainement passés par là   ;)  ;)  ;)


Message édité par moaaaaa le 30-01-2009 à 08:29:52
mood
Publicité
Posté le 29-01-2009 à 15:42:24  profilanswer
 

n°1844849
omega2
Posté le 29-01-2009 à 16:37:37  profilanswer
 

Si je comprends bien, tu fais une requête générale qui te retourne toutes les données dont t'as besoin.
Ensuite pour chaque ligne récupéré tu fais une autre requête qui est censé te retourner la même chose et ce en indiquant qu'un seul élément de ta clé primaire comme condition.
 
Dans ces conditions, vu que tu ne boucles pas sur le résultat de la seconde requête, ça ne m'étonne pas que t'ai X fois les même données à l'affichage. D'ailleurs je n'ai pas compris à quoi ça te sert de chercher des données que t'as déjà reçu.

n°1844861
billgatesa​nonym
Posté le 29-01-2009 à 16:48:16  profilanswer
 

Je n'ai pas regardé dans le détail, mais c'est peut-être un problème de paramètres passés à la fonction. Par exemple, je vois que le mot $resultats est utilisé pour des choses différentes, et peut-être qu'il y aurait une interférence.
 
(Et puis ce serait plus lisible en mettant le code entre des balises [fixed ] et [/fixed] ou [cpp ] et [/cpp], ce qui peut se faire en sélectionnant le code et en cliquant sur le bouton "Fixe" ou "C/C++".)

n°1845064
moaaaaa
Posté le 30-01-2009 à 08:43:14  profilanswer
 

Salut à tous,
Merci pour le truc du [fixed], je ne connaissais pas et l'ai donc ajouté.
 
Pour mon problème, je cherche juste à faire une requête qui me récupère les entrées d'une table contenant une clé double suivant un critère de saisie de l'utilisateur et d'afficher ensuite les données.
 
Dans le code donné précédemment, le "selectLines" fait la requête en fonction d'un critère que l'utilisateur a entré dans un formulaire. Le "selectTypeSourceSimple" sert à initialiser l'objet avec les valeurs (table à trois champs).
 
Ensuite, je veux juste afficher les objets créés.
 
Merci dans tous les cas pour la rapidité de vos messages et pour vous être penché dessus.

n°1845113
omega2
Posté le 30-01-2009 à 10:59:45  profilanswer
 

Le problème de ton selectTypeSourceSimple, c'est qu'il prend une ampoule au hasard (le premier de la liste retourné par mysql) parmi celles du type indiqué alors que d'après ta fonction principale il faudrait qu'il initialise l'objet avec les données récupéré par la fonction principale.

n°1845168
moaaaaa
Posté le 30-01-2009 à 12:41:11  profilanswer
 

Merci pour la réponse mais pour abuser... Quelqu'un pourrait-il m'écrire une fonction qui prendrait une valeur en entrée (le type justement, retourné depuis le formulaire) et qui ressortirait la liste complète ayant ce type (donc le type avec ses puissances)  :jap:  
 
En tout cas, merci pour la rapidité des réponses aussi  ;)

n°1845176
omega2
Posté le 30-01-2009 à 12:56:51  profilanswer
 

Vu que tu sais demander les données à la base de donnée et boucler sur la réponse pour les récupérer, je ne vois pas ce qui te bloque pour cette fonction somme toute très simple. ;)

n°1845186
moaaaaa
Posté le 30-01-2009 à 13:17:38  profilanswer
 

Bah, la fin de la semaine et l'approche du week-end sans doute ;)
 
J'ai encore tout l'à-côté à faire donc je reposte si je ne m'en sors pas et que je pète un plomb  :pt1cable:  :pt1cable:  :pt1cable:  
 
Merci dans tous les cas.
 
++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Récupérer des données sur une clé double

 

Sujets relatifs
MSSQL et historisation de données temps réel[JAVA/EE] Export de données MySQL5 vers formulaire Word
Problème prévention données, visual Studio 2008 + .net + vista SP1Coupure au 1er mot lors de l'affichage des données
[MySQL] Requete pour récupérer les lignes de fin de moisComment synchroniser Hibernate avec base de données???
Savoir si une base de données est mono ou multi utilisateur ?Détecter les doublons sur une base de données MYSQL
Récupérer soit un champ dans une table soit un champ dans une autreRetrouver dans la ram certaines données.
Plus de sujets relatifs à : Récupérer des données sur une clé double


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR