par
weri » 17 sept. 2012, 11:11
Salut Mazarini,
En ajoutant des critères je me rends en effet compte qu'il y a parfois des doublons, et parfois non, mais je n'arrive pas à comprendre à quoi c'est dû. Je mets ici la requête entière. Si tu as des commentaires sur la manière de faire aussi, je suis preneur, c'est la première fois que je fais ce genre de programme.
// Chaine SQL - - - - - - - - - - - - - - -
$chSQL = "SELECT ll.lecon_liste_id,
c.niveau,
c.langue_mater,
c.categorie,
user.hn,
ll.date_mise_en_ligne,
c.titre_cible,
c.titre_mater,
ll.description_cible,
ll.description_mater,
ll.version,
c.langue_cible,
ll.titre_cible,
ll.titre_mater,
ll.lesson_code,
c.type,
c.collection_id
FROM dt_lecon_liste AS ll
INNER JOIN dt_collection AS c
ON ll.collection_id = c.collection_id
INNER JOIN user
ON c.key_id = user.key_id
INNER JOIN flw_collaboration
ON ll.collection_id = flw_collaboration.collection_id
WHERE ll.en_ligne_bool='1'";
// AUTEUR : prise en compte d'un auteur
if ($id_auteur!=0){
$chSQL.="AND flw_collaboration.collaborateur_id ='$id_auteur'
AND flw_collaboration.en_vigueur='1' ";
}
// LANGUE CIBLE
$chSQL.="AND c.langue_cible='$langue_cible' ";
// CATEGORIE
if ($code_categorie!=-1){
$chSQL.="AND c.categorie='$code_categorie' ";
}
// NIVEAU
if ($code_niveau!=-1){
$chSQL.="AND c.niveau='$code_niveau' ";
}
// MOTS-CLES
if ($mots_recherche!=""){
$chSQL.="AND (MATCH (ll.titre_cible, ll.titre_mater, ll.description_cible, ll.description_mater) AGAINST ('$mots_recherche')
OR MATCH (c.titre_cible, c.titre_mater, c.description_cible, c.description_mater) AGAINST ('$mots_recherche'))";
}
// ORDRE DE RENDU
if ($mots_recherche==""){
$chSQL.="ORDER BY ll.date_mise_en_ligne DESC ";
}
$chSQL.="LIMIT 50";
mysql_query("SET NAMES 'utf8'");
$result = mysql_query($chSQL);
Salut Mazarini,
En ajoutant des critères je me rends en effet compte qu'il y a parfois des doublons, et parfois non, mais je n'arrive pas à comprendre à quoi c'est dû. Je mets ici la requête entière. Si tu as des commentaires sur la manière de faire aussi, je suis preneur, c'est la première fois que je fais ce genre de programme.
[php]
// Chaine SQL - - - - - - - - - - - - - - -
$chSQL = "SELECT ll.lecon_liste_id,
c.niveau,
c.langue_mater,
c.categorie,
user.hn,
ll.date_mise_en_ligne,
c.titre_cible,
c.titre_mater,
ll.description_cible,
ll.description_mater,
ll.version,
c.langue_cible,
ll.titre_cible,
ll.titre_mater,
ll.lesson_code,
c.type,
c.collection_id
FROM dt_lecon_liste AS ll
INNER JOIN dt_collection AS c
ON ll.collection_id = c.collection_id
INNER JOIN user
ON c.key_id = user.key_id
INNER JOIN flw_collaboration
ON ll.collection_id = flw_collaboration.collection_id
WHERE ll.en_ligne_bool='1'";
// AUTEUR : prise en compte d'un auteur
if ($id_auteur!=0){
$chSQL.="AND flw_collaboration.collaborateur_id ='$id_auteur'
AND flw_collaboration.en_vigueur='1' ";
}
// LANGUE CIBLE
$chSQL.="AND c.langue_cible='$langue_cible' ";
// CATEGORIE
if ($code_categorie!=-1){
$chSQL.="AND c.categorie='$code_categorie' ";
}
// NIVEAU
if ($code_niveau!=-1){
$chSQL.="AND c.niveau='$code_niveau' ";
}
// MOTS-CLES
if ($mots_recherche!=""){
$chSQL.="AND (MATCH (ll.titre_cible, ll.titre_mater, ll.description_cible, ll.description_mater) AGAINST ('$mots_recherche')
OR MATCH (c.titre_cible, c.titre_mater, c.description_cible, c.description_mater) AGAINST ('$mots_recherche'))";
}
// ORDRE DE RENDU
if ($mots_recherche==""){
$chSQL.="ORDER BY ll.date_mise_en_ligne DESC ";
}
$chSQL.="LIMIT 50";
mysql_query("SET NAMES 'utf8'");
$result = mysql_query($chSQL);[/php]