Utiliser 2 tables via la même page

Eléphant du PHP | 104 Messages

11 oct. 2005, 14:04

Bonjours,

J'aimerais savoir si il est possible de se connecter a deux table (jusque la je sais que oui) pour faire afficher leur contenur sur deux page différente ?... j'ai déja essayer en mettent une condition, mais ça marche pas, sur la première page sa affiche la table, mais sa affiche aussi la deuxième avec des erreus, vue que le code est différent, pareille pour la 2eme page.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 14:07

Je ne comprend pas très bien ce que tu veux faire ... :oops:

Tu veux afficher 2 tables différentes avec le même code ?

Montre nous ce que tu as déjà fait ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 104 Messages

11 oct. 2005, 14:25

En gros oui,

Voila en gros je fais un site sur Stargate qui comporte deux series et a place de faire deux fichiers pour afficher les saisons, j'aimerais réunir le tout sur une même page. Alors une table pour chaque saison des series...

Voila ce que j'ai de fait pour afficher une de mes tables
<?

mysql_connect("localhost", "root", "");
mysql_select_db("test");

$reponse = mysql_query("SELECT * FROM saison_sg1 ORDER BY epi"); 
?>

<h3>
<? 
		$sg1 = $_GET['sg1'];

		switch ($sg1) { 

		case 1: 
		echo "Saison 1";
		break ;

		case 2: 
		echo "Saison 2";
		break ;
		
		case 3: 
		echo "Saison 3";
		break ;
		
		case 4: 
		echo "Saison 4";
		break ;
		
		case 5: 
		echo "Saison 5";
		break ;
		
		case 6:
		echo "Saison 6";
		break ;
		
		case 7: 
		echo "Saison 7";
		break ;
		
		case 8: 
		echo "Saison 8";
		break ;

		case 9: 
		echo "Saison 9";
		break ;

	}
	?> 
	</h3>

<?
while ($donnees = mysql_fetch_array($reponse) )
{

	if ($donnees['epi'] > $_GET['sg1']*100 AND $donnees['epi'] < ($_GET['sg1']+1) * 100) 
	{
	?>
	
	  <div class="titre_epi"><? echo '<a href="episode.php?epi=' .  $donnees['epi'] . '">' . $donnees['epi'] . ' - ' . $donnees['titre_vf'] . ' - ' . $donnees['titre_vo'] . "</a>" ?></div>
	  
	<?
	}

}
mysql_close (); 
?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 14:26

Donnes moi la structure de tes tables

Comment est-ce que tu fait la différence entre les saisons ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 104 Messages

11 oct. 2005, 14:47

pour chaque table j'ai ça
`epi` int(11) NOT NULL default '0',
`titre_vf` varchar(255) NOT NULL default '',
`titre_vo` varchar(255) NOT NULL default '',
`contenu` text NOT NULL
Pour faire la différence, si j'aurais 2 page j'aurais juste a changer le sg1 en sga... j'avais déja essayer ce petit changerment en essayer de mettre les table ensemble... mais sa affichais les deux table et avec des erreurs vue que les changement marchais plus avec le rest.... bref sa marchais pas...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 14:57

Je ne comprend pas.

Les structures des tables sont pareils, il n'y a que les noms des tables qui changent et ça ne fonctionne pas ??? :shock:

Donne moi le code QUI AFFICHE TOUTES LES TABLES et les erreurs qui sont affichées
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 104 Messages

11 oct. 2005, 15:13

Sa marche pas parce que je sais pas comment faire pour que les tables s'affiche pas les deux sur les pages... Sinon j'avais déja essayer avec une conditions... Sinon sans les conditions j'avais déja essayer ça
<?

mysql_connect("localhost", "root", "");
mysql_select_db("test");

$reponse = mysql_query("SELECT * FROM saison_sg1 ORDER BY epi"); 


