Listes déroulantes dynamiques sur 5 niveaux

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Listes déroulantes dynamiques sur 5 niveaux

Re: Listes déroulantes dynamiques sur 5 niveaux

par moogli » 06 déc. 2016, 10:45

le code que je t'ai fourni hier fonctionne pour toi ?
si ce n'est pas le cas peut tu fournir un jeux de test (create table et donnée bidon mais cohérente) ?

Php 5 connais très bien mysqli, ceci dit se serait pas mal de dire à ton hébergeur de se mettre au goût du jour :-)~

@+

Re: Listes déroulantes dynamiques sur 5 niveaux

par Gizzmo » 06 déc. 2016, 10:17

#-o Arf bon bein ça me fait toujours la même chose le deuxième <select> ne doit pas envoyer de valeur en retour.... Bon, pour faire plus simple et plus léger j'ai essayé de faire une requête générale en début de script puis d'afficher les différents <select> avec les valeurs de retour de la requête à l'intérieur. (je suis pas en PHP 7 moogli 8-) mon hébergeur tourne encore sur PHP 5)

Par contre il ne doit pas aimer les multiples occurences de
while ($ligne_type = mysql_fetch_assoc($rech_type)) {...}
parce que la première liste déroulante affiche bien les 18 occurences de IDTYP (il y a 18 têtes dans la base de test avec le même type) mais les autres en dessous n'affichent plus rien.
[img]
http://imageshack.com/a/img921/5377/Kz4ESz.jpg
[/img]

Voici le code PHP de la page
<?php
//entêtes de la page, hump c'est inutile ce prolonge, si tu as le doctype dans "header.php" c'est largement suffisant
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "user";
$mdp     = "user";
$base    = "mabase";

//fichiers entete
include 'header.php';
include 'navigation.php';
echo <<<html
 <div id="shadowslider"></div>
  <!--debut de content -->
  <div id="content" class="gradient layout-sidebar-no group">
  <div id="slogan" class="inner">
    <h1>SECTION 3D</h1>
  </div>
html;

