[problème] Comment lier deux bases de données ?

H@D3S
Invité n'ayant pas de compte PHPfrance

17 sept. 2008, 00:21

Bonjour a tous,

Je suis actuellement entrain de créer un script et j aurait voulus lier deux tables dans ma base de données, mais je ne sait pas comment faire.
Pourriez vous m' aidez ?

Exposition :

1 table series
1 table series_episode

Contenue de ma table series :

Code : Tout sélectionner

CREATE TABLE `series` ( `id` int(11) NOT NULL auto_increment, `nom` varchar(255) NOT NULL default '', `description` text NOT NULL, `image` varchar(255) NOT NULL default '', `nb_clique` int(11) NOT NULL default '0', `derniere_modif` bigint(20) NOT NULL default '0', `cat` text NOT NULL, `sai` text NOT NULL, `auteur` text, `auteur_id` varchar(20) NOT NULL default '', `date` varchar(30) NOT NULL default '', `bbcodeoff` int(1) NOT NULL default '0', `smileyoff` int(1) NOT NULL default '0', `realisateur` text NOT NULL, `comedien` text NOT NULL, `format` text NOT NULL, `genre` text NOT NULL, `nationalite` text NOT NULL, KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=69 ;
Contenue de ma table series_episode :

Code : Tout sélectionner

CREATE TABLE `nuked_series_episode` ( `id` int(11) NOT NULL auto_increment, `nom` varchar(60) NOT NULL default '', `duree` text, `deconseille` text, `saison` text, `nombre` text, `partun` text, `partdeux` text, `parttrois` text, `partquatre` text, `partcinq` text, PRIMARY KEY (`id`), KEY `nom` (`nom`) ) TYPE=MyISAM;
Donc enfaîte via l administration on peut ajouté une série et un épisode mais séparément, moi je voudrait que l on puisse ajouté un ou plusieurs épisode a une série.

J' espère avoir donner assez d'explication :D

Pourriez vous me dire comment je doit faire pour arriver a ce résultat ? svp.... :D

Mammouth du PHP | 19672 Messages

17 sept. 2008, 09:45

Un tuto peut-être ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

H@D3S
Invité n'ayant pas de compte PHPfrance

25 sept. 2008, 14:43

Merci pour ta réponse et désoler du temps de réponse :D
Pour la jointure je n'ai pas eut besoin du tuto j ai réussit sans ^^.
Bref aujourd'hui j ai un autre soucis voila j explique.
J ai un soucis d affichage de donnée.

Résultat actuel
********************************

Saison 1

  Ep02 | titre2

Saison 1

  Ep01 | titre1

Saison 2

  Ep02 | titre2

Saison 2

  Ep01 | titre1

********************************
Résultat souhaiter
********************************

Saison 1

  Ep01 | titre1
  Ep02 | titre2
  Ep03 | titre3
  Ep04 | titre4
  Ep05 | titre5

Saison 2

  Ep01 | titre1
  Ep02 | titre2
  Ep03 | titre3
  Ep04 | titre4
  Ep05 | titre5

etc .....
Code utiliser actuellement

echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" border=\"0\">\n";
	
		$sql4 = mysql_query("SELECT saison, numepi, titrepi FROM " . $nuked['prefix'] . "_series_episode WHERE epi = '" . $series_id . "' ORDER BY saison");
        while(list($saison, $numepi, $titrepi) = mysql_fetch_array($sql4))
		{
		$sql5 = mysql_query("SELECT id, image_saison FROM " . $nuked['prefix'] . "_series_saison WHERE id = '" . $saison . "'");
        list($id_saison, $image_saison) = mysql_fetch_array($sql5);
		
		echo "<tr><td align=\"left\"><br><img src=\"" . $image_saison . "\" alt=\"\" />\n";
		echo "<br><br>&nbsp;&nbsp;" . _EP . "" . $numepi . " | " . $titrepi . "\n";
		}
        
    echo "</table>\n";	
Voilà je me suis surement tromper quelque part ou j ai oublier une chose mais impossible de trouver quoi ^^ quelqun pour m' aider :D ?

Eléphant du PHP | 254 Messages

25 sept. 2008, 14:58

Il y a plusieurs solutions pour ce genre d'affichage, lune d'elle consisterait a effectuer une seule requête en liant les deux tables, puis en parcourant le résultat en filtrant les ruptures

Exemple de résultat de la requete :
saison1 | episode1 | titre
saison1 | episode2 | titre
saison1 | episode3 | titre
saison2 | episode1 | titre
saison2 | episode2 | titre

Ensuite tu parcours ce résultat une seule fois, et tu change ton affichage des que tu détectes un changement dans la variable "saison"
$saison=0;
while ()
{
  // si $saison change et que ce n'est pas le premier tour
  if ($saison != $oldsaison && $saison != 0)
  {
     // afficher un ligne pour la saison
  }
  // dans tous les cas on affiche une ligne normale
  
  // mettre a jour $oldsaison pour le tour suivant
  $oldsaison=$saison;
}
Sinon si tu veux faire en deux requetes, alors il te faut deux boucles, une pour boucler sur tes saisons, a l'intérieur de laquelle tu bouclera sur les épisodes de cette saison

Un peu schématique mais j'espere que ca va t'aider a entrevoir la vérité :)

