Aide code PHP
Posté : 25 avr. 2013, 10:28
Bonjour, cela fait plusieurs jours que je n'arrives pas à résoudre un problème en PHP/Mysql
Mon but : réaliser une liste liée, c'est à dire une liste qui propose des choix et ces choix vous proposent de nouveaux choix dans la deuxième liste en fonction de ce qui a été définit.
J'ai besoin de deux éléments,
1) SQL
- Deux créations de tables pour Association ET TypeAssociation
- Un code de base de données de remplissage des associations :
Un code de remplissage des type d'association : il y en a 3.
2) PHP
Un code PHP qui permet de créer ces listes dont voici le code :
Exemple :
Type Association : Sportive ==> Aerobic
C'est l'unique choix et pas d'autre... De même pour culture et liste association... Il n'y a que le premier de chaque table alors qu'il devrait tout y avoir justement...
Une idée?
Merci à vous..
Mon but : réaliser une liste liée, c'est à dire une liste qui propose des choix et ces choix vous proposent de nouveaux choix dans la deuxième liste en fonction de ce qui a été définit.
J'ai besoin de deux éléments,
1) SQL
- Deux créations de tables pour Association ET TypeAssociation
- Un code de base de données de remplissage des associations :
insert into `association` values
(1,'Aerobic',2),
(2,'Arts Martiaux et sports de combat',2),
(3,'Athlétisme',2),
(4,'Ball Trap',2),
(5,'Course - Marche',2),
(22,'Yoga',2),
(23,'Agriculture',1),
(24,'Anciens combattants',1),
(25,'Associations d\'animation',1),
(44,'Social',1),
(45,'Théâtre',1),
(112,'CENTRE CULTUREL ET SOCIAL DE BOUCAU ET TARNOS',3),
(113,'Centre d\'Aide par le Travail (Éspérance et Emmaüs)',3),
(114,'CERCLE DES AMIS DE L\'ART DE BOUCAU ET DE TARNOS',3),
(115,'Chasse ACCA',3),
(116,'CHOEUR ERMEND BONNAL',3),
**Liste non exhaustive**Un code de remplissage des type d'association : il y en a 3.
2) PHP
Un code PHP qui permet de créer ces listes dont voici le code :
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "bdfinale";
/* On récupère si elle existe la valeur de la région envoyée par le formulaire */
$idr = isset($_POST['typeassociation'])?$_POST['typeassociation']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Choisissez le type d'une association</title>
<meta name="description" content="Listes déroulantes dynamiques inter-dépendantes" />
<meta name="keywords" content="" />
<meta name="author" content="Cyrano" />
<meta name="generator" content="Zend Studio Environnement et WebExpert 5" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<?php
if(isset($_POST['ok']) && isset($_POST['association']) && $_POST['association'] != "")
{
$typeassociation_selectionnee = $_POST['typeassociation'];
$association_selectionne = $_POST['association'];
?>
<p>Vous avez sélectionné l'association <?php echo($association_selectionne); ?> de type <?php echo($typeassociation_selectionnee); ?></p>
<?php
}
?>
<h3>Trouver une association</h3>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
* car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$sql1 = "SELECT `id`, `type`".
" FROM `typeassociation`".
" ORDER BY `id`";
$rech_typeassociation = mysql_query($sql1);
$code_typeassociation = array();
$typeassociation = array();
/* On active un compteur pour les type d'associations */
$nb_typeassociation = 0;
if($rech_typeassociation != false)
{
while($ligne = mysql_fetch_assoc($rech_typeassociation))
{
array_push($code_typeassociation, $ligne['id']);
array_push($typeassociation, $ligne['type']);
/* On incrémente le compteur */
$nb_typeassociation++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgassociation">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez une type d'Association</legend>
<select name="typeassociation" id="typeassociation" onchange="document.forms['chgassociation'].submit();">
<option value="-1">- - - Aucun - - -</option>
<?php
for($i = 0; $i < $nb_typeassociation; $i++)
{
?>
<option value="<?php echo($code_typeassociation[$i]); ?>"<?php echo((isset($idr) && $idr == $code_typeassociation[$i])?" selected=\"selected\"":null); ?>><?php echo($typeassociation[$i]); ?></option>
<?php
}
?>
</select>
<?php
mysql_free_result($rech_typeassociation);
/* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */
if(isset($idr) && $idr != -1)
{
/* Cération de la requête pour avoir les associations de cette région */
$sql2 = "SELECT `id`, `nom`".
" FROM `association`".
" WHERE `id` = ". $idr ."".
" ORDER BY `id`;";
if($connexion != false)
{
$rech_association = mysql_query($sql2, $connexion);
/* Un petit compteur pour les associations */
$nb_association = 0;
/* On crée deux tableaux pour les numéros et les noms des associations */
$code_association = array();
$nom_association = array();
/* On va mettre les numéros et noms des associations dans les deux tableaux */
while($ligne_association = mysql_fetch_assoc($rech_association))
{
array_push($code_association, $ligne_association['id']);
array_push($nom_association, $ligne_association['nom']);
$nb_association++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="association" id="association">
<?php
for($d = 0; $d<$nb_association; $d++)
{
?>
<option value="<?php echo($code_association[$d]); ?>"<?php echo((isset($association_selectionne) && $association_selectionne == $code_association[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_association[$d]." (". $code_association[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_association);
}
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
* paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>
Problème : seul le premier élément de l'insertion de l'association apparait dans les listes :Exemple :
Type Association : Sportive ==> Aerobic
C'est l'unique choix et pas d'autre... De même pour culture et liste association... Il n'y a que le premier de chaque table alors qu'il devrait tout y avoir justement...
Une idée?
Merci à vous..