/* 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) {
    echo '<p>Un incident s\'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>';
} else {
    $choixbase = mysql_select_db($base, $connexion);
     $rech_modeles = mysql_query('SELECT * FROM MODELE ORDER BY IDMOD');
    $modele = array(); ?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgmod">
<h3>Rechercher une tête</h3>

<!-- ///////////////////////////// MODELES ////////////////////////////////// -->
<div class="border-line"></div>
Modèle : <select name="modele" id="modele" onchange="document.forms['chgmod'].submit();">
  <option value="-1">- - - Choisissez un modèle - - -</option>
   <?php
   if ($rech_modeles != false) {
       while ($ligne = mysql_fetch_assoc($rech_modeles)) {
           $selected = '';
           if (!empty($_POST['modele']) && $_POST['modele'] == $ligne['IDMOD']) {
               $selected = 'selected="selected"';
           }
        // syntaxe Heredoc voir la doc http://php.net/manual/en/language.types ... ax.heredoc
        echo <<<html
   <option value="{$ligne['IDMOD']}" ${selected}>{$ligne['MOD_LIBELLE']} </option>
html;
       }
   }
    mysql_free_result(rech_modeles); ?>
</select><br>

<!-- //////////////////////////// TYPES ///////////////////////////////////// -->
<div class="border-line"></div>
 	<?php
    /* On commence par vérifier si on a envoyé un numéro de modèle et le cas échéant s'il est différent de -1 */
  if (!empty($_POST['modele']) && $_POST['modele'] != -1) {
      /* Cération de la requête pour avoir les types de ce modèle */
        $sql2 = 'SELECT DISTINCT 
	TETE.TET_IDMOD AS TET_IDMOD,	
	TETE.TET_IDTYP AS TET_IDTYP,	
	TETE.TET_IDBRO AS TET_IDBRO,	
	TETE.TET_IDLON AS TET_IDLON,	
	TETE.TET_IDCON AS TET_IDCON,	
	TYPE.TYP_LIBELLE AS TYP_LIBELLE,	
	LONGUEUR.LON_LIBELLE AS LON_LIBELLE,	
	CONE.CON_LIBELLE AS CON_LIBELLE,	
	BROCHE.BRO_LIBELLE AS BRO_LIBELLE
FROM 
	TYPE,	
	LONGUEUR,	
	CONE,	
	BROCHE,	
	TETE
WHERE 
	BROCHE.IDBRO = TETE.TET_IDBRO
	AND	CONE.IDCON = TETE.TET_IDCON
	AND	LONGUEUR.IDLON = TETE.TET_IDLON
	AND	TYPE.IDTYP = TETE.TET_IDTYP
	AND
	(
		TETE.TET_IDMOD = '.mysql_real_escape_string($_POST['modele']).'
	)';
	 //on fait la requête générale
	 $rech_type = mysql_query($sql2);
	
	 //et maintenant on créé les différents select
	 //////////////////// TYPES //////////////////////////
      echo ('Type : <select name="type" id="type">');
       while ($ligne_type = mysql_fetch_assoc($rech_type)) {
      echo <<<html
            <option value="{$ligne_type['TET_IDTYP']}">{$ligne_type['TET_IDTYP']}</option>
html;
	   }
     
	  echo('</select><br /><div class="border-line"></div>');	
	
	 //////////////////// LONGUEUR //////////////////////////
      echo ('Longueur : <select name="longueur" id="longueur">');
      while ($ligne_type = mysql_fetch_assoc($rech_type)) {
      echo <<<html
            <option value="{$ligne_type['TET_IDLON']}">{$ligne_type['TET_IDLON']}</option>
html;
	  }
     
	  echo('</select><br /><div class="border-line"></div>');
	  
	  //////////////////// BROCHES //////////////////////////
      echo ('Broche : <select name="broche" id="broche">');
      while ($ligne_type = mysql_fetch_assoc($rech_type)) {
      echo <<<html
            <option value="{$ligne_type['TET_IDBRO']}">{$ligne_type['BRO_LIBELLE']}</option>
html;
	  }
	  echo('</select><br /><div class="border-line"></div>');
	  
	  //////////////////// CONES //////////////////////////
      echo ('Cône : <select name="cone" id="cone">');
      while ($ligne_type = mysql_fetch_assoc($rech_type)) {
      echo <<<html
            <option value="{$ligne_type['TET_IDCON']}">{$ligne_type['CON_LIBELLE']}</option>
html;
	  }
     
	  echo('</select><br /><div class="border-line"></div>');			
  }
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</form>
<?php
    /* Terminé, on ferme la connexion */
    mysql_close($connexion);
}
?>
<!-- fin de content -->
</div>
<!-- Bande de contact  -->
<div id="content" class="layout-sidebar-right group">
    <div class="call-to-action">
      <div class="incipit">
            	<h2>En savoir plus ?</h2>
            	<p>Contactez notre service commercial</p>
            </div>
            <div class="separate-phone"></div>
            <div class="number-phone">+xxxxxxxxx</div>
            <div class="clear"></div>
      </div>
</div>
<?php
 include 'basdepage.php'; 
?>

Re: Listes déroulantes dynamiques sur 5 niveaux

par moogli » 05 déc. 2016, 16:34

bon je crois que je suis fatigué. J'ai gouré sur la sélection
if (!empty($_POST['modele']) && $_POST['modele'] == $ligne['IDMOD']) { /et pas MOD_LIBELLE ...
ensuite c'est un peu de logique et une requête SQL qui déconne. Le And sql ce n'est pas une fonction il faut juste une condition derrière.
J'ai testé avec une base, du coup j'ai du passé la chose sur mysqli (parce que php 7 ;) ).Le retour sur mysql est simple, mais tu peux garder mysqli :)
<?php
//entêtes de la page, hump c'est inutile ce prolonge, si tu as le doctype dans "header.php" c'est largement suffisant
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "user";
$mdp     = "user";
$base    = "mabase";

//fichiers entete
include 'header.php';
include 'navigation.php';
echo <<<html
 <div id="shadowslider"></div>
  <!--debut de content -->
  <div id="content" class="gradient layout-sidebar-no group">
  <div id="slogan" class="inner">
    <h1>SECTION 3D</h1>
  </div>
html;

