Base de Donnée, cherche maniére de trier

Résolu/Fermé
jack000 Messages postés 22 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 octobre 2009 - 15 déc. 2008 à 19:39
jack000 Messages postés 22 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 octobre 2009 - 17 déc. 2008 à 10:14
Bonjour,

Je fais un site web du même style que allociné.
Dans ma BDD la table "film" comporte "titre", "acteur1", "acteur2", "acteur3".
je cherche à comparer les 3 acteurs.
Au final je veux: A B C D E.... lorsque l'on clic sur "A"
TOUS les acteurs commençants pas un "A" s'affiche avec TOUS les titres des films dans le quel ils ont joué en acteur1, acteur2 ou acteur3.

J'ai réussi avec une façons un peut trop bourrin à mon gout, MAIS je compare seulement les ACTEUR1.

	if (isset($_GET['lettre']))
	{
		$lettre = $_GET['lettre']; // On récupère le mot
		$lettre = $lettre[0];//on récupére la lettre
	}

	$reponse = mysql_query('SELECT * FROM film ORDER BY acteur1 ');

		for ($i=ord("A");$i<=ord("Z");$i++)//affiche alphabet
			echo '<a href="aff_acteur.php?lettre='.chr($i).'"><font size=6 face="2Peas Short Blonde Hair">'.chr($i).'</font></a> ';

		while ($donnees = mysql_fetch_array($reponse))
		{
		
			$b=$donnees['acteur1'];// 1er lettre de l'acteur
			if($lettre==$b[0])//selectionne les acteurs à afficher
			{	
				if($var!=$donnees['acteur1'])
				{	
					echo '<br><FONT SIZE=4 FACE="Comic Sans MS" COLOR="#000080">'.$donnees['acteur1'].' : </font>';  
				}
			echo '	<a title="'.$donnees['titre'].'" href="aff_info_film.php?info='.$donnees['titre'].'">'.$donnees['titre'].'</a>';						
			$var=$donnees['acteur1'];
			}
			
		}


J'espère acoir bien expliqué mon problème.

Merci à ceux qui essayeront de me venir en aide :)

2 réponses

jack000 Messages postés 22 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 octobre 2009
15 déc. 2008 à 21:47
J'ai déjà référencé plus de 300 films dans la table film.
Pour chaque film j'ai rentré le titre, 3 acteur principaux, producteur, année, synopsis, bande annonce .....

Donc une autre méthode serais la bienvenue :)
0
jack000 Messages postés 22 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 octobre 2009
16 déc. 2008 à 10:24
Dsl mais je vois pas comment faire la table FILM_ACTEUR sachant qu'il peut y avoir 5 à 30 film pour un acteur. :s
0
jack000 Messages postés 22 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 octobre 2009 > Utilisateur anonyme
17 déc. 2008 à 09:48
	if (isset($_GET['lettre']))
	{
		$lettre = $_GET['lettre']; // On récupère le mot
		$premiére_lettre_selection = $lettre[0];//on récupére la lettre
	}
	else // La variable n'existe pas, c'est la première fois qu'on charge la page
	{
		$premiére_lettre_selection = A; //(par défaut)
	}	
	
	$acteur1 = mysql_query('SELECT * FROM film ORDER BY acteur1 ');
	$acteur2 = mysql_query('SELECT * FROM film ORDER BY acteur1 ');
	$acteur3 = mysql_query('SELECT * FROM film ORDER BY acteur1 ');
	
	while($donnees1 = mysql_fetch_array($acteur1))
	{
		$var1=$donnees1['acteur1'];
		mysql_query( "INSERT INTO Acteur (ActeurTT) VALUES ('$var1')");//insert acteur1
		$donnees2 = mysql_fetch_array($acteur2);
		$var2=$donnees1['acteur2'];
		mysql_query( "INSERT INTO Acteur (ActeurTT) VALUES ('$var2')");	//insert acteur2
		$donnees3 = mysql_fetch_array($acteur3);
		$var3=$donnees1['acteur3'];
		mysql_query( "INSERT INTO Acteur (ActeurTT) VALUES ('$var3')");	//insert acteur3
	}


			// ----------------------------------------//
			// -----------------Affiche--------------//
			// ---------------------------------------//
	echo '	<div class="element_video">'; 	
		for ($i=ord("A");$i<=ord("Z");$i++)//affiche alphabet
			echo '<a href="test.php?lettre='.chr($i).'"><font size=6 face="2Peas Short Blonde Hair">'.chr($i).'</font></a> ';
		
		$reponse = mysql_query('SELECT * FROM Acteur ORDER BY ActeurTT');
		$reponse1 = mysql_query('SELECT * FROM film ORDER BY acteur1 ');
		$reponse2 = mysql_query('SELECT * FROM film ORDER BY acteur2 ');
		$reponse3 = mysql_query('SELECT * FROM film ORDER BY acteur3 ');
		

		while ($donnees_acteurTT = mysql_fetch_array($reponse))
		{		
			$premiére_lettre_acteurTT=$donnees_acteurTT['ActeurTT'];// 1er lettre de l'acteur
			if($premiére_lettre_selection==$premiére_lettre_acteurTT[0])//selectionne les acteurs à afficher selectionné par ordre alpha
			{	
				echo '<br><FONT SIZE=4 FACE="Comic Sans MS" COLOR="#000080">'.$donnees_acteurTT['ActeurTT'].' : </font>';  //affiche acteur
					while ($donnees_film = mysql_fetch_array($reponse1))//fait défiller tous les film 
					{
						if($donnees_acteurTT['ActeurTT']==$donnees_film['acteur1'])//compare ActeurTT avec Acteur1
						echo $donnees_film['titre'];
					}
					while ($donnees_film = mysql_fetch_array($reponse2))//fait défiller tous les film 
					{
						if($donnees_acteurTT['ActeurTT']==$donnees_film['acteur2'])//compare ActeurTT avec Acteur2
						echo $donnees_film['titre'];
					}				
					while ($donnees_film = mysql_fetch_array($reponse3))//fait défiller tous les film 
					{
						if($donnees_acteurTT['ActeurTT']==$donnees_film['acteur3'])//compare ActeurTT avec Acteur3
						echo $donnees_film['titre'];
					}				
			}
			
		}



Le problème : tous les acteur s'affiche correctement, mais les titre des film s'affiche seulement pour le premier acteur :s
jack000 Messages postés 22 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 octobre 2009 > jack000 Messages postés 22 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 octobre 2009
17 déc. 2008 à 10:14
C'est bon j'ai réussi merci quand même :)

http://pons.xavier.free.fr/aff_acteur