par
stefane321 » 26 janv. 2008, 03:11
Bonjour,
J'ai utilisé le tutoriel suivant pour faire une liste déroulante qui en fait apparaite une autre.
http://www.phpfrance.com/forums/voir_sujet-4562.php
J'ai pris la solution javascript.
Donc, je m'en sert dans 2 pages.
La première je crée l'utilisateur.
La deuxième, sert a modifier les info sur l'utilisateur.
Le script de liste déroulante fonctionne bien mais j'ai besoin d'aide pour y faire une petite modification afin que dans la page de modification des données de l'utilisateur je ne perde pas les données d'origine de la région et de la ville.
Car actuellement, supposons que je veule seulement changer son numéro de téléphone, je dois aussi penser a resélectionner la région et la ville sinon dans la bd les champs region_id et departement_id viennent a 0.
J'espère que vous pourrez m'aider. Merci!
Voici mon code (je vous colle seulement les bout relatif aux liste déroulante car sinon on s'en sortira pas la page est très longue:
include("../config.php");
/* Requête SQL de récupération des données */
$sql = "SELECT id_departement AS idd, departement AS dept, region.id_region AS idr, region ".
"FROM departement, region ".
"WHERE departement.id_region = region.id_region ".
"ORDER BY region.id_region;";
/* Connexion et exécution de la requête */
$connexion = mysql_pconnect($host, $login, $password);
if($connexion != false)
{
$choixbase = mysql_select_db($db, $connexion);
$recherche = mysql_query($sql, $connexion);
/* Pour ne pas écraser mes tableaux, je crée un témoin */
$temoin_r = 0;
/* Création du tableau PHP des valeurs récupérées */
$regions = array();
/* Index du département par tableau régional */
$id = 0;
while($ligne = mysql_fetch_assoc($recherche))
{
$r = $ligne['idr'];
$d = $ligne['idd'];
/* Je vérifie si je suis toujours dans la même région, sinon je crée les tableaux nécessaires */
if($temoin_r != $r)
{
$regions[$r] = array();
/* J'ajoute laa région */
$regions[$r][0] = $ligne['region'];
$regions[$r][1] = array();
$regions[$r][2] = array();
$temoin_r = $r;
$id = 0;
}
/* J'ajoute les départements */
$regions[$r][1][$id] = $d;
$regions[$r][2][$id] = $ligne['dept'];
$id++;
}
/* On sérialise le tableau obtenu pour traitement par JavaScript */
$chaine = htmlspecialchars(serialize($regions), ENT_QUOTES);
?>
<script type="text/javascript">
/* <![CDATA[ */
<!--
/*
* Ici, on transmets la chaîne sérialisée à JavaScript
* pour la transformer en tableau indexé JavaScript
*/
var tableau = new PhpArray2Js('<?php echo $chaine; ?>');
var tab = tableau.retour();
// -->
/* ]]> */
</script>
if(isset($_POST['ok']) && isset($_POST['departement']) && $_POST['departement'] != "")
{
$region_selectionnee = $_POST['region'];
$dept_selectionne = $_POST['departement'];
?>
<p>Vous avez sélectionné le département <?php echo($dept_selectionne); ?> dans la région <?php echo($region_selectionnee); ?></p>
<?php
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez une région</legend>
<select name="region" id="region" onchange="changeDept(tab,this.value);">
<option value="vide">- - - Choisissez une région - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
$nbr = count($regions);
foreach($regions as $nr => $nom)
{
?>
<option value="<?php echo($nr); ?>"><?php echo(utf8_encode($nom[0])); ?></option>
<?php
}
?>
</select>
<!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
la seconde liste déroulande -->
<span id="blocDepartements"></span><br />
</fieldset>
</form>
<?php
}
Voici ma bd:
Code : Tout sélectionner
CREATE TABLE `Ventes_gestion` (
`id` int(255) NOT NULL auto_increment,
`nom_entreprise` varchar(255) NOT NULL default '',
`services` text NOT NULL,
`personne_contact` varchar(255) NOT NULL default '',
`url_web` varchar(255) NOT NULL default '',
`courriel` varchar(255) NOT NULL default '',
`telephone` varchar(255) NOT NULL default '',
`tel_sans_frais` varchar(255) NOT NULL default '',
`telecopieur` varchar(255) NOT NULL default '',
`adresse` text NOT NULL,
`code_postal` varchar(255) NOT NULL,
`date_dernier_appel` date NOT NULL,
`recall` int(1) NOT NULL,
`date_de_rappel` date NOT NULL,
`soumission_envoye` int(1) NOT NULL default '0',
`message` text NOT NULL,
`image` varchar(255) NOT NULL default '',
`status` int(1) NOT NULL,
`region_id` int(255) NOT NULL,
`ville_id` int(255) NOT NULL,
PRIMARY KEY (`id`)
) Merci!
Bonjour,
J'ai utilisé le tutoriel suivant pour faire une liste déroulante qui en fait apparaite une autre.
[url]http://www.phpfrance.com/forums/voir_sujet-4562.php[/url]
J'ai pris la solution javascript.
Donc, je m'en sert dans 2 pages.
La première je crée l'utilisateur.
La deuxième, sert a modifier les info sur l'utilisateur.
Le script de liste déroulante fonctionne bien mais j'ai besoin d'aide pour y faire une petite modification afin que dans la page de modification des données de l'utilisateur je ne perde pas les données d'origine de la région et de la ville.
Car actuellement, supposons que je veule seulement changer son numéro de téléphone, je dois aussi penser a resélectionner la région et la ville sinon dans la bd les champs region_id et departement_id viennent a 0.
J'espère que vous pourrez m'aider. Merci!
Voici mon code (je vous colle seulement les bout relatif aux liste déroulante car sinon on s'en sortira pas la page est très longue:
[php]include("../config.php");
/* Requête SQL de récupération des données */
$sql = "SELECT id_departement AS idd, departement AS dept, region.id_region AS idr, region ".
"FROM departement, region ".
"WHERE departement.id_region = region.id_region ".
"ORDER BY region.id_region;";
/* Connexion et exécution de la requête */
$connexion = mysql_pconnect($host, $login, $password);
if($connexion != false)
{
$choixbase = mysql_select_db($db, $connexion);
$recherche = mysql_query($sql, $connexion);
/* Pour ne pas écraser mes tableaux, je crée un témoin */
$temoin_r = 0;
/* Création du tableau PHP des valeurs récupérées */
$regions = array();
/* Index du département par tableau régional */
$id = 0;
while($ligne = mysql_fetch_assoc($recherche))
{
$r = $ligne['idr'];
$d = $ligne['idd'];
/* Je vérifie si je suis toujours dans la même région, sinon je crée les tableaux nécessaires */
if($temoin_r != $r)
{
$regions[$r] = array();
/* J'ajoute laa région */
$regions[$r][0] = $ligne['region'];
$regions[$r][1] = array();
$regions[$r][2] = array();
$temoin_r = $r;
$id = 0;
}
/* J'ajoute les départements */
$regions[$r][1][$id] = $d;
$regions[$r][2][$id] = $ligne['dept'];
$id++;
}
/* On sérialise le tableau obtenu pour traitement par JavaScript */
$chaine = htmlspecialchars(serialize($regions), ENT_QUOTES);
?>
<script type="text/javascript">
/* <![CDATA[ */
<!--
/*
* Ici, on transmets la chaîne sérialisée à JavaScript
* pour la transformer en tableau indexé JavaScript
*/
var tableau = new PhpArray2Js('<?php echo $chaine; ?>');
var tab = tableau.retour();
// -->
/* ]]> */
</script>[/php]
[php]if(isset($_POST['ok']) && isset($_POST['departement']) && $_POST['departement'] != "")
{
$region_selectionnee = $_POST['region'];
$dept_selectionne = $_POST['departement'];
?>
<p>Vous avez sélectionné le département <?php echo($dept_selectionne); ?> dans la région <?php echo($region_selectionnee); ?></p>
<?php
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez une région</legend>
<select name="region" id="region" onchange="changeDept(tab,this.value);">
<option value="vide">- - - Choisissez une région - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
$nbr = count($regions);
foreach($regions as $nr => $nom)
{
?>
<option value="<?php echo($nr); ?>"><?php echo(utf8_encode($nom[0])); ?></option>
<?php
}
?>
</select>
<!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
la seconde liste déroulande -->
<span id="blocDepartements"></span><br />
</fieldset>
</form>
<?php
} [/php]
Voici ma bd:
[code]CREATE TABLE `Ventes_gestion` (
`id` int(255) NOT NULL auto_increment,
`nom_entreprise` varchar(255) NOT NULL default '',
`services` text NOT NULL,
`personne_contact` varchar(255) NOT NULL default '',
`url_web` varchar(255) NOT NULL default '',
`courriel` varchar(255) NOT NULL default '',
`telephone` varchar(255) NOT NULL default '',
`tel_sans_frais` varchar(255) NOT NULL default '',
`telecopieur` varchar(255) NOT NULL default '',
`adresse` text NOT NULL,
`code_postal` varchar(255) NOT NULL,
`date_dernier_appel` date NOT NULL,
`recall` int(1) NOT NULL,
`date_de_rappel` date NOT NULL,
`soumission_envoye` int(1) NOT NULL default '0',
`message` text NOT NULL,
`image` varchar(255) NOT NULL default '',
`status` int(1) NOT NULL,
`region_id` int(255) NOT NULL,
`ville_id` int(255) NOT NULL,
PRIMARY KEY (`id`)
)[/code] Merci!