/* 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 = mysqli_connect($serveur, $admin, $mdp);
if ($connexion === false) {
    echo '<p>Un incident s\'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>';
} else {
    $choixbase = mysqli_select_db($connexion,$base);
    $rech_modeles = mysqli_query($connexion,'SELECT * FROM MODELE ORDER BY IDMOD');
    $modele = array(); ?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgmod">
<h3>Rechercher une tête</h3>

<!-- ///////////////////////////// MODELES ////////////////////////////////// -->
<div class="border-line"></div>
Modèle : <select name="modele" id="modele" onchange="document.forms['chgmod'].submit();">
  <option value="-1">- - - Choisissez un modèle - - -</option>
   <?php
   if ($rech_modeles != false) {
       while ($ligne = mysqli_fetch_assoc($rech_modeles)) {
           $selected = '';
           if (!empty($_POST['modele']) && $_POST['modele'] == $ligne['IDMOD']) {
               $selected = 'selected="selected"';
           }
        // syntaxe Heredoc voir la doc http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
        echo <<<html
   <option value="{$ligne['IDMOD']}" ${selected}>{$ligne['MOD_LIBELLE']} </option>
html;
       }
   }
    mysqli_free_result(rech_modeles); ?>
</select><br>

<!-- //////////////////////////// TYPES ///////////////////////////////////// -->
<div class="border-line"></div>
 	<?php
    /* On commence par vérifier si on a envoyé un numéro de modèle et le cas échéant s'il est différent de -1 */
  if (!empty($_POST['modele']) && $_POST['modele'] != -1) {
      /* Cération de la requête pour avoir les types de ce modèle */
        $sql2 = 'SELECT DISTINCT
          TYPE.IDTYP AS IDTYP,
          TYPE.TYP_LIBELLE AS TYP_LIBELLE,
          TETE.TET_IDMOD AS TET_IDMOD
        FROM
          TETE,
          TYPE
        WHERE
          TETE.TET_IDTYP = TYPE.IDTYP
        AND
        (
          TETE.TET_IDMOD = '.mysqli_real_escape_string($connexion,$_POST['modele']).'
        )
        ORDER BY
          TYP_LIBELLE ASC';
      echo 'Type : <select name="type" id="type" onchange="document.forms[\'chgmod\'].submit();">';
      $rech_type = mysqli_query($connexion, $sql2);
      while ($ligne_type = mysqli_fetch_assoc($rech_type)) {
          $selected = '';
          if (!empty($_POST['type']) && $_POST['type'] == $ligne_type['IDTYP']) {
              $selected = 'selected="selected"';
          }
          echo <<<html
            <option value="{$ligne_type['IDTYP']}" {$selected}>{$ligne_type['TYP_LIBELLE']}</option>
html;
      } ?>
</select><br />
<?php

  } ?>

<!-- ///////////////////////////////////// LONGUEUR //////////////////////////// -->
<div class="border-line"></div>
 	<?php
    /* On commence par vérifier si on a envoyé un numéro de type et le cas échéant s'il est différent de -1 */
  if (!empty($_POST['modele']) && $_POST['modele'] != -1 && !empty($_POST['type']) && $_POST['type'] != -1) {
      /* Cération de la requête pour avoir les types de ce modèle */
        $sql3 = 'SELECT DISTINCT
          LONGUEUR.IDLON AS IDLON,
          LONGUEUR.LON_LIBELLE AS LON_LIBELLE,
          TETE.TET_IDMOD AS TET_IDMOD,
          TETE.TET_IDTYP AS TET_IDTYP,
          TETE.TET_IDLON AS TET_IDLON
        FROM
          TETE,
          LONGUEUR
        WHERE
          TETE.TET_IDLON = LONGUEUR.IDLON AND
          TETE.TET_IDMOD = '.mysqli_real_escape_string($connexion,$_POST['modele']).' and
          TETE.TET_IDTYP = '.mysqli_real_escape_string($connexion,$_POST['type']).'
        ORDER BY
          LON_LIBELLE ASC';
      $rech_longueur = mysqli_query($connexion, $sql3);
      if($rech_longueur === false){
          $e = mysqli_error_list($connexion);
          xdebug_var_dump($e,$sql3);
      }
      echo 'Longueur : <select name="longueur" id="longueur" onchange="document.forms[\'chgmod\'].submit();">';
      while ($ligne_longueur = mysqli_fetch_assoc($rech_longueur)) {
          $selected = '';
          if (!empty($_POST['longueur']) && $_POST['longueur'] == $ligne_longueur['IDLON']) {
              $selected = 'selected="selected"';
          }
          echo <<<html
    <option value="{$ligne_longueur['IDLON']}" {$selected}>{$ligne_longueur['LON_LIBELLE']}</option>
html;
      }
      mysqli_free_result(rech_longueur); ?>
</select><br />
<?php

  } ?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</form>