?>
<h3>
<? 
		$sg1 = $_GET['sg1'];

		switch ($sg1) { 

		case 1: 
		echo "Saison 1";
		break ;

		case 2: 
		echo "Saison 2";
		break ;
		
		case 3: 
		echo "Saison 3";
		break ;
		
		case 4: 
		echo "Saison 4";
		break ;
		
		case 5: 
		echo "Saison 5";
		break ;
		
		case 6:
		echo "Saison 6";
		break ;
		
		case 7: 
		echo "Saison 7";
		break ;
		
		case 8: 
		echo "Saison 8";
		break ;

		case 9: 
		echo "Saison 9";
		break ;

	}
	?> 
	</h3>
<?
while ($donnees = mysql_fetch_array($reponse) )
{

	if ($donnees['epi'] > $_GET['sg1']*100 AND $donnees['epi'] < ($_GET['sg1']+1) * 100) 
	{
	?>
	
	  <div class="titre_epi"><? echo '<a href="episode.php?epi=' .  $donnees['epi'] . '">' . $donnees['epi'] . ' - ' . $donnees['titre_vf'] . ' - ' . $donnees['titre_vo'] . "</a>" ?></div>
	  
	<?
	}

}
mysql_close (); 
?>


<?

mysql_connect("localhost", "root", "");
mysql_select_db("test");

$reponse = mysql_query("SELECT * FROM saison_sga ORDER BY epi"); 


?>
<h3>
<? 
		$sga = $_GET['sga'];

		switch ($sga) { 

		case 1: 
		echo "Saison 1";
		break ;

		case 2: 
		echo "Saison 2";
		break ;
		
	}
	?> 
	</h3>
<?
while ($donnees = mysql_fetch_array($reponse) )
{

	if ($donnees['epi'] > $_GET['sga']*100 AND $donnees['epi'] < ($_GET['sga']+1) * 100) 
	{
	?>
	
	  <div class="titre_epi"><? echo '<a href="episode.php?epi=' .  $donnees['epi'] . '">' . $donnees['epi'] . ' - ' . $donnees['titre_vf'] . ' - ' . $donnees['titre_vo'] . "</a>" ?></div>
	  
	<?
	}

}
mysql_close (); 
?>
Je met en adresse "saison.php?sg1=1" et "saison.php?sga=1" je sais pas si c'est correct... mais dans ma page "saison.php?sg1=1" il met erreur dans la 2eme table en bas
Notice: Undefined index: sga in c:\documents and settings\mes documents\site\saison.php on line 104

Notice: Undefined index: sga in c:\documents and settings\mes documents\site\saison.php on line 123

Notice: Undefined index: sga in c:\documents and settings\mes documents\site\saison.php on line 123
La ligne 104 représente
 $sga = $_GET['sga'];
et la 123
if ($donnees['epi'] > $_GET['sga']*100 AND $donnees['epi'] < ($_GET['sga']+1) * 100)
Ensuite pour l'adresse "saison.php?sga=1" en haut les même erreur au même ligne dans la première table

Dsl sa fait un peux bordel :?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 15:21

Je met en adresse "saison.php?sg1=1" et "saison.php?sga=1" je sais pas si c'est correct... mais dans ma page "saison.php?sg1=1" il met erreur dans la 2eme table en bas
Je pense que le problème vient de là. Tu utilise 2 variable GET différentes et si elles n'existent pas, tu n'as aucune valeur par défaut

Soit tu teste l'existence des $_GET avec isset et si elle n'existe pas tu donnes une valeur par défaut (saison 1 par exemple)

Soit tu passes tout dans la même variable mais tu ne peut afficher qu'une table à la fois

J'utiliserais le 1er conseil pour faire ce que tu veut

