Afficher une table en fonction d'une autre?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Afficher une table en fonction d'une autre?

Re: Afficher une table en fonction d'une autre?

par Ryle » 06 oct. 2010, 22:33

En fait, plutôt qu'un champ dans lequel tu concatènes tes identifiants, le mieux lorsque tu as une association 1::N (c'est à dire, lorsque à un élément d'une table peuvent être associés plusieurs éléments d'une autre table), c'est de faire une table intermédiaire qui contient deux champs : id_article et id_categorie. Pour chaque article, tu peux ainsi lui associer une ou plusieurs catégories en remplissant cette table.

Cette façon de procéder te permet de faire facilement des jointures entre tes 3 tables (une seule requête qui va interroger les 3 tables), pour savoir facilement quels articles appartiennent à une catégorie donnée, ou à quelles catégories appartient un article.

(Il est également plus facile ainsi de mettre à jour tes données : pour retirer un id, tu supprimes l'enregistrement correspondant et tu n'as pas besoin de reconstruire ta chaîne d'id à chaque fois)

Tu peux également y parvenir avec ta façon de faire en utilisant l'instruction sql LIKE, qui te permet de chercher des ressemblances dans une chaine. Tu peux ainsi faire une requête avec la condition " WHERE theme LIKE '%[sep]12[sep]%' " pour retrouver les enregistrements qui contiennent la chaîne [sep]12[sep] :)

Re: Afficher une table en fonction d'une autre?

par wwwbillgates » 06 oct. 2010, 20:20

hum, jcomprend pas bien sque tu veu dire? Un tit exemple? :P

Re: Afficher une table en fonction d'une autre?

par stealth35 » 06 oct. 2010, 18:28

fallait faire une table de correspondance les bases de données c'est fait pour :wink:

Afficher une table en fonction d'une autre?

par wwwbillgates » 06 oct. 2010, 18:04

Bonjour, j'ai dans ma base de donnée une table "categories" avec un champs "theme" contenant plusieur articles d'une table appellé "articles" enregistré à partir de leur "id" sous la forme: 2[sep]4[sep]5[sep]8[sep]12[sep]22... [sep] indiquant la séparation.

Je souhaiterais pouvoir afficher les articles de la table "articles" lorsque leur id est présent dans le champ "theme" de la table "categories" ???
Pouvez-vous m'aider svp :mrgreen:

<?php
// Requète sql
$reponse = $bdd->query("
						SELECT id, theme, articles
						FROM categories
						WHERE id = 1
						");
$categories = $reponse->fetch(PDO::FETCH_ASSOC);

					


$array_articles = explode('[sep]', $categories['articles']);



	




$reponse = $bdd->prepare("
						SELECT id, titre, ancien_prix, prix, image,	keywords, nb_de_ventes
						FROM articles
						WHERE id = :id
						ORDER BY nb_de_ventes
						");
$reponse->execute(array(
						'id' => $array_articles
						));
		$reponse->setFetchMode(PDO::FETCH_ASSOC);

while( $articles = $reponse->fetch() )
{
echo $articles['titre'];
}