<?php
    /* Terminé, on ferme la connexion */
    mysqli_close($connexion);
}
?>
<!-- fin de content -->
</div>
<!-- Bande de contact  -->
<div id="content" class="layout-sidebar-right group">
    <div class="call-to-action">
      <div class="incipit">
            	<h2>En savoir plus ?</h2>
            	<p>Contactez notre service commercial</p>
            </div>
            <div class="separate-phone"></div>
            <div class="number-phone">+xxxxxxxxx</div>
            <div class="clear"></div>
      </div>
</div>
<?php
 include 'basdepage.php';
?>
@+

Re: Listes déroulantes dynamiques sur 5 niveaux

par Gizzmo » 05 déc. 2016, 15:35

Bonjour Moogli

Merci pour ta réponse rapide.
En détails ce qui ne fonctionne pas est :

La première <select> affiche bien la liste des modèles. Quand je choisis un modèle la page affiche bien la deuxième <select> avec le résultat de la requête sql2. Par contre quand je choisis un élément dans la deuxième <select> la page n'affiche pas de choix....comme si le résultat n'était pas envoyé à a la page.

J'ai testé ton code qui a été soigneusement allégé mais il ne fonctionne plus :
La première <select> affiche bien les données de la base. Quand je sélectionne un modèle il affiche la deuxième <select> vide et ne conserve pas la donnée de la première.

Par contre je ne connaissais pas la synthaxe Heredoc... merci pour l'info !

Re: Listes déroulantes dynamiques sur 5 niveaux

par moogli » 05 déc. 2016, 15:01

salut,

qu'est ce qui ne fonctionne pas exactement ?
est ce que le formulaire est bien soumis lorsque tu modifies le seconde select ?

il faut que tu simplifie ton code et que l'aére un peu, c'est compliquer à lire.
Pour cela évite de mélanger affichage et condition (exit le ternaire dans un echo par exemple).

<option value="<?php echo($code_modele[$i]); ?>"<?php echo((isset($mod) && $mod == $code_modele[$i])?" selected=\"selected\"":null); ?>><?php echo($modele[$i]); ?></option>
C'est trop complexe à lire et source de problème.

en restant sur ton formalisme tu peu allégé un peu comme ceci (passage de 229 à 155 lignes formatage, suppression de chose inutile etc.)
<?php
//entêtes de la page, hump c'est inutile ce prolonge, si tu as le doctype dans "header.php" c'est largement suffisant
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "user";
$mdp     = "user";
$base    = "mabase";

//fichiers entete
include 'header.php';
include 'navigation.php';
echo <<<html
 <div id="shadowslider"></div>
  <!--debut de content -->
  <div id="content" class="gradient layout-sidebar-no group">');
  <div id="slogan" class="inner">
    <h1>SECTION 3D</h1>
  </div>
html;

/* 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) {
    echo '<p>Un incident s\'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>';
} else {
    $choixbase = mysql_select_db($base, $connexion);
    $rech_modeles = mysql_query('SELECT * FROM MODELE ORDER BY IDMOD');
    $modele = array(); ?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgmod">
<h3>Rechercher une tête</h3>

<!-- ///////////////////////////// MODELES ////////////////////////////////// -->
<div class="border-line"></div>
Modèle : <select name="modele" id="modele" onchange="document.forms['chgmod'].submit();">
  <option value="-1">- - - Choisissez un modèle - - -</option>
   <?php
   if ($rech_modeles != false) {
       while ($ligne = mysql_fetch_assoc($rech_modeles)) {
           $selected = '';
           if (!empty($_POST['modele']) && $_POST['modele'] == $ligne['MOD_LIBELLE']) {
               $selected = 'selected="selected"';
           }
        // syntaxe Heredoc voir la doc http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
        echo <<<html
   <option value="{$ligne['IDMOD']}" ${selected}>{$ligne['MOD_LIBELLE']} </option>
html;
       }
   }
    mysql_free_result(rech_modeles); ?>
</select><br>

<!-- //////////////////////////// TYPES ///////////////////////////////////// -->
<div class="border-line"></div>
 	<?php
    /* On commence par vérifier si on a envoyé un numéro de modèle et le cas échéant s'il est différent de -1 */
  if ($_POST['modele'] && $_POST['modele'] != -1) {
      /* Cération de la requête pour avoir les types de ce modèle */
        $sql2 = 'SELECT DISTINCT
          TYPE.IDTYP AS IDTYP,
          TYPE.TYP_LIBELLE AS TYP_LIBELLE,
          TETE.TET_IDMOD AS TET_IDMOD
        FROM
          TETE,
          TYPE
        WHERE
          TETE.TET_IDTYP = TYPE.IDTYP
        AND
        (
          TETE.TET_IDMOD = '.mysql_free_result($_POST['modele']).'
        )
        ORDER BY
          TYP_LIBELLE ASC';
      echo 'Type : <select name="type" id="type" onchange="document.forms[\'chgmod\'].submit();">';
      $rech_type = mysql_query($sql2, $connexion);
      while ($ligne_type = mysql_fetch_assoc($rech_type)) {
          $selected = '';
          if (!empty($_POST['type']) && $_POST['type'] == $ligne_type['IDTYP']) {
              $selected = 'selected="selected"';
          }
          echo <<<html
            <option value="{$ligne_type['IDTYP']}" {$selected}>{$ligne_type['TYP_LIBELLE']}</option>
html;
      } ?>
</select><br />
<?php

  } ?>