exemple :
if ($isset($_GET['ma_var'])) { //Si la variable $_GET["ma_var"] existe
  $ma_var = $_GET['ma_var'];
} else { //$_GET['ma_var'] n'existe pas, on attribue une valeur pard défaut
  $ma_var = 1;
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 104 Messages

11 oct. 2005, 15:41

Je comprend pas ou tu veux que je rajoute le isset... dans cette ligne ?
if ($donnees['epi'] > $_GET['sg1']*100 AND $donnees['epi'] < ($_GET['sg1']+1) * 100)
Parce que je vois pas trop comment réécrire la ligne... j'ai essayer avec juste les isset devant les GET mais sa met une erreur... mais j'ai ajouter un isset a ma condition plus haut
$sg1 = (isset($_GET['sg1']));


sa enleve une ligne d'erreur, mais l'autre reste... si je réussi a faire afficher une table par page sa réglerai pas le prob ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 15:50

Avant d'utiliser $_GET["sga"], il faut que tu testes si il existe sinon tu obtient le message d'erreur qui te dit qu'il n'existe pas (lit bien les messages d'erreurs, tu verras que c'est ce qui est marqué ;))

Je le fait pour le 2nd tu verras toute seule pour le 1er, ça te permettra de voir si tu as compris
if (isset($_GET['sga'])) { //la variable $_GET['sga'] est initialisée, je peut récupérer son contenu
  $sga = $_GET['sga'];
} else { // la variable $_GET['sga'] n'existe pas, je lui attribue une valeur par défaut
  $sga = 1; // Si le visiteur n'a pas encore choisi d'afficher une saison en particulier, c'est la 1ere saison qui sera affichée
}

//J'ai remis au propre l'indentation du switch, c'est plus facile à lire
switch ($sga) {
  case 1:
    echo "Saison 1";
    break ;
  case 2:
    echo "Saison 2";
    break ;
}
Et a à partir du test de l'existence du GET, tu ne doit plus l'utiliser mais utiliser la variable $sga (ou $sgl si tu es dans ton 1er test)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

11 oct. 2005, 15:52

ton programme est trop long mais simplifiable.
L'erreur que tu reçois veut dire simplement que le paramètre sga n'est pas passé, normal tu devrais écrire

Code : Tout sélectionner

saison.php?sg1=1&sga=1
dans l'adresse si tu veux exécuter ton programme qui doit bien fonctionner.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 104 Messages

11 oct. 2005, 16:04

J'ai remplacer ma ligne par la tienne et sa affiche la condition de la deuxième table... mais il a toujours l'autre erreur a la ligne, vue que c'est la page de sg1 pas sga
 if ($donnees['epi'] > $_GET['sga']*100 AND $donnees['epi'] < ($_GET['sga']+1) * 100)

@sadeq: j'ai essayer l'adresse que tu ma donné a essayer et sa change absolument rien :?

Mais quand tu dis simplifiable, tu me propose quoi pour simplifier ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 16:11

Fait un effort et suis moi bien

Dans ton script tu fait la suite d'évenement suivante:
1°/ tu récupères une valeur
2°/ tu affiche un texte en fonction de cette valeur
3°/ tu fait un calcul sur cette valeur

Ton problème vient du fait que tu récupère une valeur qui n'existe pas quelquefois (1er chargement par exemple)

ce que je t'ai proposé de faire, c'est de tester si cette valeur existe ou pas la méthode à suivre est :
1°/ tu teste si la valeur existe
1-1/ si elle existe tu la récupère
1-2/ si elle existe pas, tu l'initialise
2°/ tu affiche du code en fonction de la valeur RECUPEREE
3°/ tu fait un calcul sur la valeur RECUPEREE

Dans ton code, comme tu fait un calcul sur $_GET['sgl'] et $_GET['sga'] alors qu'on a un test juste avant qui nous permet de tester leur existence et de créer à coup sûr $sqa et $sql. Pourquoi tu n'utilises pas ces variables
if ($donnees['epi'] > $sgl*100 AND $donnees['epi'] < ($sgl+1) * 100)
Attention, je ne te donnes le code que pour le 2nd test. A toi de l'adapter pour le 1er test
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 104 Messages

11 oct. 2005, 16:30

J'ai changer les lignes, et sa affiche correctement les saisons sans erreur... mais le prob c'est que sa affiche encore les deux saisons sur la même page :?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 16:39

Il te suffit de prendre le code de la 2nd saison et de le mettre sur une autre page
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer