Bonjour à tous,
Je créé un dictionnaire simple en apparence, mais qui me pose quelques problèmes. Je souhaite mettre des liens "voir aussi" qui sont des ancres entre les articles.
La base ressemble pour afficher les articles à ceci :
Dans ma table entrees j'ai un article entree_id=5 et un autre entree_id=7
J'ai une seconde table de "relations" (entrees_relations) ou je renseigne :
entree_id=5 > relation_id=7
entree_id=7 > relation_id=5
Pour préciser ma pensée : en fait je dois faire un lien entre deux entrées d'une même table (étant donné que la structure des données et la même), en utilisant une deuxième table externe, qui ne se réfère qu'aux id.
Le problème, c'est que tous les articles me renvoie des liens voir aussi, alors qu'un seul est concerné !
Je pense que j'ai un souci dans l'ordre des boucles et dans la requête, mais je ne trouve pas quoi...
Help !
Modifié par montoumes (20 Aug 2008 - 11:07)
Je créé un dictionnaire simple en apparence, mais qui me pose quelques problèmes. Je souhaite mettre des liens "voir aussi" qui sont des ancres entre les articles.
La base ressemble pour afficher les articles à ceci :
if (mysql_num_rows($requetelettre) > 0) {
if (mysql_num_rows($requetelettre) == 1) {echo '<p>'.mysql_num_rows($requetelettre).' entrée trouvée.</p>';}
else {echo '<p>'.mysql_num_rows($requetelettre).' entrées trouvées.</p>';}
$requetepremier = mysql_query("SELECT * FROM entrees WHERE entree_nom LIKE '".$lettre."%'");
$lignepremier = mysql_fetch_assoc($requetepremier);
$requetedernier = mysql_query("SELECT entree_nom FROM entrees WHERE entree_nom LIKE '".$lettre."%' ORDER BY entree_nom DESC LIMIT 0,1");
$lignedernier = mysql_fetch_assoc($requetedernier);
echo '<h3>De '.utf8_encode($lignepremier["entree_nom"]).' à '.utf8_encode($lignedernier["entree_nom"]).'</h3>';
while ($donneeslettres = mysql_fetch_array($requetelettre))
{
$ancre = nettoyage($donneeslettres['entree_nom']);
echo '<a name="'.$ancre.'" id="'.$ancre.'"></a>';
echo '<p><strong>'.utf8_encode($donneeslettres['entree_nom']).'</strong> ';
echo '<span class="discipline">'.utf8_encode($donneeslettres['entree_discipline']).' • '.utf8_encode($donneeslettres['entree_type']).' • </span> '.utf8_encode($donneeslettres['entree_definition']).'</p>';
$requeterelations = mysql_query("SELECT entrees.entree_id, entrees.entree_nom, entrees_relations.entree_id, entrees_relations.relation_id FROM entrees INNER JOIN entrees_relations ON entrees.entree_id = entrees_relations.entree_id WHERE entrees.entree_id = entrees_relations.entree_id ORDER BY entrees.entree_nom DESC");
if (mysql_num_rows($requeterelations) > 0) {
echo '<p class="seealso"><span>→</span> Voir aussi :';
while ($donneesrelations = mysql_fetch_array($requeterelations))
{
$ancre = nettoyage($donneesrelations['entree_nom']);
if ($donneesrelations['relation_id'] > 0) {
if (mysql_num_rows($requeterelations) == 1)
{echo ' <a href="#'.$ancre.'" title="Voir aussi '.$ancre.'">'.utf8_encode($donneesrelations['entree_nom']).'</a>.';}
else
{echo ' <a href="#'.$ancre.'" title="Voir aussi '.$ancre.'">'.utf8_encode($donneesrelations['entree_nom']).'</a>, ';}
}
}
echo '</p>';
}
}
} else { echo '<p>Aucune entrée du dictionnaire n\'a été trouvée.</p>'; }
echo '</div>';
Dans ma table entrees j'ai un article entree_id=5 et un autre entree_id=7
J'ai une seconde table de "relations" (entrees_relations) ou je renseigne :
entree_id=5 > relation_id=7
entree_id=7 > relation_id=5
Pour préciser ma pensée : en fait je dois faire un lien entre deux entrées d'une même table (étant donné que la structure des données et la même), en utilisant une deuxième table externe, qui ne se réfère qu'aux id.
Le problème, c'est que tous les articles me renvoie des liens voir aussi, alors qu'un seul est concerné !
Je pense que j'ai un souci dans l'ordre des boucles et dans la requête, mais je ne trouve pas quoi...
Help !
Modifié par montoumes (20 Aug 2008 - 11:07)