<!-- ///////////////////////////////////// LONGUEUR //////////////////////////// -->
<div class="border-line"></div>
 	<?php
    /* On commence par vérifier si on a envoyé un numéro de type et le cas échéant s'il est différent de -1 */
  if (!empty($_POST['modele']) && $_POST['modele'] != -1 && !empty($_POST['type']) && $$_POST['type'] != -1) {
      /* Cération de la requête pour avoir les types de ce modèle */
        $sql3 = 'SELECT DISTINCT
          LONGUEUR.IDLON AS IDLON,
          LONGUEUR.LON_LIBELLE AS LON_LIBELLE,
          TETE.TET_IDMOD AS TET_IDMOD,
          TET.TET_IDTYP AS TET_IDTYP,
          TET.TET_IDLON AS TET_IDLON
        FROM
          TETE,
          LONGUEUR
        WHERE
          TETE.TET_IDLON = LONGUEUR.IDLON
        AND
        (
          TETE.TET_IDMOD = '.mysql_free_result($_POST['modele']).',
          TETE.TET_IDTYP = '.mysql_free_result($_POST['type']).'
        )
        ORDER BY
          LON_LIBELLE ASC';
      $rech_longueur = mysql_query($sql3, $connexion);
      echo 'Longueur : <select name="longueur" id="longueur" onchange="document.forms[\'chgmod\'].submit();">';
      while ($ligne_longueur = mysql_fetch_assoc($rech_longueur)) {
          $selected = '';
          if (!empty($_POST['longueur']) && $_POST['longueur'] == $ligne_longueur['IDLON']) {
              $selected = 'selected="selected"';
          }
          echo <<<html
    <option value="{$ligne_longueur['IDLON']}" {$selected}>{$ligne_longueur['LON_LIBELLE']}</option>
html;
      }
      mysql_free_result(rech_longueur); ?>
</select><br />
<?php

  } ?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</form>
<?php
    /* Terminé, on ferme la connexion */
    mysql_close($connexion);
}
?>
<!-- fin de content -->
</div>
<!-- Bande de contact  -->
<div id="content" class="layout-sidebar-right group">
    <div class="call-to-action">
      <div class="incipit">
            	<h2>En savoir plus ?</h2>
            	<p>Contactez notre service commercial</p>
            </div>
            <div class="separate-phone"></div>
            <div class="number-phone">+xxxxxxxxx</div>
            <div class="clear"></div>
      </div>
</div>
<?php
 include 'basdepage.php';
?>
je n'ai pas testé c'est syntaxiquement correcte.

Pour faire bien il faudrait faire les requêtes SQL avant et simplement utiliser les tableaux résultat (un seul tableau suffit pas besoin de faire un tableau par colonne). Regarde aussi du coté de foreach[/php] pour parcourir les tableau.

en dehors de cela le code semble logique.
qu'est ce qui ne fonctionne pas en détails ?

dernière chose, l'extension mysql à été supprimée de php 7 il serait intéressant d'utiliser [url=http://php.net/mysqli]mysqli
ou PDO :-)

@+

Listes déroulantes dynamiques sur 5 niveaux

par Gizzmo » 05 déc. 2016, 14:06

Bonjour

Je cherche une solution à un problème qui ressort souvent avec des solutions simples sur les forums... mais je le complique un peu plus. :?

