Champs de plusieurs donnees du meme type

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 : Champs de plusieurs donnees du meme type

Re: Champs de plusieurs donnees du meme type

par rimie » 20 janv. 2012, 05:43

ce qui me bloque c'est le suivant:
// je fais une requete pour recuperere les chansons
SELECT............
$resultChansons = '........';


// je fais une requete pour recupererer les chanteurs, suivant la methode ci-dessus
SELECT............
$resultChanteurs = '........';

foreach($resultChanteurs ...)
{

}


// ici je fais l'affichage des chansons:

foreach($resultChansons ...)
{


}

si je prend le foreach($resultChanteur...) et je la mets au sein de foreach($resultChansons ...) ca me donne:

chanson1: liste des chanteurs.....
chanson1: liste des chanteurs.....
chanson1: liste des chanteurs.....
...

chanson2: liste des chanteurs.....
chanson2: liste des chanteurs.....
chanson2: liste des chanteurs.....
...

ca melange les resultats parce que j'ai fait un double foreach, une au sein de l'autre

et si je le fais separement, ca me donne:

chanson1: dernier chanteur
chanson2: dernier chanteur

il prend juste le dernier chanteur

Re: Champs de plusieurs donnees du meme type

par rimie » 20 janv. 2012, 05:27

non ca marche pas, ca donne des resultats confondus

Re: Champs de plusieurs donnees du meme type

par Shenryu » 18 janv. 2012, 10:18

Plutôt quelque chose comme ça alors :
SELECT * FROM chansonjoin, chanteurs, chansons WHERE chansonjoin.idchanteur = chanteurs.id AND chansonjoin.idchanson = chansons.id;

Re: Champs de plusieurs donnees du meme type

par rimie » 18 janv. 2012, 05:10

Il faudrait que tu me passes ton modèle mis à jour.. Qu'est-ce que chansonjoin ?
c'est la table de jointure des 2 tables (chanteurs, chansons), qui a comme champs les id des 2 tables

Re: Champs de plusieurs donnees du meme type

par Shenryu » 17 janv. 2012, 10:36

Il faudrait que tu me passes ton modèle mis à jour.. Qu'est-ce que chansonjoin ?

Re: Champs de plusieurs donnees du meme type

par rimie » 17 janv. 2012, 06:40

est ce que vous avez une idee sur ce probleme?

Re: Champs de plusieurs donnees du meme type

par rimie » 12 janv. 2012, 14:18

Voila sauf que pour le coup, tu n'as pas besoin de ta colonne id sur cette nouvelle table.
Ta clé primaire se constitue du couple de tes deux champs idchanson et idchanteur ;)
J'ai fait cette requete:
$sqlsh = 'SELECT * FROM chansonjoin, chanteurs, chansons WHERE chansonjoin.id = chanteurs.id_ch AND chansonjoin.id = chansons.id_c';
        
        
echo $sqlsh;
$reqsh = $connexion->query($sqlsh);
$resultsh = $reqsh->fetchAll();
		
		$chanteur_list = '';
		foreach($resultsh as $shK=>$shV)
		{
			$chanteur = $shV['chanteur'];
			
			$chanteur_list .= $chanteur;
		}
        echo $chanteur_list;


Mais puisque cette requete se trouve au sein d'une autre requete:
foreach()

{
	//ma requete sqlsh
	
}

ca me donne un resultat:
chanson1: chanteur1, chanteur4, chanteur8

de meme chanson2

chanson2: chanteur1, chanteur4, chanteur8


@Mazarini: titre :)

Re: Champs de plusieurs donnees du meme type

par Mazarini » 12 janv. 2012, 12:52

Il y a une ambiguïté, entre une chanson=titre et une chanson=enregistrement sonore.

Re: Champs de plusieurs donnees du meme type

par Shenryu » 12 janv. 2012, 11:14

Voila sauf que pour le coup, tu n'as pas besoin de ta colonne id sur cette nouvelle table.
Ta clé primaire se constitue du couple de tes deux champs idchanson et idchanteur ;)

Re: Champs de plusieurs donnees du meme type

par rimie » 12 janv. 2012, 11:06

quelque chose comme:
CREATE TABLE joinTables
id
idchanson
idchanteur

INSERT INTO joinTables VALUES ('', 1, 1);
,('', 1, 3);
,('', 1, 8);

La chanson 1 a ete chante par chanteur1, chanteur3 et chanteur8

Re: Champs de plusieurs donnees du meme type

par Shenryu » 12 janv. 2012, 10:29

Salut,

Il faut que tu fasses une table de jointures entre les deux qui va contenir tes id chansons et chanteurs.

Cela te permettra de connaître :
- les chansons chantées par un chanteur
- les chanteurs qui ont chanté une chanson

Éventuellement, le même procédé peut être utilisé entre album et chanson car la même chanson peut exister sur plusieurs albums ;)

Champs de plusieurs donnees du meme type

par rimie » 12 janv. 2012, 09:47

Bonjour,

J'ai 3 tables (albums, chansons et chanteurs):
CREATE TABLE albums
id
album

CREATE TABLE chansons
id
idalbum
chanson

CREATE TABLE chanteurs
id
idchanson
chanteur
une seule chanson peut etre chantee par plusieurs chanteurs, resultat souhaite:

Code : Tout sélectionner

chanson1: chanteur1, chanteur3, chanteur8 chanson2: chanteur2, chanteur3, chanteur10, chanteur20 chanson3: chanteur1, chanteur13, chanteur18
que dois je faire exactement pour avoir ce resultat?

est ce qu'il y a un type de champs que l'on peut mettre:
CREATE TABLE chansons
id
idalbum
idchanteurs => les enumerer (chanteur1, chanteur2, chanteur3, chanteur4)
chanson
merci