Relier des données dans une table [SQL et PHP] - SQL/NoSQL - Programmation
Marsh Posté le 07-07-2007 à 17:12:24
Ca dépend de ton SGBD.
Da façon habituelle, un SGBD n'a aucun moyen de faire ça.
Maintenant, il existe le CONNECT BY sous Oracle, ou "je sais plus quel autre truc" prévu dans la norme SQL, mais pas toujours supporté.
Reste alors les solutions d'écrire une procédure stockée, ou faire à la main dans ton code PHP.
Marsh Posté le 07-07-2007 à 18:33:41
Ok merci.
J'ai pris l'option pas chere : mysql
La seule solution que javais trouvé, cetait créer une boucle à la main, cad :
if ($depend_id)
{
requete pour verifier s'il y a un depend id
if($depend_id)
etc. jusqu'à ce que la ligne n'est plus de depend id (par exemple, si on commence par 3, il voit qu'il a un depend id qui est le 2, puis il voit que le 2 a un depend id qui est de 0 etc.)
Le problème c'est que maintenant, il commence a y avoir bcp plus de niveau qu'avant, donc ca fait un script tres tres lourd ...
Peut-etre dois-je poster dans la section PHP ?
Merci,
JP.
Marsh Posté le 07-07-2007 à 18:41:13
algo :
query = "select id, depend_id, blabla from latable where id = :id"
query_bind_parameter("id", 5);
results = run_query();
while(results != null)
{
print(results["blabla"]);
query_bind_parameter("id", results["depend_id"]);
}
Marsh Posté le 08-07-2007 à 10:13:15
Salut,
Merci pour ta réponse.
Je rencontre le problème suivant : la fonction query_bind_parameter n'existe pas ...
J'ai cherché un peu partt sur internet, mais je ne lai pas trouvé.
Par contre, j'ai trouvé la fonction suivante, mais je ne suis pas sur que ce soit celle la qu'il faille :
query_bind($query,'id',5);
Qu'en pense tu ?
Merci,
JP.
Marsh Posté le 08-07-2007 à 10:17:08
Je rajoute un petit truc
query_bind / query_parameter ce sont en fait des fonctions oracles, ou alors ce que jai trouvé comme script de creation de fonction (function ...), cetait pour oracle.
Petite impasse dans mon cas, car jutilise mysql...
Marsh Posté le 08-07-2007 à 11:33:30
effectivement, ça a l'air d'être cette fonction.
je ne fais pas de dev PHP (c'est pour ça que je parlais "d'algo" ) donc ne te base pas sur ma syntaxe inventée, mais sur l'algo
sinon, ces fonctions existent aussi pour mysql.
essaie de rechercher "requête paramétrée" ou "requête préparée" dans google pour plus d'info.
si vraiment tu trouves pas, tu peux continuer à coller la valeur de ton id directement dans la requête à la main. c'est juste un peu plus lent et moins propre (notammant le dernier coup, quand t'aura "null" ça va planter si tu ne bind pas en tant que paramètre, il faudra donc vérifier à la main et modifier à cet effet la condition de sortie de boucle.
Marsh Posté le 08-07-2007 à 13:56:26
Salut,
Merci pour ta réponse.
Je ne trouve pas pour mysql, ou tu du moins pour mysql & php (jai trouvé pour C#, pour ASP etc.)
Sinon, je ne comprends pas trop ta solution ...
Je vais poster sur le forum php, pour voir ce que ca donne.
Marsh Posté le 08-07-2007 à 14:11:46
Code :
|
Qu'en pense tu ?
Marsh Posté le 07-07-2007 à 15:58:32
Bonjour à tous,
Je suis un programmeur amateur en php et la je réalise un petit site perso.
Voici la structure de ma table :
id ; depend_id ; contenu (nom des champs)
0 ; '' ; 'blabla'
1 ; '' ; 'b'
2 ; 0 ; 'c'
3 ; 2 ; 'd'
4 ; 0 ; 'e'
(valeurs)
Je me casse les dents depuis bien longtemps sur ce probleme.
Le contenu de l'id 3 est associé au contenu de l'id 2 qui est associé au contenu de l'id 0 qui est lui associé à aucun autre contenu.
Le contenu de l'id 4 est seulement associé au 0.
Je souhaiterais faire une requete qui affiche le résultat suivant :
pour 0, elle affiche blabla
pour 1, elle affiche b
pour 2, elle affiche c blabla
pour 3, elle affiche d c blabla
pour 4, elle affiche e blabla
Je n'ai vraiment aucune idée par où je peux commencer.
A noter que jutilise une base de donnée SQL, et que jassocie avec le PHP. En théorie d'aileurs, cette requete peut etre exprimer uniquement en SQL, non ?
Pouvez vs maider svp ? (jespere que mon pb est clair )
Merci =)
JP.