J'ai une base SQL nommée TETE construite comme ceci :
IDTET : clé primaire
TET_LIBELLE : texte
TET_IDMOD : Id du modèle
TET_IDTYP : Id du type
TET_IDBRO : Id de la broche
TET_IDLON : Id de la longueur
TET_IDCON : Id du cone
TET_3D : booléen : 3d dispo ou pas
TET_FICHIER : Url du fichier 3D

Les différents ID sont des références à d'autres tables conçues de la même manière :
IDxxx : ID du parametre
xxx_LIBELLE : libellé du paramètre

xxx correspond aux trois premieres lettre du paramètre : par exemple pour la broche c'est IDBRO et BRO_LIBELLE.
Jusque là tout va bien les tables sont opérationnelles.


Dans ma page php j'utilise le script performant développé dans ce forum
faq-tutoriels/formulaires-listes-deroul ... t4562.html

il fonctionne super bien pour les deux premières listes déroulantes mais au delà de deux il ne fonctionne plus... Est ce que quelqu'un à une solution pour faire ce type de listes déroulantes sur 3 ou 4 niveaux ?

Mon code de page PHP est le suivant :
<?php
//entêtes de la page
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "user";
$mdp     = "user";
$base    = "mabase";
/* On récupère si elles existent les valeurs de recherche envoyées par le formulaire */
$mod = isset($_POST['modele'])?$_POST['modele']:null;
$typ = isset($_POST['type'])?$_POST['type']:null;
$lon = isset($_POST['longueur'])?$_POST['longueur']:null;