H@D3S
Invité n'ayant pas de compte PHPfrance

25 sept. 2008, 15:11

Merci pour ta réponse si rapide ^^.
Oui donc je veut le faire en deux requete et c bien la le probleme car le titre des saison se répete même en mettant deux boucles ( l une dans l autre ).
Je me trompe peut etre dans mes requetes pourait tu par rapport au code mit sur mon post au dessu me mettre un exemple stp car honetement j ai beau retourner les boucle dans tous les sens mais sa veut pas :(

H@D3S
Invité n'ayant pas de compte PHPfrance

25 sept. 2008, 15:29

Donc j ai réussit a afficher les titres par saison exemple :

Saison 1

ep01 | titre1
ep02 | titre2

Saison 2

ep01 | titre1
ep02 | titre2

Par contre il se duplique en 2 fois :?

Voici mon code :
echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" border=\"0\">\n";
	
		$sql4 = mysql_query("SELECT saison FROM " . $nuked['prefix'] . "_series_episode WHERE epi = '" . $series_id . "' ORDER BY saison");
        while(list($saison) = mysql_fetch_array($sql4))
        {
		$sql5 = mysql_query("SELECT id, image_saison FROM " . $nuked['prefix'] . "_series_saison WHERE id = '" . $saison . "'");
        while(list($id_saison, $image_saison) = mysql_fetch_array($sql5)) 
        {  
		echo "<tr><td align=\"left\"><img src=\"" . $image_saison . "\" alt=\"\" /></td></tr>\n";
		
		$sql6 = mysql_query("SELECT numepi, titrepi FROM " . $nuked['prefix'] . "_series_episode WHERE saison = '" . $id_saison . "'");
        while(list($numepi, $titrepi) = mysql_fetch_array($sql6))
		{
		echo "<tr><td align=\"left\">" . _EP . "" . $numepi . " | " . $titrepi . "<br></td></tr>\n";
		}
		}
		}
        
    echo "</table>\n";	
Ou est l ' érreur :?: svp ...

Eléphant du PHP | 254 Messages

25 sept. 2008, 19:19

Oui non dans ce cas la ta premiere requete, celle qui va englober le reste doit concerner les saisons

Essaye de procéder par étape, d'abord essaye d'avoir :
Saison1
Saison2
Saison3
A partir d'un requete sur ta table saison

Ensuite a l'intérieur de ton while, et donc pour chaque ligne de ton while, tu va faire une autre requête pour lister les épisodes

Grossièrement ça doit donner :
$saison= mysql_query ("SELECT * FROM series_saison;");
while ($tabSaison = mysql_fetch_array($saison))
{
    // a chaque tour de ce while j'affiche le nom de la saison
    echo $image_saison;

    // ensuite pour cette saison précisement, je fais une requete sur tous ses épisodes, en passant a ta requête l'id de la saison
    $episode= mysql_query ("SELECT * FROM series_episode WHERE id_saison=".$tabSaison['id_saison'].";");
    while (mysql_fetch_array($episode))
    {
        // ici j'affiche ce que je veux depuis la table épisode pour cette saison
        echo "... titre etc ...";
    }

}
Encore une fois c'est schématique et sans mise en page, mais je pense que tu vois le principe

H@D3S
Invité n'ayant pas de compte PHPfrance

25 sept. 2008, 22:53

J ai essayer mais cela me donne exactement le meme résultat :?:

H@D3S
Invité n'ayant pas de compte PHPfrance

25 sept. 2008, 23:06

C'est bon j ai trouver mon érreur merci de m avoir aidé :D .

Pour infos si sa peut aider des personnes a qui il arrive la meme ou similaire situation il ne fallait pas attribuer de condition à la table saison ^^