bonjour,

mon problème a été traité dans certains forums mais je ne trouve pas de solution

j'ai deux listes : la première affiche les types d'incidents c'est à dire :

1.problèmes liés au réseau
2.problème software et système.
3.problème hardware des équipements.
4.Demande d’achat de matériel ou de consommable.

la deuxième liste consite en l'affichage des éléments liés à chaque type :

en selectionnant le type réseau dans la première liste, les éléments correspondants à ce meme type seront affichés :

1. coupure de la liaison.
2.adressage IP.
3.priblème VPN.
4 .... etc

voici ces quelques lignes de codes que j'ai developpé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
 <?php
				   $result = db_connect();
                  if (!$result)
                  die(mysql_error());
 
     // selection de la base de données 
    $select  = mysql_select_db($dbName,$result);
   if (!$select)
   die(mysql_error());
                  ?>
				   <? $Result=mysql_query("select * from hd_type_incident")or die(mysql_error());
 
	         $nb = mysql_num_rows($Result);  
             $ListDir = '<option value="0">Type incident</option>'; 
while ($tmpObject = mysql_fetch_object($Result)) //tant qu'il y a des types d'incidents, on les affiche
{
   $ListDir .= '<option value="'.$tmpObject->id_type_incident.'">'.$tmpObject->type_incident.'</option>';
}
?>
				  <td width="15%" >
				     <select name="fk_type_incident" id="fk_type_incident">
                        <?=$ListDir?>
                      </select>				   
                      	 <? mysql_close(); ?>  				  </td>
 
 
					 <?php
				   $result = db_connect();
                  if (!$result)
                  die(mysql_error());
 
     // selection de la base de données 
    $select  = mysql_select_db($dbName,$result);
   if (!$select)
   die(mysql_error());
                  ?>  
 
 
				   <? $Res=mysql_query("select * from hd_sous_type_incident where fk_type_incident= $fk_type_incident")or die(mysql_error());
 
	         $nb1 = mysql_num_rows($Res);  
             $ListDiv = '<option value="0">Sous type incident</option>'; 
while ($tmpObject = mysql_fetch_object($Res)) //tant qu'il y a des sous types d'incidents, on les affiche
{
   $ListDiv .= '<option value="'.$tmpObject->id_sous_type_incident.'">'.$tmpObject-> sous_type_incident.'</option>';
}
?>					  
		          <td >
				  <select name="fk_sous_type_incident" id="fk_sous_type_incident">
                        <?=$ListDiv?>
                      </select> <? mysql_close(); ?>

dans la deuxième requète j'ai tenté de récupérer la valeur du select de la première requète

voici mes tables :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
CREATE TABLE `hd_type_incident` (
  `id_type_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
  `type_incident` text NOT NULL, 
  `description` text NOT NULL,
  `fk_user` int(11),
   FOREIGN KEY(fk_user) REFERENCES hd_utilisateur(id_user) ON DELETE CASCADE ON UPDATE CASCADE,
   INDEX(fk_user)
)TYPE=INNODB;";  
 
 
CREATE TABLE `hd_sous_type_incident` (
  `id_sous_type_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
  `sous_type_incident` text NOT NULL,
  `description` text NOT NULL,
  `fk_type_incident` int(11),
   FOREIGN KEY(fk_type_incident) REFERENCES hd_type_incident(id_type_incident) ON DELETE CASCADE ON   UPDATE CASCADE,
   INDEX(fk_type_incident)
 
)TYPE=INNODB;"; 
 
CREATE TABLE `hd_incident` (
  `id_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
  `fk_type_incident` int(11) NOT NULL default '',
  `fk_sous_type_incident` int(11) NOT NULL default '',
  `fk_statut` int(11),
  `fk_users` int(11),
  `fk_user` int(11),
  `Date_creation` date,   
  `Date_échéance` date, 
  `Date_fermeture` date,
  `objet` varchar(200) NOT NULL default '',
  `message` varchar(200) NOT NULL,
  FOREIGN KEY(fk_type_incident) REFERENCES hd_type_incident(id_type_incident) ON DELETE CASCADE ON UPDATE CASCADE,
   FOREIGN KEY(fk_sous_type_incident) REFERENCES hd_sous_type_incident(id_sous_type_incident) ON DELETE CASCADE ON UPDATE CASCADE,
  FOREIGN KEY(fk_statut) REFERENCES hd_statut(id_statut) ON DELETE CASCADE ON UPDATE CASCADE,
  FOREIGN KEY(fk_user) REFERENCES hd_utilisateur(id_user) ON DELETE CASCADE ON UPDATE CASCADE,
 FOREIGN KEY(fk_users) REFERENCES hd_utilisateur(id_user) ON DELETE CASCADE ON UPDATE CASCADE,
  INDEX(fk_type_incident),
  INDEX(fk_user), 
  INDEX(fk_users),
  INDEX(fk_sous_type_incident),
  INDEX(fk_statut)
 
 
)TYPE=INNODB;";
les erreurs affichées :

Erreur de syntaxe près de '' à la ligne 1 , j'ignore de quelle ligne il s'agit !!!

et il n'ya que deux champs qui sont affichés : type incident et l'utilsateur qui a envoyé l'incident sous forme de listes , mais en cliquant une deuxième fois sur le bouton envoyer ya tout qui s'affiche mais impossible de lier les deux listes type incident et sous types incident " il n' ya q'un seul sous type qui s'affiche .

autre question pensez vous qu'à chaque requète select, il faut se connecter à la base de données et selectionner la table et fermer la base ??

ps: je ne veut pas utiliser du Javascript.

voilà j'espère etre bien claire et merci pour vos suggestions.
cordialment