//fichiers entete
include 'header.php';
include 'navigation.php';
echo('
	<div id="shadowslider"></div>
	<!--debut de content -->
	<div id="content" class="gradient layout-sidebar-no group">');
//TITRE PRINCIPAL DE LA PAGE
echo('
	<div id="slogan" class="inner">
    <h1>SECTION 3D</h1>
    </div>
	');
					
//affichage des infos choisies dans le fornulaire
if(isset($_POST['ok']))
{
	if(isset($_POST['modele']) && $_POST['modele'] != "")
	{
    $mod_select = $_POST['modele'];
	}
	if(isset($_POST['type']) && $_POST['type'] != "")
	{
    $typ_select = $_POST['type'];
	}
	if(isset($_POST['longueur']) && $_POST['longueur'] != "")
	{
    $lon_select = $_POST['longueur'];
	}
}
//on indique à l'utilisateur ce qu'il a sélectionné
//echo('<p>Vos filtre de recherche : Modèle : '.$mod_select.' / Type : '.$typ_select.' / Longueur : '.$lon_select.' / Broche : '.$bro_select.'</p>');

/* 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 * FROM MODELE ORDER BY IDMOD';
    $rech_modeles = mysql_query($sql1);
    $code_modele = array();
    $modele = array();
    /* On active un compteur pour les modèles */
    $nb_modeles = 0;
    if($rech_modeles != false)
    {
        while($ligne = mysql_fetch_assoc($rech_modeles))
        {
            array_push($code_modele, $ligne['IDMOD']);
            array_push($modele, $ligne['MOD_LIBELLE']);

            /* On incrémente de compteur */
            $nb_modeles++;
        }
    }
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgmod">
<h3>Rechercher une tête</h3>

<!-- ///////////////////////////// MODELES ////////////////////////////////// -->
<div class="border-line"></div>
Modèle : <select name="modele" id="modele" onchange="document.forms['chgmod'].submit();">
  <option value="-1">- - - Choisissez un modèle - - -</option>
   <?php
    for($i = 0; $i < $nb_modeles; $i++)
    {
	?>
	 <option value="<?php echo($code_modele[$i]); ?>"<?php echo((isset($mod) && $mod == $code_modele[$i])?" selected=\"selected\"":null); ?>><?php echo($modele[$i]); ?></option>
    <?php
    }
    ?>
</select><br>
<!-- //////////////////////////// TYPES ///////////////////////////////////// -->
<div class="border-line"></div>
 	<?php
    /* On commence par vérifier si on a envoyé un numéro de modèle et le cas échéant s'il est différent de -1 */
	if(isset($mod) && $mod != -1)
    {
        /* Cération de la requête pour avoir les types de ce modèle */
        $sql2 = 'SELECT DISTINCT
					TYPE.IDTYP AS IDTYP,	
					TYPE.TYP_LIBELLE AS TYP_LIBELLE,	
					TETE.TET_IDMOD AS TET_IDMOD
				FROM 
					TETE,	
					TYPE
				WHERE 
					TETE.TET_IDTYP = TYPE.IDTYP
				AND
				(
					TETE.TET_IDMOD = '.$mod.'
				)
				ORDER BY 
					TYP_LIBELLE ASC';
        if($connexion != false)
        {
            $rech_type = mysql_query($sql2, $connexion);
            /* Un petit compteur pour les types */
            $nb_types = 0;
            /* On crée deux tableaux pour les numéros et les noms des types */
            $code_type = array();
            $nom_type = array();
            /* On va mettre les numéros et noms des types dans les deux tableaux */
            while($ligne_type = mysql_fetch_assoc($rech_type))
            {
                array_push($code_type, $ligne_type['IDTYP']);
                array_push($nom_type, $ligne_type['TYP_LIBELLE']);
                $nb_types++;
            }
            /* Maintenant on peut construire la liste déroulante */
            ?>
			Type : <select name="type" id="type" onchange="document.forms['chgmod'].submit();">
            <?php  
            for($d = 0; $d<$nb_types; $d++)
            {
                ?>
  <option value="<?php echo($code_type[$d]); ?>"<?php echo((isset($typ_select) && $typ_select == $code_type[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_type[$d]); ?></option>
                <?php
            }
?>
</select><br />
<?php
        }
	}
?>
<!-- ///////////////////////////////////// LONGUEUR //////////////////////////// -->
<div class="border-line"></div>
 	<?php
    /* On commence par vérifier si on a envoyé un numéro de type et le cas échéant s'il est différent de -1 */
	if(isset($mod) && $mod != -1 && isset($typ) && $typ != -1)
    {
        /* Cération de la requête pour avoir les types de ce modèle */
        $sql3 = 'SELECT DISTINCT
					LONGUEUR.IDLON AS IDLON,	
					LONGUEUR.LON_LIBELLE AS LON_LIBELLE,	
					TETE.TET_IDMOD AS TET_IDMOD,
					TET.TET_IDTYP AS TET_IDTYP,
					TET.TET_IDLON AS TET_IDLON
				FROM 
					TETE,	
					LONGUEUR
				WHERE 
					TETE.TET_IDLON = LONGUEUR.IDLON
				AND
				(
					TETE.TET_IDMOD = '.$mod.',
					TETE.TET_IDTYP = '.$typ.'
				)
				ORDER BY 
					LON_LIBELLE ASC';
        if($connexion != false)
        {
            $rech_longueur = mysql_query($sql3, $connexion);
            /* Un petit compteur pour les longueurs */
            $nb_longueur = 0;
            /* On crée deux tableaux pour les numéros et les noms des longueurs */
            $code_longueur = array();
            $nom_longueur = array();
            /* On va mettre les numéros et noms des longueurs dans les deux tableaux */
            while($ligne_longueur = mysql_fetch_assoc($rech_longueur))
            {
                array_push($code_longueur, $ligne_longueur['IDLON']);
                array_push($nom_longueur, $ligne_longueur['LON_LIBELLE']);
                $nb_longueur++;
            }
            /* Maintenant on peut construire la liste déroulante */
            ?>
			Longueur : <select name="longueur" id="longueur" onchange="document.forms['chgmod'].submit();">
            <?php  
            for($e = 0; $e<$nb_longueur; $e++)
            {
                ?>
  <option value="<?php echo($code_longueur[$e]); ?>"<?php echo((isset($lon_select) && $lon_select == $code_longueur[$e])?" selected=\"selected\"":null); ?>><?php echo($nom_longueur[$e]); ?></option>
                <?php
            }
?>
</select><br />
<?php
        }
	}
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</form>
<?php
    /* Terminé, on ferme la connexion */
	 /* Un petit coup de balai */
        mysql_free_result($rech_type);
		mysql_free_result($rech_modeles);
    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
}
?>
<!-- fin de content -->     
</div> 
<!-- Bande de contact  -->
<div id="content" class="layout-sidebar-right group">
		<div class="call-to-action">
			<div class="incipit">
            	<h2>En savoir plus ?</h2>
            	<p>Contactez notre service commercial</p>
            </div>
            <div class="separate-phone"></div>
            <div class="number-phone">+xxxxxxxxx</div>
            <div class="clear"></div>
      </div>   
</div>     
<?php include 'basdepage.php'; 
?>
Merci d'avance pour toute personne qui aurait une solution ou qui a déjà été confronté à ce problème.