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

  FORUM HardWare.fr
  Programmation
  PHP

  Pb de requête Bdd / php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb de requête Bdd / php

n°1001732
Yoda57
2 échecs valent mieux que 3
Posté le 05-03-2005 à 13:50:28  profilanswer
 

TABLE OPM
http://yolda.free.fr/opm2.JPG
http://yolda.free.fr/opm.JPG
 
TABLE CONNAISSANCE
http://yolda.free.fr/conn2.JPG
http://yolda.free.fr/conn.JPG
 
vlà deux tables de ma bdd
j'aimerai récup nom_opm, num_opm, description_opm, url_opm, duree_opm et surtout nom_conn, c'est là qu'est le pb, puisque à chaque OPM (objet pédagogique multimédia, une cours quoi :o) est associé plusieurs connaissances, d'où les ":" pour séparer les "id-con".
j'ai qqes connaissances de base en bdd mais on a pas l'habitude de manier des champs avec une "liste" d'entrées...
 
Donc ma question c'est : comment récupérer un résultat qui ressemble à ça :
 
&nomOPM7=La fin des haricots (teurs)
&numOPM7=7
&descriptionOPM7=Haha trop drole
&conOPM7=Connaissance 1:Connaissance 3
&chemin7=www.disney.com
&dureeOPM7=50
 
&nomOPM2=titreOPM2
&numOPM2=2
&descriptionOPM2=Description de l'OPM 2
&conOPM2=Connaissance 2:Connaissance 4
&chemin2=www.disney.com
&dureeOPM2=50
 
(j'ai mis n'imp dans les valeurs là hein :o)
 
 
Alors j'ai bien tenté ça dans le php , mais marche pas :
 
REQUETE 1 :
 
$query4 = "SELECT nom_opm, con_opm FROM opm;";
$result4 = requete($query4,$hostname_connexion,$username_connexion,$password_connexion,$db_name_connexion);
$cpt=1;
while( list($nopm, $ncon) = mysql_fetch_row($result4) ){
echo "&nOPM".$cpt."=$nopm";
echo "&ncon".$cpt."=$ncon";
$cpt++;
}
 
Le résultat de cette requête est :
 
http://yolda.free.fr/req4.JPG
 
Soit dans le php :
&nOPM1=titreOPM1&ncon1=3:8&nOPM2=titreOPM2&ncon2=1:2:7
&nOPM3=titreOPM3&ncon3=1:6&nOPM4=titreOPM4&ncon4=1:2:7
&nOPM5=titreOPM5&ncon5=1:2:8&nOPM6=titreOPM6&ncon6=1:6
&nOPM7=La fin des haricots (teurs)&ncon7=5&nOPM8=titreOPM8&ncon8=2:10
 
jusque là tout est normal.
 
 
REQUETE 2 :
 
$query = "SELECT nom_opm, num_opm, description_opm, nom_conn, url_opm, duree_opm FROM connaissance, opm  
WHERE connaissance.id_conn=opm.con_opm AND LOCATE($result4, CONCAT(':',id_conn,':')) > 0 ORDER BY num_opm ASC;";
$result = requete($query,$hostname_connexion,$username_connexion,$password_connexion,$db_name_connexion);
$nbresultat = mysql_num_rows($result);
if($nbresultat>0){
   $cpt=1;
   while( list($nom, $numero, $descr, $ncon, $chemin, $duree) = mysql_fetch_row($result) ){
          echo "&nomOPM".$cpt."=$nom";
          echo "&numOPM".$cpt."=$numero";
          echo "&descriptionOPM".$cpt."=$descr";
   echo "&conOPM".$cpt."=$ncon";
   echo "&chemin".$cpt."=$chemin";
   echo "&dureeOPM".$cpt."=$duree";  
          $cpt++;
   }
   $cpt--;
   echo "&nbOPM=$cpt";
}
 
Là ça chie dans la colle j'ai droit à ça pour le php :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\barnav\barre\liste_opm.php on line 39
 
 
La ligne 39 est celle en rouge :o
Il semblerait que php ai du mal à réutiliser le résultat de la requête précédente, non ? Bref là mes compétences très limitées montrent ben... leurs limites :/
 
Voilà pour les courageux qui ont été au bout et qui m'ont lu merci de votre attention déjà :o
Pi alors ceux qui pourraient aider, je les remercie 1000 fois d'avance  [:pronucleus69]


Message édité par Yoda57 le 05-03-2005 à 13:54:23
mood
Publicité
Posté le 05-03-2005 à 13:50:28  profilanswer
 

n°1001740
KangOl
Profil : pointeur
Posté le 05-03-2005 à 14:02:54  profilanswer
 

le concat me parait bizarre...


---------------
Nos estans firs di nosse pitite patreye...
n°1001743
Profil sup​primé
Posté le 05-03-2005 à 14:08:01  answer
 

ce qui 'chie dans la colle' c'est surtout ton champ contenant les differentes connaissance par opm x:y:z
fait une table supplémentaire contenant :
 
id_opm
id_conn
 
ainsi pour chaque opm tu entre la ou les connaissances associés et ca te fais une requete 10x plus simple, aucun CONCAT necessaire
 
aussi, fait un echo de tes requetes sql pour les copier ds phpmyadmin pour verifier leur validité


Message édité par Profil supprimé le 05-03-2005 à 14:09:34
n°1001745
KangOl
Profil : pointeur
Posté le 05-03-2005 à 14:13:58  profilanswer
 

je pense que j'aurai plutot fait un truc du genre...

Code :
  1. $rq = mysql_query("select * from opm" );
  2. while($row = mysql_fetch_object($rq))
  3. {
  4.    $rq2 = "select * from connaissance where id_con in any (".implode(",",explode(":",row->con_opm))." )";
  5.    [...]
  6. }


---------------
Nos estans firs di nosse pitite patreye...
n°1001746
KangOl
Profil : pointeur
Posté le 05-03-2005 à 14:19:53  profilanswer
 

et un str_replace serait, je pense, meme plus rapide que l'implode de l'explode...


---------------
Nos estans firs di nosse pitite patreye...
n°1001784
Yoda57
2 échecs valent mieux que 3
Posté le 05-03-2005 à 15:22:14  profilanswer
 

merci les gars, je vais étudier tout ça :hello:


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

  Pb de requête Bdd / php

 

Sujets relatifs
Exporter une BDDMySQL requête ciblée sur une chaine de caractère
[Access] [Résolu ]Probleme Requete sql DELETERequete optimisee ?
Requete SQL en ASP -- HelpL'opération doit utiliser une requête qui peut être mise à jour.
requete sql qui marche pas ac Mysqlaide pour une requete svp
liste déroulante chargée par requête sql et sélection dans cette listeprobleme dans requete SQL
Plus de sujets relatifs à : Pb de requête Bdd / php


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