Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 12-01-2005 16:02:04

Guest
Membre
Date d'inscription: 26-06-2004
Messages: 15
Site web

SQL- récurrence dans une table

Bonjour,
Vla mon souci,:
J'ai une table avec des catégories (pour un annuaire de liens), une catégorie peut avoir des catégories enfants et des catégories parents (dans la même table).
table "categorie":
cat_id ; cat_mere_id ; cat_name ; cat_libelle
table "lien":
lien_id ; cat_id ;lien_url ; lien_titre; lien_libelle
Lors d'une recherche de liens par mot clefs par exemple le mot "programmation",ce que sa fait maintenant,c'est que ça recherche tous les liens qui ont "programmation" soit dans leur titre,url,libelle ou catégorie mère c'est facile ça...

Ce que j'aimerais faire:
C'est que si j'ai une catégorie "programmation" qui a une sous catégorie "web" qui a 10 liens, je veux que les 10 liens me soient retourner ce qui n'est pas le cas en ce moment.
J'espère que je suis assez clair, merci d'avance de votre attention.
@+

Hors ligne

 

#2 12-01-2005 16:45:04

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3380
Site web

Re: SQL- récurrence dans une table

voici comment j'ai fait sur sophilia, qui fonctionne d'une maniere semblable pour les catégories :

Code:

<?php
$connect = mysql_connect($mysql['server'], $mysql['pseudo'], $mysql['pass']) or die("Impossible de se connecter au serveur mysql");

mysql_select_db($mysql['base']) or die("Impossible de se connecter à la base de données mysql");

$sql = "SELECT `IdCat`, `NomCat`, `RssCat`, `NomRss`
FROM `Categorie`
WHERE `NumCat` = '$categorie'";

$query = mysql_query($sql);
$fetch = mysql_fetch_array($query);
$NomCat = $fetch['NomCat'];
$IdCat = $fetch['IdCat'];
$RssCat = $fetch['RssCat'];
$NomRss = $fetch['NomRss'];

echo "<b>".$NomCat."</b><br />";
$sql = "SELECT `IdCat`, `NomCat`
FROM `Categorie`
WHERE `NumCat` = '$IdCat'";

$query = mysql_query($sql);
while ($fetch = mysql_fetch_array($query)) {
$IdCat2 = $fetch['IdCat'];
$NomCat2 = $fetch['NomCat'];
echo $NomCat."<br />";
}

mysql_close($connect);
?>

comment ca fonctionne :
tout simplement : tu recupere l'entrée catégorie, puis, tu recupere toutes les catégories dont la catégorie 'mere' est ta premiere catégorie...

c'est clair ?  tongue

Hors ligne

 

#3 13-01-2005 07:36:21

Guest
Membre
Date d'inscription: 26-06-2004
Messages: 15
Site web

Re: SQL- récurrence dans une table

Merci pour ta réponse rapide.
En fait, j'imaginais un truc plus compliqué en 1 seule requête, sinon ça va faire pas mal de code alors que je suis persuadé qu'il y a plus court.
@+
Xavier

Hors ligne

 

#4 13-01-2005 11:05:17

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3380
Site web

Re: SQL- récurrence dans une table

Non, tu ne peux pas ressortir plusieurs champs d'une meme table en une seule requete

Hors ligne

 

#5 13-01-2005 14:08:35

Guest
Membre
Date d'inscription: 26-06-2004
Messages: 15
Site web

Re: SQL- récurrence dans une table

Bon bah j'espérais,
obliger de coder des lignes et des lignes pfff...
Merci en tout cas.
Salut
Xavier

ps: j'aime bien ton site "sophilia"

Hors ligne

 

#6 14-01-2005 16:45:38

Guest
Membre
Date d'inscription: 26-06-2004
Messages: 15
Site web

Re: SQL- récurrence dans une table

euh j'ai pas regardé en detail

mais une requete de style
SELECT * FROM table WHERE cat='toto' OR cat_mere='toto'

c pas jouable ?

Hors ligne

 

#7 14-01-2005 16:49:32

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3380
Site web

Re: SQL- récurrence dans une table

bah, il faut qu'il récupere les id de toutes les sous catégories avant de pouvoir ressortir les entrées correspondant à ces sous catégories

et puis recuperer l'id des sous catégories correspondantes, il lui faut l'id de la catégorie principale

donc, deux requetes  wink

Hors ligne