Pb de requête Bdd / php - PHP - Programmation
Marsh Posté le 05-03-2005 à 14:02:54
le concat me parait bizarre...
Marsh Posté le 05-03-2005 à 14:08:01
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é
Marsh Posté le 05-03-2005 à 14:13:58
je pense que j'aurai plutot fait un truc du genre...
Code :
|
Marsh Posté le 05-03-2005 à 14:19:53
et un str_replace serait, je pense, meme plus rapide que l'implode de l'explode...
Marsh Posté le 05-03-2005 à 13:50:28
TABLE OPM
TABLE CONNAISSANCE
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 ) 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 )
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 :
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
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à
Pi alors ceux qui pourraient aider, je les remercie 1000 fois d'avance
Message édité par Yoda57 le 05-03-2005 à 13:54:23