--
Assistance et formations informatiques
 
 
Missions informatiques

SARL DBC
La Fons Couverte
83310 Grimaud
04 94 56 83 66
06 11 10 66 24

email
 

  :. Analyse :. Organisation
  :. Vente et installation :. Programmes de gestion spécifiques
  :. Formations et assistances :. Vidéo surveillance

 :. Listes liées dans un Formulaire avec des données d'une base MySql pour les listes


- Voici un exemple pour lier des listes rattachées à des tables d'une base MySql dans un formulaire via la solution XHR.
- La première liste est une liste de Marque de voitures (Marque). Une fois mise à jour, le code javascript met à jour la deuxième Liste de gammes de voitures.
- La liste liée est une liste de gamme de voitures (Gamme).

Le système utilise une gestion en XHR, c'est à dire l'appel d'un fichier PHP (extraction.php) par javascript, sans que le formulaire ne soit remis à jour. Le javascript appelle donc le fichier et lit les données pour les afficher dans le formulaire courant.

2 tables permettent de gérer les listes :
- Tbl_marque

CREATE TABLE IF NOT EXISTS `Tbl_marque` (
`marque_id` int(11) NOT NULL AUTO_INCREMENT,
`marque_nom` varchar(50) NOT NULL,
PRIMARY KEY (`marque_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


- Tbl_gamme
CREATE TABLE IF NOT EXISTS `Tbl_gamme` (
`gamme_id` double NOT NULL AUTO_INCREMENT,
`gamme_nom` varchar(50) NOT NULL,
`lien_marque` double NOT NULL,
PRIMARY KEY (`gamme_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



 

1/ Le formulaire complet avec le javascript :

<?php
// on se connecte a MySQL

require_once('votre fichier de connexion a votre base');

// on sélectionne la base
mysql_select_db('Nom de la base',$Nom du fichier de connexion) or die('Erreur de selection '.mysql_error());

//Création requete pour la liste des villes
$sql3 = "SELECT * FROM Tbl_marque order by nom-marque";
$query3 = mysql_query($sql3) or die('Erreur ville l'.mysql_error());

//Création requete pour la liste des gens
$sql4 = "SELECT * FROM Tbl_gamme order by nom_gamme";
$query4 = mysql_query($sql4) or die('Erreur Gens '.mysql_error());
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>Untitled Document</title>
<script type="text/javascript">

/*--------------------------------*/
/* Renvoie handle DOM ( A ne pas changer !) */
/*--------------------------------*/

function findObj(id)
{
if (document.getElementById) {
return (document.getElementById(id));
}
else if (document.all) {
return (document.all[id]);
}
else if (document.layers) {
return (document.layers[id]);
}
return null;
}
/*--------------------------------*/
/* Report du resultat ( A ne pas changer !) */
/*--------------------------------*/

function resReport(ex)
{
var box = findObj('result');
if (!box)
{
var divs = findObj('super');
box = document.createElement('div');
box.setAttribute("id", "result");
box.className = "err_app";
if (divs) divs.appendChild(box);
else document.body.appendChild(box);
}
if (ex instanceof Error)
{
box.innerHTML = ex.name+" : "+ex.message;
}
else if (typeof ex == 'string') {
box.innerHTML = ex;
}
}
/*--------------------------------*/
/* Formate le Post du Formulaire */
/*--------------------------------*/
function getQueryString(marque)
{
qstr = 'Marque=' + encodeURIComponent(marque);
return qstr;
}

/*---------------------------------*/
/* Affiche le résultat Text Result */
/*---------------------------------*/

function updateText(xml) {
var status = parseInt(xml.getElementsByTagName('status')[0].firstChild.nodeValue);
// Erreur
if (status == 0) {
var reponse = xml.getElementsByTagName('reponse')[0].firstChild.nodeValue;
resReport(reponse);
return false;
}
// Traitement
var reponse = xml.getElementsByTagName('reponse')[0].firstChild.data;
var td = findObj("Gamme");
td.innerHTML = reponse;
}
/*------------------------------*/
/* Dialogue avec le Serveur */
/*------------------------------*/

function xmlhttpPost(marque)
{
try {
var xhr = false;
var self = this;
var strURL = "extraction.php";

if (window.XMLHttpRequest)
self.xhr = new XMLHttpRequest();
else self.xhr = new ActiveXObject("Microsoft.XMLHTTP");
self.xhr.open('POST', strURL, true);
self.xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xhr.onreadystatechange = function() {
if (self.xhr.readyState == 4 && self.xhr.status == 200) {
updateText(self.xhr.responseXML);
}
if (self.xhr.readyState == 4 && self.xhr.status != 200) {
resReport("<p><font color='RED'>Erreur " + strURL + " : " + self.xhr.statusText+"</font></p>");
}
}
self.xhr.send(getQueryString(marque));
}
catch (ex) {
resReport(ex);
return false
}
}
</script>
</head>
<body>
<form name="frmSelect" action="
recup.php" method="post" enctype="multipart/form-data">
<table width="60%" align="center">
<tr>
<th>
Sélection :
</th>
<td>
Site<br />
<select size="1" name="
Marque" onChange="xmlhttpPost(this.value)">
<?php // Selection de la Marque
$sql = "SELECT * FROM Tbl_marque ORDER BY marque_nom ";
$result = mysql_query($sql);
print ("<option value='0'>Toutes marques</option>\n");
while ($bres = mysql_fetch_object($result)) {
print ("<option value='$bres->marque_id'>$bres->marque_nom</option>\n");
}
?>

</select>
</td>
<td id="Gamme">
Gamme<br />
<select size="1" name="
Gamme">
<?php // Selection du Modele
$sql = "SELECT * FROM Tbl_gamme WHERE = $marque_id ORDER BY gamme_nom";
$result = mysql_query($sql);
print ("<option value='0'>Gammes</option>\n");
while ($bres = mysql_fetch_object($result)) {
print ("<option value='$bres->gamme_id'>$bres->gamme_nom</option>\n");
}
?>

</select>
</td>
<td><input type="submit" name="button" id="button" value="Envoyer" />
<br /></td>
</tr>
</table>
</form>
</body>
</html>


2/ Le fichier appelé par le javascript : extraction.php

<?php
// on se connecte a MySQL
require_once('votre fichier de connexion a votre base');
// on sélectionne la base
mysql_select_db('Nom de la base',$Nom du fichier de connexion) or die('Erreur de selection '.mysql_error());

function Retour_XML($reponse, $status)
{
print ("<root>\n");
print ("<status>$status</status>\n");
print ("<reponse><![CDATA[");
print ("$reponse");
print ("]]></reponse>\n");
print ("</root>\n");
die();
}

header('Content-Type: text/xml; charset=ISO-8859-1');
echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';

// Récupération
$marque = utf8_decode($_POST['Marque']);

// Liste Gamme
$sql = "SELECT * FROM
Tbl_gamme WHERE gamme_id = $marque ORDER BY gamme_nom";
$result = mysql_query($sql) or die('Erreur de selection '.mysql_error());

// Reponse XML
print ("<root>\n");
print ("<reponse><![CDATA[");
// CDATA de la LISTE
print ("<SELECT name=
'Gamme' size='1'>\n");
print ("<option value='0'>
Gammes</option>\n");
while ($bres = mysql_fetch_object($result))
print ("<option value='$bres->
gamme_id'>$bres->gamme_nom</option>\n");
print ("</SELECT>\n");
print ("]]></reponse>\n");
print ("<status>1</status>\n");
print ("</root>\n");
mysql_close();
?>

 

Un petit email de remerciement ou de commentaire est toujours le bienvenu !
contact@denisbillo.com

A plus !

Denis

Dernières actualités de DBC
Mise à jour 03/2024 : Yoga Traditionnel, Stages, cours en ligne et privé, cours à domicile autour de MONS 34390 dans l'Hérault
Dernière création 02/2024 :Massages, soins du corps, Saint-Laurent-du-Var, Isabel Vivez Massage
Dernière création 08/2023 : Yoga Pays de Gex : 01170 Crozet | Yoga en Provence : 13790 Peynier
Dernière création 02/2023 : Voyage dans le désert du maroc, Trek dans le désert Marocain
Dernière création 12/2022 : Manoir Les Roches Blanches à La Garde Freinet - Chambre d'hotes Golfe de Saint-Tropez
Dernière création 08/2022 : La Cabane de Pascale : Objets de décoration et des créations artisanales à Grimaud
Dernière création 01/2022 : Tendance Voile Location de voilier multicoques de Luxe Golfe de Saint-Tropez
Dernière création 04/2021 : Transfert aéroport Toulon Nice Cannes de Saint-Tropez
Dernière création 08/2020 : Galerie Regard Ste Maxime Restaurant à Sainte-Maxime et Galerie d'art
Dernière création 05/2020 : Salon de coiffure Cavalaire Sandrine laurent
Dernière création 03/2020 : Ostéopathe Pascale Rome Port Grimaud Sainte Maxime
Dernière création 03/2020 : Nouvelle version pour Art-zen.com Boutique en ligne
Dernière création 02/2020 : Location de Box au centre du Golfe de Saint Tropez
Dernière création 10/2019 : I7informatique et Services Sainte-Maxime
Dernière création 10/2019 : Icônes de la splendeur, Valérie Rose Nice
Dernière création 02/2019 : Entretien Piscine Sainte-Maxime, Grimaud, Port-Grimaud, Le Plan de la Tour, Les issambres, Les piscines de Laure
Dernière création 01/2019 : Mise à jour du site du Polo Club de Saint Tropez, création d'un formulaire de réservation
Dernière création 03/2018 : Rigotti Anches pour intruments
Dernière création 03/2018 : Yachting Concept
Dernière création 08/2017 : Vanessa Brault Shakti hatha Yoga Maussane les Alpilles
Dernière création 03/2017 : CAP 3 Grimaud Chantier Naval
Dernière création 12/2016 : Boutique en ligne de vente de Stickers et autocollants<
Dernière création 08/2016 : CasaCri La Maison des Jumeaux<
Dernière création 08/2016 : Campagne des Jumeaux
Dernière création 05/2015 : Désert Marocain site en responsive UTF8 et HTML5
Dernière création 01/2015 : Robert FAURE peintre sumi-e présente ses ouevres
Dernière création 12/2013 : Caravane Renard Du Désert
Sites perso: Yoga Darshan Pratique traditionnelle du Yoga   |   Stage de Yoga   |    Retraite de Yoga
  Denis Billo Consultant : SARL DBC | Plan du site | Haut de page