Formulaire Php

Fermé
linebacker58 Messages postés 4 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 18 avril 2008 - 18 avril 2008 à 22:02
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 - 18 avril 2008 à 22:50
Bonjour,
Je cherche à faire un formulaire où ma deuxième liste déroulante (les noms) dépendent de ma première liste déroulante (les catégories).

Tout se passe bien, on peut sélectionner les catégories sans problèmes.
On peut ensuite sélectionner les noms.

Et le problème est, si on a sélectionner un nom, si on souhaite changer de catégorie, il affiche de nouveau le nom de l'ancienne catégorie au dessus des noms de la nouvelle catégorie.

"L'erreur" se trouve à la ligne 62. Je dis erreur entre "" car ce n'est pas vraiment une erreur étant donné qu'on a en besoin.

Ma structure ne doit pas être bonne... Mais j'avoue que je ne trouve pas la soluction...

Ma BDD pour les interessé.

id_film categorie nom image
1 Action Matrix 0
2 Action Matrix2 0
3 Action Matrix3 0
4 Amour Titanic 0
5 Amour Titanic2 0
6 Amour Titanic3 0
7 ScienceFiction StarWar 0
8 ScienceFiction StarWar2 0


<?php

$connexion_serveur = mysql_connect("localhost","root","");			
$connexion_base= mysql_select_db("test",$connexion_serveur);

print("<form action=\"formulaire_admin.php\" method=\"post\" name=\"formulaire\" ENCTYPE=\"multipart/form-data\"/>");


if(!isset($_POST['categorie']))
{
	// J'affiche " Choissez votre catégorie "
	print("<select name=\"categorie\" onchange=\"formulaire.submit()\"/>");
	print("<option value=\"\" type=\"text\"/>Choisissez une catégorie</option>");
	
	// J'affiche les menus catégorie
	$req = "SELECT DISTINCT categorie FROM films";
	$res = mysql_query($req,$connexion_serveur);		
	while($ligne = mysql_fetch_array($res))
	{
		print("<option value=".$ligne['categorie']." type=\"text\"/>".$ligne['categorie']."</option>");	
	}
	print("</select>");
}
else 
{
	$categorie=$_POST['categorie'];
	
	// J'affiche la catégorie.
	print("<select name=\"categorie\" onchange=\"formulaire.submit()\"/>");
	print("<option value=\"$categorie\" type=\"text\"/>$categorie</option>");
	
	// J'affiche le menu des catégories.
	$req = "SELECT DISTINCT categorie FROM films WHERE categorie!='$categorie'";
	$res = mysql_query($req,$connexion_serveur);		
	while($ligne = mysql_fetch_array($res))
	{
		print("<option value=".$ligne['categorie']." type=\"text\"/>".$ligne['categorie']."</option>");	
	}
	print("</select>");
	
	if(!isset($_POST['nom']))
	{
		// J'affiche " Choisissez votre nom "
		print("<select name=\"nom\" onchange=\"formulaire.submit()\"/>");
		print("<option value=\"\" type=\"text\"/>Choisissez un nom</option>");

		// J'affiche la liste des noms
		$req1 = "SELECT nom FROM films WHERE categorie='$categorie'";
		$res1 = mysql_query($req1,$connexion_serveur);	
		while($ligne1 = mysql_fetch_array($res1))
		{
			print("<option value=".$ligne1['nom']." type=\"text\"/>".$ligne1['nom']."</option>");	
		}				
		print("</select>");
	}
	
	else 
	{	
		$nom=$_POST['nom'];
		
		// J'affiche le nom
		print("<select name=\"nom\" onchange=\"formulaire.submit()\"/>");
		print("<option value=\"$nom\" type=\"text\"/>$nom</option>");
		
		// J'affiche la liste des noms corresponds à la catégorie.
		$req1 = "SELECT nom FROM films WHERE categorie='$categorie' AND nom!='$nom'";
		$res1 = mysql_query($req1,$connexion_serveur);
		while($ligne1 = mysql_fetch_array($res1))
		{
			print("<option value=".$ligne1['nom']." type=\"text\"/>".$ligne1['nom']."</option>");	
						
		}
		print("</select>");
		
		// Je réaffiche les catégories.
	}

}

print("</form>");

?>

3 réponses

duxitto Messages postés 247 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 7 janvier 2013 1
18 avril 2008 à 22:10
je sais pas si cela peut t'aider

https://siddh.developpez.com/articles/ajax/#LIV-A
0
linebacker58 Messages postés 4 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 18 avril 2008
18 avril 2008 à 22:25
Bof pas trop mais merci quand même.
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
18 avril 2008 à 22:37
Justement, la réponse de duxitto est tout à fait pertinente.

Tu ne sais pas à l'avance ce que l'utilisateur va choisir dans la première liste. Donc tu ne peux pas préremplir cette liste avec les bons trucs.

Par conséquent, il n'y a que lorsque l'utilisateur a choisi un des éléments de la première liste que tu peux charger le contenu de la seconde.

Ca, c'est le boulot d'AJAX.

Tu devrais lire l'article qu'il a mis en lien, c'est de la bonne !

Raph
0
linebacker58 Messages postés 4 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 18 avril 2008
18 avril 2008 à 22:42
Je ne connais pas du tout l'Ajax.
Je ne doute pas que c'est une bonne solution, mais je souhaiterais le faire en php...
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
18 avril 2008 à 22:50
On ne fait pas un truc soit en AJAX soit en PHP, mais certains trucs se font ET en AJAX ET en PHP. La, c'est le cas, car sinon une page dans un navigateur ne peut pas évoluer, il faut alors recharger entièrement la page... sauf en faisant appel à AJAX. AJAX est une technique, pas un langage. Ca fait appel à Javascript dans le navigateur et à PHP sur le serveur.

Il faut lire l'article, sinon ça ne marchera pas tout seul... ;-)

Raph
0