Recuperation des données d'une liste
Résolu/Fermé
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
-
20 févr. 2008 à 22:58
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 24 févr. 2008 à 12:01
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 24 févr. 2008 à 12:01
A voir également:
- Recuperation des données d'une liste
- Liste déroulante excel - Guide
- Logiciel de récupération de données - Guide
- Liste déroulante en cascade - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Récupérer une vidéo youtube - Guide
34 réponses
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
21 févr. 2008 à 18:04
21 févr. 2008 à 18:04
oui je developpe le site sous firefox.
En tout cas c'est super sympa a vous 2 de vous pencher sur mon pb
d'habitude j'aide les autres sur des problemes que je connais bien mais la j'avoue je suis un ignare ,enfin moins ce soir vu ce que j'ai lu aujourd'hui..lol!! mais je suis loin du compte.
Un grand merci
je continue
@+
En tout cas c'est super sympa a vous 2 de vous pencher sur mon pb
d'habitude j'aide les autres sur des problemes que je connais bien mais la j'avoue je suis un ignare ,enfin moins ce soir vu ce que j'ai lu aujourd'hui..lol!! mais je suis loin du compte.
Un grand merci
je continue
@+
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
21 févr. 2008 à 18:25
21 févr. 2008 à 18:25
Bonsoir,
Voici trois fichiers si tuveux faire en Ajax:
config.php:
listes_liees.php( le formulaire qui contient les listes, et la fonction Ajax)
rep_PhpAjax.php(attention respectes bien l'orthographe de ce nom !!)
(le script php appelé par la reqest Ajax et qui va interoger la BDD pour generer la liste 2 et renvoyer la réponse qui sera affichée dans ta page.)
Essayes et adaptes ça à ton cas.
Voici trois fichiers si tuveux faire en Ajax:
config.php:
<?php $host="localhost"; $Login="root"; $Pass="xxxxxxx"; $DB="test"; $Table="etudiants"; $champ_niv="niveau"; $champ_etud="etudiants"; ?>
listes_liees.php( le formulaire qui contient les listes, et la fonction Ajax)
<html> <head> <!-- Script de listes deroulantes liees avec appel par AJAX, (evite le rechargement de la page) --> <script language="Javascript"type="text/JavaScript"> // Requette AJAX function makeRequest(url,id_niveau,id_ecrire){ var http_request = false; //créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Abandon :( Impossible de créer une instance XMLHTTP'); return false; } http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse // lancement de la requete http_request.open('POST', url, true); //changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'.... http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); obj=document.getElementById(id_niveau); data="val_sel="+obj.value; http_request.send(data); } function traitementReponse(http_request,id_ecrire) { var affich=""; if (http_request.readyState == 4) { if (http_request.status == 200) { // cas avec reponse de PHP en mode texte: //chargement des elements reçus dans la liste var affich_list=http_request.responseText; obj = document.getElementById(id_ecrire); obj.innerHTML = affich_list; } else { alert('Un problème est survenu avec la requête.'); } } } </script> </head> <?php include ("config.php"); // Connexion a la base de donnees $AccesBase = mysql_connect($host,$Login,$Pass); mysql_select_db($DB,$AccesBase); $QuestionBase = "SELECT DISTINCT $champ_niv FROM $Table ORDER BY $champ_niv ASC " ; $result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error()); $nombre_enr=mysql_num_rows($result_recherche); ?> <body> <form name="test1" method="post" action="liste_liees.php" > <div id="id_list1">Niveau:<br> <select name="niv1" id="id_niv1" onChange="makeRequest('rep_PhpAjax.php','id_niv1','id_list2')"> <option>-- Choisissez --</option> <?php while ($row=mysql_fetch_assoc($result_recherche)){ ?> <option value="<?php echo $row[$champ_niv]?>"><?php echo $row[$champ_niv]?></option> <?php } ?> </select> <br><br> </div> <div id="id_list2"> <!-- ici sera charge la reponse mode texte de PHP à la request AJAX --> </div> </form> </body> </html>
rep_PhpAjax.php(attention respectes bien l'orthographe de ce nom !!)
(le script php appelé par la reqest Ajax et qui va interoger la BDD pour generer la liste 2 et renvoyer la réponse qui sera affichée dans ta page.)
<?php // script PHP interrogation Base de donnees pour reponse a la requette AJAX include ("config.php"); // Connexion a la base de donnees $AccesBase = mysql_connect($host,$Login,$Pass); mysql_select_db($DB,$AccesBase); $QuestionBase = "SELECT * FROM $Table WHERE ".$champ_niv."='".$_POST[val_sel]."' ORDER BY ".$champ_etud." ASC " ; $result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error()); // construction de la liste deroulante $aff==""; $aff=$aff."Etudiants:<br> <select name='niv1' id='cont_list2' > <option>-- Choisissez --</option>"; while ($row=mysql_fetch_assoc($result_recherche)){ $aff.="<option value=\"$row[$champ_etud]\">$row[$champ_etud]</option>"; } $aff=$aff."</select><br><br>"; // envoi reponse Php a Ajax echo $aff; ?>
Essayes et adaptes ça à ton cas.
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
21 févr. 2008 à 18:29
21 févr. 2008 à 18:29
waouhhhh
merci alain
j'adapte mes données (connexion etc et je teste)
MERCI!!!!
merci alain
j'adapte mes données (connexion etc et je teste)
MERCI!!!!
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
22 févr. 2008 à 08:36
22 févr. 2008 à 08:36
bonjour tous le monde
je progresse
<html>
<head>
<script language="JavaScript">
<!--
function cherchetype()
<!--permet de selectionner le type de pc
<!--faire une fonction pour chaque cat (modele fabricant etc..)-->
{
var type
type =document.getElementById('pc').options[document.getElementById('pc').selectedIndex].value;
<!--permet de recuperer la variable type que je remet dans le input qui sera caché dans la page-->
document.location.href="?type="+type
}
</script>
<body>
<form name="ordi" id="ordi" method="get">
<select name="pc" id="pc" onchange="javascript:cherchetype();">
<option value="0">Choisissez le type de votre PC</option>
<option value="bureau">ordinateur de bureau</option>
<option value="portable">Portable</option>
</select>
</form>
<input type="text" value="<? echo $type ?>">
<td>
</td>
</body>
</head>
</html>
voila je recupere bien ma variable $type
seul petit detail mais c'est pas important une fois que ma variable apparait dans mon champ input ( la liste se remet automatiquement au debut.
Y' moyen d'arranger ça ?
je sais pas si c'est la bonne méthode mais ca a l'air de fonctionner.C'etait tout bete en fait
merci pour tous les tuyaux
je progresse
<html>
<head>
<script language="JavaScript">
<!--
function cherchetype()
<!--permet de selectionner le type de pc
<!--faire une fonction pour chaque cat (modele fabricant etc..)-->
{
var type
type =document.getElementById('pc').options[document.getElementById('pc').selectedIndex].value;
<!--permet de recuperer la variable type que je remet dans le input qui sera caché dans la page-->
document.location.href="?type="+type
}
</script>
<body>
<form name="ordi" id="ordi" method="get">
<select name="pc" id="pc" onchange="javascript:cherchetype();">
<option value="0">Choisissez le type de votre PC</option>
<option value="bureau">ordinateur de bureau</option>
<option value="portable">Portable</option>
</select>
</form>
<input type="text" value="<? echo $type ?>">
<td>
</td>
</body>
</head>
</html>
voila je recupere bien ma variable $type
seul petit detail mais c'est pas important une fois que ma variable apparait dans mon champ input ( la liste se remet automatiquement au debut.
Y' moyen d'arranger ça ?
je sais pas si c'est la bonne méthode mais ca a l'air de fonctionner.C'etait tout bete en fait
merci pour tous les tuyaux
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
22 févr. 2008 à 08:45
22 févr. 2008 à 08:45
Ajoute dans ton script au moment de la génération des select un test qui, pour l'option sélectionnée, ajoute selected='true'
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
22 févr. 2008 à 09:12
22 févr. 2008 à 09:12
faut que je mette ca dans la declaration de la fonction?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
22 févr. 2008 à 09:35
22 févr. 2008 à 09:35
Alors tu as abandonné la solution que je te proposait ?
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
22 févr. 2008 à 09:50
22 févr. 2008 à 09:50
bonjour alain,
non je l'ai pas abandonnée ,mais faut que je me perfectionne en JS
je me sert de tes fichiers pour travailler et progresser car il y a plein de zone d'ombres pour moi par exemple
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
il faut vraiment que j'etudie ça à fond
la solution que j'ai trouvée honnetement c'est un peu par hasard.. lol!
maisc'est pas encore ça je decouvre au fur et à mesure des complications (par exemple le type d'ordi c'est bon,ma variable passe bien ensuite je la met dans ma requete fabricant qui s'effectue correctement mais quand j'affiche le resultat les champs se vident..?)
je tiens le bon bout.
Depuis 5 h ce matin j'y suis....
un grand et enorme merci en tout cas pour votre aide
@+
non je l'ai pas abandonnée ,mais faut que je me perfectionne en JS
je me sert de tes fichiers pour travailler et progresser car il y a plein de zone d'ombres pour moi par exemple
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
il faut vraiment que j'etudie ça à fond
la solution que j'ai trouvée honnetement c'est un peu par hasard.. lol!
maisc'est pas encore ça je decouvre au fur et à mesure des complications (par exemple le type d'ordi c'est bon,ma variable passe bien ensuite je la met dans ma requete fabricant qui s'effectue correctement mais quand j'affiche le resultat les champs se vident..?)
je tiens le bon bout.
Depuis 5 h ce matin j'y suis....
un grand et enorme merci en tout cas pour votre aide
@+
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
22 févr. 2008 à 10:25
22 févr. 2008 à 10:25
Lewis34, je t'invite à choisir : malgré tout le respect que j'ai pour Alain_42 et la techno qu'i propose, il est préférable de choisir un des deux axes proposés et de s'y tenir.
A toi de choisir.
A toi de choisir.
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
22 févr. 2008 à 10:33
22 févr. 2008 à 10:33
mon expereince me fait dire que si qqch de simple fonctionne pourquoi chercher compliqué...
la méthode d'alain est pour moi ,et pour le moment trop ardue.Mes connaissances sont insuffidsantes pour tout biebn saisir,et je ne veut pas non plus emebter tout le monde.
C'est pour cela que je vais m'en servir pour on va dire me perfectionner,car si il y a un truc que j'aime pas faire c'est bien de copier coller betement un code et pas savoir le pourquoi du comment.
la je continue sur ma lancée avec le code actuel et ton conseil pour le select =true pour afficher la lvaleur de la liste selectionnée
@+
la méthode d'alain est pour moi ,et pour le moment trop ardue.Mes connaissances sont insuffidsantes pour tout biebn saisir,et je ne veut pas non plus emebter tout le monde.
C'est pour cela que je vais m'en servir pour on va dire me perfectionner,car si il y a un truc que j'aime pas faire c'est bien de copier coller betement un code et pas savoir le pourquoi du comment.
la je continue sur ma lancée avec le code actuel et ton conseil pour le select =true pour afficher la lvaleur de la liste selectionnée
@+
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
22 févr. 2008 à 12:22
22 févr. 2008 à 12:22
Voici ce que je te propose pour générer dynamiquement ton <select.
<form name="ordi" id="ordi" method="get">
<select name="pc" id="pc" onchange="javascript:cherchetype();">
<?php
$lesOptions = Array( "bureau", "portable" );
for( $rangOption=0; $rangOption < sizeof( $lesOptins ) ; $rangOption++ )
{
echo '<option value="' . $lesOptions[ $rangOption ] . '"';
if( $lOption == $lesOptions[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lesOptions[ $rangOption ] . '</option>';
}
?>
</select>
Ceci suppose que la variable $lOption contient la valeur de l'option sélectionnée ($lOption = $_GET[ 'pc' ])
Je n'ai pas validé ceci à toi de le faire mais je suis certain que la logique nécessaire y est.
la valeur et le texte de chaque option sont identiques ; lorsque ça marchera, tu pourras t'essayer à imaginer ce qui est nécessaire pour avoir valeur et texte différents.
<form name="ordi" id="ordi" method="get">
<select name="pc" id="pc" onchange="javascript:cherchetype();">
<?php
$lesOptions = Array( "bureau", "portable" );
for( $rangOption=0; $rangOption < sizeof( $lesOptins ) ; $rangOption++ )
{
echo '<option value="' . $lesOptions[ $rangOption ] . '"';
if( $lOption == $lesOptions[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lesOptions[ $rangOption ] . '</option>';
}
?>
</select>
Ceci suppose que la variable $lOption contient la valeur de l'option sélectionnée ($lOption = $_GET[ 'pc' ])
Je n'ai pas validé ceci à toi de le faire mais je suis certain que la logique nécessaire y est.
la valeur et le texte de chaque option sont identiques ; lorsque ça marchera, tu pourras t'essayer à imaginer ce qui est nécessaire pour avoir valeur et texte différents.
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
22 févr. 2008 à 14:03
22 févr. 2008 à 14:03
merci croy de te creuser la tête
je vais tester et je te tiens au courant.
avec tous vos conseils cela me permet d'avancer et d'explorer plusieurs pistes.
C'est ce que je trouve de passionnat dans la prog ,c'est que rien n'est identique et quand un truc je sais pas faire j'aime bien comprendre.
J(ai deja compris et assimilé que JS traite les infos coté client,contrairement a php.mais de la a mettre en pratique la théorie ...
merci encore,j'espere que dans la semaine ma page assistance sera opérationelle grace à vous.
@+
je vais tester et je te tiens au courant.
avec tous vos conseils cela me permet d'avancer et d'explorer plusieurs pistes.
C'est ce que je trouve de passionnat dans la prog ,c'est que rien n'est identique et quand un truc je sais pas faire j'aime bien comprendre.
J(ai deja compris et assimilé que JS traite les infos coté client,contrairement a php.mais de la a mettre en pratique la théorie ...
merci encore,j'espere que dans la semaine ma page assistance sera opérationelle grace à vous.
@+
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
23 févr. 2008 à 12:31
23 févr. 2008 à 12:31
voila avec ta methode croy ca commence à mieux fonctionner..
voici le script (c'est une page modele)
<!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-1" />
<title>Document sans titre</title>
<!--partie javascript-->
<script type="text/javascript">
function selectfabricant() //fonction qui affichera le texte
{
var choixfabricant;
choixfabricant = document.fabricant.fabr.options //on spécifie la liste a traiter
[document.fabricant.fabr.selectedIndex].text;//on récupere le texte de cette liste
document.fabricant.choixfabr.value = choixfabricant.valueOf();//on met ce texte dans un champ texte
div_test.innerHTML = choixfabricant.valueOf();//on modifie le texte dans le div nommé div_test
}
<!--fonction modele-->
function selectmodele() //fonction qui affichera le texte
{
var choixmodele;
choixmodele = document.modele.mod.options //on spécifie la liste a traiter
[document.modele.mod.selectedIndex].text;//on récupere le texte de cette liste
document.modele.choixmod.value = choixmodele.valueOf();//on met ce texte dans un champ texte
div_test_modele.innerHTML = choixmodele.valueOf();//on modifie le texte dans le div nommé div_test
}
</script>
</head>
<body>
<!-------****************************-------------->
<?
//avant d'ajouter le navigateur faut recupere l'os de la table
//connexion a la bd
$connexion=mysqli_connect('xxxx','xxx','clt07','xxxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
?>
<!--select du type d'ordi-->
<td>
<label>Type du pc</label>
<select name="pc" id="pc" >
<?php
$letype = Array("bureau", "portable","autres" );
for( $rangOption=0; $rangOption < sizeof( $letype ) ; $rangOption++ )
{
echo '<option value="' . $letype[ $rangOption ] . '"';
if( $lOption == $letype[ $rangOption ] )
echo ' selected="true"';
echo '>' . $letype[ $rangOption ] . '</option>';
}
?>
</select>
</td>
<p> </p>
<!--select du systeme d'exploitation-->
<td>
<label>Systeme d'exploitation</label>
<select name="syst" id="syst" >
<?php
//recuperations des systemes d'exploitation
//J'alimente les liste en partant des base de données
//requete pour les OS dans la table
$reqos="SELECT * FROM os ";
$resos = mysqli_query($connexion,$reqos);
while($valos=mysqli_fetch_array($resos))
{
$ref=$valos["Id"];
$os=$valos["Nom"];
//ca a l'air de marcher
$exploit = Array($os);
for( $rangOption=0; $rangOption < sizeof( $exploit) ; $rangOption++ )
{
echo '<option value="' . $exploit[$rangOption ] . '"';
if( $lOption == $exploit[ $rangOption ] )
echo ' selected="true"';
echo '>' . $exploit[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
</td>
<p> </p>
<!--select du navigateur-->
<td>
<label>Navigateur</label>
<select name="navi" id="navi">
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqnav="SELECT * FROM navigateur ";
$resnav = mysqli_query($connexion,$reqnav);
while($valnav=mysqli_fetch_array($resnav))
{
$refnav=$valnav["Id"];
$nav=$valnav["Navigateur"];
//ca a l'air de marcher
$lenav = Array($nav);
for( $rangOption=0; $rangOption < sizeof( $lenav ) ; $rangOption++ )
{
echo '<option value="' . $lenav[ $rangOption ] . '"';
if( $lOption == $lenav[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lenav[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
</td>
<p> </p>
<!--***************FABRICANT********************-->
<td>
<label>Fabricant</label>
<form name="fabricant" id="fabricant" method="post" >
<select name="fabr" id="fabr" onchange="selectfabricant()" >
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqfab="SELECT DISTINCT * FROM machine ";
$resfab = mysqli_query($connexion,$reqfab);
while($valfab=mysqli_fetch_array($resfab))
{
$fab=$valfab["Constructeur"];
//ca a l'air de marcher
$lefab = Array($fab);
for( $rangOption=0; $rangOption < sizeof( $lefab ) ; $rangOption++ )
{
echo '<option value="' . $lefab[ $rangOption ] . '"';
if( $lOption == $lefab[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lefab[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
<input type="text" name="choixfabr" value="" >
<div id="div_test"></div>
</form>
</td>
<td>
<label>variable $fabr qui dfoit etre reprise dans la requete pour chercher le modele</label></label><input type="text" value="<? echo $fabr ?>" /></td>
<p> </p>
<!--selection du modele en fonction de choixfabr-->
<!--***************MODELE********************-->
<td>
<label>Modele du pc (en fonction du fabricant selectionné)</label>
<form name="modele" id="modele" method="post" >
<select name="mod" id="mod" onchange="selectmodele()" >
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqmod="SELECT DISTINCT * FROM machine ";
$resmod = mysqli_query($connexion,$reqmod);
while($valmod=mysqli_fetch_array($resmod))
{
$mod=$valmod["Modele"];
//ca a l'air de marcher
$lemod = Array($mod);
for( $rangOption=0; $rangOption < sizeof( $lemod ) ; $rangOption++ )
{
echo '<option value="' . $lemod[ $rangOption ] . '"';
if( $lOption == $lemod[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lemod[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
<input type="text" name="choixmod" value="" >
<div id="div_test_modele"></div>
</form>
</td>
</body>
</html>
maintenant mon probleme c'est de transformer la variable JS choixfabricant en $fabr pour l'inclure dans ma requete
j'ai essayé ca
$fabr = "<script language='Javascript'> document.write(choixfabricant); </script>";
mais ca marche pas...
je tiens le bon bout
@+
voici le script (c'est une page modele)
<!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-1" />
<title>Document sans titre</title>
<!--partie javascript-->
<script type="text/javascript">
function selectfabricant() //fonction qui affichera le texte
{
var choixfabricant;
choixfabricant = document.fabricant.fabr.options //on spécifie la liste a traiter
[document.fabricant.fabr.selectedIndex].text;//on récupere le texte de cette liste
document.fabricant.choixfabr.value = choixfabricant.valueOf();//on met ce texte dans un champ texte
div_test.innerHTML = choixfabricant.valueOf();//on modifie le texte dans le div nommé div_test
}
<!--fonction modele-->
function selectmodele() //fonction qui affichera le texte
{
var choixmodele;
choixmodele = document.modele.mod.options //on spécifie la liste a traiter
[document.modele.mod.selectedIndex].text;//on récupere le texte de cette liste
document.modele.choixmod.value = choixmodele.valueOf();//on met ce texte dans un champ texte
div_test_modele.innerHTML = choixmodele.valueOf();//on modifie le texte dans le div nommé div_test
}
</script>
</head>
<body>
<!-------****************************-------------->
<?
//avant d'ajouter le navigateur faut recupere l'os de la table
//connexion a la bd
$connexion=mysqli_connect('xxxx','xxx','clt07','xxxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
?>
<!--select du type d'ordi-->
<td>
<label>Type du pc</label>
<select name="pc" id="pc" >
<?php
$letype = Array("bureau", "portable","autres" );
for( $rangOption=0; $rangOption < sizeof( $letype ) ; $rangOption++ )
{
echo '<option value="' . $letype[ $rangOption ] . '"';
if( $lOption == $letype[ $rangOption ] )
echo ' selected="true"';
echo '>' . $letype[ $rangOption ] . '</option>';
}
?>
</select>
</td>
<p> </p>
<!--select du systeme d'exploitation-->
<td>
<label>Systeme d'exploitation</label>
<select name="syst" id="syst" >
<?php
//recuperations des systemes d'exploitation
//J'alimente les liste en partant des base de données
//requete pour les OS dans la table
$reqos="SELECT * FROM os ";
$resos = mysqli_query($connexion,$reqos);
while($valos=mysqli_fetch_array($resos))
{
$ref=$valos["Id"];
$os=$valos["Nom"];
//ca a l'air de marcher
$exploit = Array($os);
for( $rangOption=0; $rangOption < sizeof( $exploit) ; $rangOption++ )
{
echo '<option value="' . $exploit[$rangOption ] . '"';
if( $lOption == $exploit[ $rangOption ] )
echo ' selected="true"';
echo '>' . $exploit[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
</td>
<p> </p>
<!--select du navigateur-->
<td>
<label>Navigateur</label>
<select name="navi" id="navi">
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqnav="SELECT * FROM navigateur ";
$resnav = mysqli_query($connexion,$reqnav);
while($valnav=mysqli_fetch_array($resnav))
{
$refnav=$valnav["Id"];
$nav=$valnav["Navigateur"];
//ca a l'air de marcher
$lenav = Array($nav);
for( $rangOption=0; $rangOption < sizeof( $lenav ) ; $rangOption++ )
{
echo '<option value="' . $lenav[ $rangOption ] . '"';
if( $lOption == $lenav[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lenav[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
</td>
<p> </p>
<!--***************FABRICANT********************-->
<td>
<label>Fabricant</label>
<form name="fabricant" id="fabricant" method="post" >
<select name="fabr" id="fabr" onchange="selectfabricant()" >
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqfab="SELECT DISTINCT * FROM machine ";
$resfab = mysqli_query($connexion,$reqfab);
while($valfab=mysqli_fetch_array($resfab))
{
$fab=$valfab["Constructeur"];
//ca a l'air de marcher
$lefab = Array($fab);
for( $rangOption=0; $rangOption < sizeof( $lefab ) ; $rangOption++ )
{
echo '<option value="' . $lefab[ $rangOption ] . '"';
if( $lOption == $lefab[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lefab[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
<input type="text" name="choixfabr" value="" >
<div id="div_test"></div>
</form>
</td>
<td>
<label>variable $fabr qui dfoit etre reprise dans la requete pour chercher le modele</label></label><input type="text" value="<? echo $fabr ?>" /></td>
<p> </p>
<!--selection du modele en fonction de choixfabr-->
<!--***************MODELE********************-->
<td>
<label>Modele du pc (en fonction du fabricant selectionné)</label>
<form name="modele" id="modele" method="post" >
<select name="mod" id="mod" onchange="selectmodele()" >
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqmod="SELECT DISTINCT * FROM machine ";
$resmod = mysqli_query($connexion,$reqmod);
while($valmod=mysqli_fetch_array($resmod))
{
$mod=$valmod["Modele"];
//ca a l'air de marcher
$lemod = Array($mod);
for( $rangOption=0; $rangOption < sizeof( $lemod ) ; $rangOption++ )
{
echo '<option value="' . $lemod[ $rangOption ] . '"';
if( $lOption == $lemod[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lemod[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
<input type="text" name="choixmod" value="" >
<div id="div_test_modele"></div>
</form>
</td>
</body>
</html>
maintenant mon probleme c'est de transformer la variable JS choixfabricant en $fabr pour l'inclure dans ma requete
j'ai essayé ca
$fabr = "<script language='Javascript'> document.write(choixfabricant); </script>";
mais ca marche pas...
je tiens le bon bout
@+
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
23 févr. 2008 à 13:26
23 févr. 2008 à 13:26
C'est impossible car le script PHP est exécuté d'abord sur le serveur avant d'envoyer le code HTML (et javascript) généré au poste client dont le browser reprend la main pour afficher la page et exécuter le javascript.
La solution consiste à ce que ton javascript rappelle le script de départ avec des paramètres adaptés.
Ci-dessous un script qui te permettra de comprendre le mévanisme correspondant puis de l'adapter à ton cas.
Pour l'adapter à ton cas, je te conseille de le faire d'abord pour un select.
Autre remarque à voir ensuite : ne faire qu'un seul script en passant en paramètre le select concerné.
<!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-1" />
<title>Document sans titre</title>
<!--partie javascript-->
<script type="text/javascript">
function selectfabricant() //fonction qui affichera le texte
{
var choixfabricant;
//choixfabricant = document.fabricant.fabr.options //on spécifie la liste a traiter
leParam = document.fabricant.fabr.selectedIndex].text;//on récupere le texte de cette liste
//document.fabricant.choixfabr.value = choixfabricant.valueOf();//on met ce texte dans un champ texte
//div_test.innerHTML = choixfabricant.valueOf();//on modifie le texte dans le div nommé div_test
window.location = "temp.php?pc=" + leParam;
}
</script>
</head>
<body>
<!-------****************************-------------->
<!--select du type d'ordi-->
<form name="fabricant" id="fabricant" method="post" action="temp.php" >
<label>Type du pc</label>
<select name="pc" id="pc" onchange="selectfabricant()">
<?php
$letype = Array("bureau", "portable","autres" );
$lOption = $_POST[ 'pc' ];
for( $rangOption=0; $rangOption < sizeof( $letype ) ; $rangOption++ )
{
echo '<option value="' . $letype[ $rangOption ] . '"';
if( $lOption == $letype[ $rangOption ] )
echo ' selected="true"';
echo '>' . $letype[ $rangOption ] . '</option>';
}
?>
</select>
</form>
</td>
</body>
</html>
La solution consiste à ce que ton javascript rappelle le script de départ avec des paramètres adaptés.
Ci-dessous un script qui te permettra de comprendre le mévanisme correspondant puis de l'adapter à ton cas.
Pour l'adapter à ton cas, je te conseille de le faire d'abord pour un select.
Autre remarque à voir ensuite : ne faire qu'un seul script en passant en paramètre le select concerné.
<!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-1" />
<title>Document sans titre</title>
<!--partie javascript-->
<script type="text/javascript">
function selectfabricant() //fonction qui affichera le texte
{
var choixfabricant;
//choixfabricant = document.fabricant.fabr.options //on spécifie la liste a traiter
leParam = document.fabricant.fabr.selectedIndex].text;//on récupere le texte de cette liste
//document.fabricant.choixfabr.value = choixfabricant.valueOf();//on met ce texte dans un champ texte
//div_test.innerHTML = choixfabricant.valueOf();//on modifie le texte dans le div nommé div_test
window.location = "temp.php?pc=" + leParam;
}
</script>
</head>
<body>
<!-------****************************-------------->
<!--select du type d'ordi-->
<form name="fabricant" id="fabricant" method="post" action="temp.php" >
<label>Type du pc</label>
<select name="pc" id="pc" onchange="selectfabricant()">
<?php
$letype = Array("bureau", "portable","autres" );
$lOption = $_POST[ 'pc' ];
for( $rangOption=0; $rangOption < sizeof( $letype ) ; $rangOption++ )
{
echo '<option value="' . $letype[ $rangOption ] . '"';
if( $lOption == $letype[ $rangOption ] )
echo ' selected="true"';
echo '>' . $letype[ $rangOption ] . '</option>';
}
?>
</select>
</form>
</td>
</body>
</html>
lewis34
Messages postés
2557
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
30 mai 2015
352
24 févr. 2008 à 12:01
24 févr. 2008 à 12:01
bonjour tous le monde
je crois que cette fois j'y suis arrivé..
au lieu de passer en JS,car honnetement je nage complet meme avec l'aide precieuse de croy et d'alain,j'ai contourné le probleme en ne faisant qu'en php,que je maitrise un peu mieux
ma 1ere page
<!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-1" />
<title>Mise à jour du profil-Etape 1 de 3</title>
<?php
//// On appelle la session
session_start();
//////je verifie que la ssession est remplie
if (empty($_SESSION['visiteur'] ))
{
header ("Location:/prive/login.php");
exit();
}
//connexion a la base de données
//recherche dans la table utilisateur
$connexion=mysqli_connect('xxxxx','xxx','xxxx,'xxxxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
$visiteur=$_SESSION['visiteur'] ;
//recup du mot de passe
$sql = "SELECT * FROM inscription WHERE Login= '$visiteur'";
$cherchepass = mysqli_query($connexion,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error());
$reqpass = mysqli_fetch_array($cherchepass);
////attribution des valeurs
//
$pass=$reqpass['Mot_passe'];
$client=$visiteur.$pass;
mysqli_free_result($reqpass);
mysqli_close();
// ca c'est pour avoir un client unique:le seudo et le mot de passe crypté bout à bout au cas ou il y en ai 2
//mais logiquement c'est impossible car à l'inscription je verifie si le pseudo est pris
//**************************************************************
?>
</head>
<body>
<!-------****************************-------------->
<?
//************Recup des valeurs presente dans la table profil
$connexion=mysqli_connect('xxxx','xxx','xxxx','xxxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
//verif que c'est bien le meme
//recup du mot de passe
$sqlmp = "SELECT * FROM profil WHERE Client='$client'";
$reqpass= mysqli_query($connexion,$sqlmp);
//si on trouve rien y'a un beug
if(!$reqpass)
{
echo 'Desolé vous ne pouves pas acceder à cette page';
echo'<br/>';
echo "<br />";
echo "<input type=\"button\" value=\"retour\" onClick=\"javascript:window.location.href='/prive/assistance/index.php';\" />";
echo "<br />";
exit();
}
//recup du mot de passe
$recupprofil = "SELECT * FROM profil WHERE Client= '$client'";
$chercheprofil = mysqli_query($connexion,$recupprofil) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error());
$profil = mysqli_fetch_array($chercheprofil);
////attribution des valeurs
$profos=$profil['Os'];
$profnav=$profil['Navigateur'];
$proftype=$profil['Type'];
$profconstructeur=$profil['Constructeur'];
$profmodele=$profil['Modele'];
//c'est OK
?>
<!--**************************************************************-->
<form name="profiltype" action="/prive/assistance/requete.php" method="post">
<!--champ caché qui reprend le nom du client-->
<td>
<!--affichage du nom du client avec lempaubout-->
<input type="hidden" name="client" value="<? echo $client ?>" />
</td>
<!--champs (caché) qui determine la requete a effectuer-->
<input type="hidden" name="Type" value="type" />
<!--select du type d'ordi-->
<!--type du pc-->
<td>
<label>Type du pc</label>
<select name="pc" id="pc" >
<?php
$letype = Array("bureau", "portable","autres" );
for( $rangOption=0; $rangOption < sizeof( $letype ) ; $rangOption++ )
{
echo '<option value="' . $letype[ $rangOption ] . '"';
if( $lOption == $letype[ $rangOption ] )
echo ' selected="true"';
echo '>' . $letype[ $rangOption ] . '</option>';
}
?>
</select>
</td>
<td align="right">
<p> </p>
<!--*************************************************************************-->
<!--select du systeme d'exploitation-->
<td>
<label>Systeme d'exploitation</label>
<select name="syst">
<?php
//recuperations des systemes d'exploitation
//J'alimente les liste en partant des base de données
//requete pour les OS dans la table
$reqos="SELECT * FROM os ";
$resos = mysqli_query($connexion,$reqos);
while($valos=mysqli_fetch_array($resos))
{
$ref=$valos["Id"];
$os=$valos["Nom"];
//ca a l'air de marcher
$exploit = Array($os);
for( $rangOption=0; $rangOption < sizeof( $exploit) ; $rangOption++ )
{
echo '<option value="' . $exploit[$rangOption ] . '"';
if( $lOption == $exploit[ $rangOption ] )
echo ' selected="true"';
echo '>' . $exploit[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
</td>
<p> </p>
<!--*************************************************************************-->
<!--select du navigateur-->
<td>
<label>Navigateur</label>
<select name="navi">
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqnav="SELECT * FROM navigateur ";
$resnav = mysqli_query($connexion,$reqnav);
while($valnav=mysqli_fetch_array($resnav))
{
$refnav=$valnav["Id"];
$nav=$valnav["Navigateur"];
//ca a l'air de marcher
$lenav = Array($nav);
for( $rangOption=0; $rangOption < sizeof( $lenav ) ; $rangOption++ )
{
echo '<option value="' . $lenav[ $rangOption ] . '"';
if( $lOption == $lenav[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lenav[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
</td>
<p> </p>
<!--*******************************************************************************-->
<!--***************FABRICANT********************-->
<td>
<label>Fabricant</label>
<select name="constructeur" >
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqfab="SELECT DISTINCT * FROM machine ";
$resfab = mysqli_query($connexion,$reqfab);
while($valfab=mysqli_fetch_array($resfab))
{
$fab=$valfab["Constructeur"];
//ca a l'air de marcher
$lefab = Array($fab);
for( $rangOption=0; $rangOption < sizeof( $lefab ) ; $rangOption++ )
{
echo '<option value="' . $lefab[ $rangOption ] . '"';
if( $lOption == $lefab[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lefab[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
<input type="submit" name="formtype" value="valider" />
</form>
<?
//je ferme la connexion
mysqli_close();
?>
</body>
</html>
***************************************************
ma seconde page ou je recupere le fabricant du pc pour l'inclure dans ma requete qui n'affichera que les modeles de ce fabricant
<!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-1" />
<title>Mise à jour du profil-Enregistrement 2</title>
</head>
<body>
<?
//page des requetes à effectuer
//attribution de a requette
$action=$_POST['Type'];
$type=$_POST['pc'];
$client=$_POST['client'];
$nav=$_POST['navi'];
$systeme=$_POST['syst'];
$fabricant=$_POST['constructeur'];
//execution de la requete
//verification que toutes les valeurs sont rentrées
if (empty($action) or empty($type) or empty($client) or empty($nav) or empty($systeme) or empty($fabricant))
{
//un ou plusieurs champs sont vide
echo "<br />";
echo 'Vous n\'avez pas correctement remplis le formulaire.Veuillez recommencer...!';
echo "<input type=\"button\" value=\"Retour\" onClick=\"javascript:window.location.href='/prive/assistance/profiltype.php';\" />";
exit ();
}
//c'est tout bon
//connexion a la base de données
//recherche dans la table utilisateur
$connexion=mysqli_connect('xxx','xxx','xxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
$ajout = mysqli_query($connexion ,"UPDATE profil SET Os='$systeme',Navigateur='$nav',Type='$type',Constructeur='$fabricant' WHERE Client='$client'");
$exec = mysqli_query($connexion,$ajout);
//modification impossible
if($exec)
{
echo '<p>Erreur SQL : '.mysqli_error().'</p>';
echo "<br />";
echo "<input type=\"button\" value=\"Retour\" onClick=\"javascript:window.location.href='/prive/petite_annonce/gestion_annonce.php';\" />";
exit ();
}
?>
<!--selection du modele en fonction de choixfabr-->
<!--***************MODELE********************-->
<p><center><h2>Veuillez selectionner le modèle de votre PC dans la liste ci-dessous</h2></center></p>
<center><label>Modele du pc </label></center>
<!--**************************************************************-->
<form name="profilmodele" action="/prive/assistance/requetemodele.php" method="post">
<select name="modele">
<?
//recuperations des modeles
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqmod="SELECT DISTINCT * FROM machine WHERE Constructeur='$fabricant' ";
$resmod = mysqli_query($connexion,$reqmod);
while($valmod=mysqli_fetch_array($resmod))
{
$mod=$valmod["Modele"];
//ca a l'air de marcher
$lemod = Array($mod);
for( $rangOption=0; $rangOption < sizeof( $lemod ) ; $rangOption++ )
{
echo '<option value="' . $lemod[ $rangOption ] . '"';
if( $lOption == $lemod[ $rangOption ] )
echo ' selected="true"';
//insere l'ajout à une base temporaire..?
echo '>' . $lemod[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
<!--************Affichage des données de l'utilisateur (à mettre en hidden)*********-->
<tr>
<td>
<input type="hidden" value="<? echo $client?>" name="client" />
<input type="hidden" value="<? echo $systeme ?>" name="systeme" />
<input type="hidden" value="<? echo $nav ?>" name="nav" />
<input type="hidden" value="<? echo $type ?>" name="type" />
<input type="hidden" name="choixfabr" value="<? echo $fabricant ?>" />
</td>
<!--**************************************************************-->
<p><center> <input type="submit" name="formtype" value="Continuer" /></center></p>
</tr></form>
</td>
</body>
</html>
et pour finir cette partie la page finale
<!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-1" />
<title>Mise à jour du profil-Enregistrement 2</title>
</head>
<body>
<?
//page des requetes à effectuer
//attribution de a requette
$choixfabr=$_POST['choixfabr'];
$client=$_POST['client'];
$nav=$_POST['navi'];
$systeme=$_POST['systeme'];
$modele=$_POST['modele'];
//execution de la requete
//verification que toutes les valeurs sont rentrées
if (empty($modele) or empty($client))
{
//un ou plusieurs champs sont vide
echo "<br />";
echo 'Vous n\'avez pas précisé le modèle du pc.Veuillez recommencer...!';
echo "<input type=\"button\" value=\"Retour\" onClick=\"javascript:window.location.href='/prive/assistance/requete.php';\" />";
exit ();
}
//c'est tout bon
//connexion a la base de données
//recherche dans la table utilisateur
$connexion=mysqli_connect('xxxx','xxxx','xxx','xxxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
//ajout du navigateur dans la table profil
$ajoutmod = mysqli_query($connexion ,"UPDATE profil SET Modele='$modele' WHERE Client='$client'");
$execmod = mysqli_query($connexion,$ajoutmod);
//modification impossible
if($execmod)
{
echo '<p>Erreur SQL : '.mysqli_error().'</p>';
echo "<br />";
echo "<input type=\"button\" value=\"Retour\" onClick=\"javascript:window.location.href='/prive/petite_annonce/gestion_annonce.php';\" />";
exit ();
}
?>
<!--************Affichage des données de l'utilisateur (à mettre en hidden)*********-->
<tr>
<td>
<p><center><h2>La mise à jour de votre profil matériel est terminée</h2></center></p>
<!--**************************************************************-->
<form name="profilmodele" action="/prive/assistance/requetemodele.php" method="post">
<!--***************prevoir pour continuer la suite**********************************-->
<input type="submit" name="formtype" value="Valider" />
</form>
</td></tr>
<?
//je ferme la connexion
mysqli_close();
?>
</body>
</html>
voila,c'est peut etre pas LA solution académique,il y a suremnt de l'optimisation à faire mais pour l'instant ca fonctionne.
Je precise que je fait des requetes update pour entrer le profil ,car à l'inscription sur mon site je cree l'enregistrement profil de la personne
je pense pouvoir marqué resolu ,jusqu'a la prochaine fois.
un grand merci à vous 2.Je continue à potasser le JS..
bonne journée
@+
je crois que cette fois j'y suis arrivé..
au lieu de passer en JS,car honnetement je nage complet meme avec l'aide precieuse de croy et d'alain,j'ai contourné le probleme en ne faisant qu'en php,que je maitrise un peu mieux
ma 1ere page
<!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-1" />
<title>Mise à jour du profil-Etape 1 de 3</title>
<?php
//// On appelle la session
session_start();
//////je verifie que la ssession est remplie
if (empty($_SESSION['visiteur'] ))
{
header ("Location:/prive/login.php");
exit();
}
//connexion a la base de données
//recherche dans la table utilisateur
$connexion=mysqli_connect('xxxxx','xxx','xxxx,'xxxxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
$visiteur=$_SESSION['visiteur'] ;
//recup du mot de passe
$sql = "SELECT * FROM inscription WHERE Login= '$visiteur'";
$cherchepass = mysqli_query($connexion,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error());
$reqpass = mysqli_fetch_array($cherchepass);
////attribution des valeurs
//
$pass=$reqpass['Mot_passe'];
$client=$visiteur.$pass;
mysqli_free_result($reqpass);
mysqli_close();
// ca c'est pour avoir un client unique:le seudo et le mot de passe crypté bout à bout au cas ou il y en ai 2
//mais logiquement c'est impossible car à l'inscription je verifie si le pseudo est pris
//**************************************************************
?>
</head>
<body>
<!-------****************************-------------->
<?
//************Recup des valeurs presente dans la table profil
$connexion=mysqli_connect('xxxx','xxx','xxxx','xxxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
//verif que c'est bien le meme
//recup du mot de passe
$sqlmp = "SELECT * FROM profil WHERE Client='$client'";
$reqpass= mysqli_query($connexion,$sqlmp);
//si on trouve rien y'a un beug
if(!$reqpass)
{
echo 'Desolé vous ne pouves pas acceder à cette page';
echo'<br/>';
echo "<br />";
echo "<input type=\"button\" value=\"retour\" onClick=\"javascript:window.location.href='/prive/assistance/index.php';\" />";
echo "<br />";
exit();
}
//recup du mot de passe
$recupprofil = "SELECT * FROM profil WHERE Client= '$client'";
$chercheprofil = mysqli_query($connexion,$recupprofil) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error());
$profil = mysqli_fetch_array($chercheprofil);
////attribution des valeurs
$profos=$profil['Os'];
$profnav=$profil['Navigateur'];
$proftype=$profil['Type'];
$profconstructeur=$profil['Constructeur'];
$profmodele=$profil['Modele'];
//c'est OK
?>
<!--**************************************************************-->
<form name="profiltype" action="/prive/assistance/requete.php" method="post">
<!--champ caché qui reprend le nom du client-->
<td>
<!--affichage du nom du client avec lempaubout-->
<input type="hidden" name="client" value="<? echo $client ?>" />
</td>
<!--champs (caché) qui determine la requete a effectuer-->
<input type="hidden" name="Type" value="type" />
<!--select du type d'ordi-->
<!--type du pc-->
<td>
<label>Type du pc</label>
<select name="pc" id="pc" >
<?php
$letype = Array("bureau", "portable","autres" );
for( $rangOption=0; $rangOption < sizeof( $letype ) ; $rangOption++ )
{
echo '<option value="' . $letype[ $rangOption ] . '"';
if( $lOption == $letype[ $rangOption ] )
echo ' selected="true"';
echo '>' . $letype[ $rangOption ] . '</option>';
}
?>
</select>
</td>
<td align="right">
<p> </p>
<!--*************************************************************************-->
<!--select du systeme d'exploitation-->
<td>
<label>Systeme d'exploitation</label>
<select name="syst">
<?php
//recuperations des systemes d'exploitation
//J'alimente les liste en partant des base de données
//requete pour les OS dans la table
$reqos="SELECT * FROM os ";
$resos = mysqli_query($connexion,$reqos);
while($valos=mysqli_fetch_array($resos))
{
$ref=$valos["Id"];
$os=$valos["Nom"];
//ca a l'air de marcher
$exploit = Array($os);
for( $rangOption=0; $rangOption < sizeof( $exploit) ; $rangOption++ )
{
echo '<option value="' . $exploit[$rangOption ] . '"';
if( $lOption == $exploit[ $rangOption ] )
echo ' selected="true"';
echo '>' . $exploit[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
</td>
<p> </p>
<!--*************************************************************************-->
<!--select du navigateur-->
<td>
<label>Navigateur</label>
<select name="navi">
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqnav="SELECT * FROM navigateur ";
$resnav = mysqli_query($connexion,$reqnav);
while($valnav=mysqli_fetch_array($resnav))
{
$refnav=$valnav["Id"];
$nav=$valnav["Navigateur"];
//ca a l'air de marcher
$lenav = Array($nav);
for( $rangOption=0; $rangOption < sizeof( $lenav ) ; $rangOption++ )
{
echo '<option value="' . $lenav[ $rangOption ] . '"';
if( $lOption == $lenav[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lenav[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
</td>
<p> </p>
<!--*******************************************************************************-->
<!--***************FABRICANT********************-->
<td>
<label>Fabricant</label>
<select name="constructeur" >
<?php
//recuperations des navigateurs
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqfab="SELECT DISTINCT * FROM machine ";
$resfab = mysqli_query($connexion,$reqfab);
while($valfab=mysqli_fetch_array($resfab))
{
$fab=$valfab["Constructeur"];
//ca a l'air de marcher
$lefab = Array($fab);
for( $rangOption=0; $rangOption < sizeof( $lefab ) ; $rangOption++ )
{
echo '<option value="' . $lefab[ $rangOption ] . '"';
if( $lOption == $lefab[ $rangOption ] )
echo ' selected="true"';
echo '>' . $lefab[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
<input type="submit" name="formtype" value="valider" />
</form>
<?
//je ferme la connexion
mysqli_close();
?>
</body>
</html>
***************************************************
ma seconde page ou je recupere le fabricant du pc pour l'inclure dans ma requete qui n'affichera que les modeles de ce fabricant
<!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-1" />
<title>Mise à jour du profil-Enregistrement 2</title>
</head>
<body>
<?
//page des requetes à effectuer
//attribution de a requette
$action=$_POST['Type'];
$type=$_POST['pc'];
$client=$_POST['client'];
$nav=$_POST['navi'];
$systeme=$_POST['syst'];
$fabricant=$_POST['constructeur'];
//execution de la requete
//verification que toutes les valeurs sont rentrées
if (empty($action) or empty($type) or empty($client) or empty($nav) or empty($systeme) or empty($fabricant))
{
//un ou plusieurs champs sont vide
echo "<br />";
echo 'Vous n\'avez pas correctement remplis le formulaire.Veuillez recommencer...!';
echo "<input type=\"button\" value=\"Retour\" onClick=\"javascript:window.location.href='/prive/assistance/profiltype.php';\" />";
exit ();
}
//c'est tout bon
//connexion a la base de données
//recherche dans la table utilisateur
$connexion=mysqli_connect('xxx','xxx','xxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
$ajout = mysqli_query($connexion ,"UPDATE profil SET Os='$systeme',Navigateur='$nav',Type='$type',Constructeur='$fabricant' WHERE Client='$client'");
$exec = mysqli_query($connexion,$ajout);
//modification impossible
if($exec)
{
echo '<p>Erreur SQL : '.mysqli_error().'</p>';
echo "<br />";
echo "<input type=\"button\" value=\"Retour\" onClick=\"javascript:window.location.href='/prive/petite_annonce/gestion_annonce.php';\" />";
exit ();
}
?>
<!--selection du modele en fonction de choixfabr-->
<!--***************MODELE********************-->
<p><center><h2>Veuillez selectionner le modèle de votre PC dans la liste ci-dessous</h2></center></p>
<center><label>Modele du pc </label></center>
<!--**************************************************************-->
<form name="profilmodele" action="/prive/assistance/requetemodele.php" method="post">
<select name="modele">
<?
//recuperations des modeles
//J'alimente les liste en partant des base de données
//requete pour les navigateurs
$reqmod="SELECT DISTINCT * FROM machine WHERE Constructeur='$fabricant' ";
$resmod = mysqli_query($connexion,$reqmod);
while($valmod=mysqli_fetch_array($resmod))
{
$mod=$valmod["Modele"];
//ca a l'air de marcher
$lemod = Array($mod);
for( $rangOption=0; $rangOption < sizeof( $lemod ) ; $rangOption++ )
{
echo '<option value="' . $lemod[ $rangOption ] . '"';
if( $lOption == $lemod[ $rangOption ] )
echo ' selected="true"';
//insere l'ajout à une base temporaire..?
echo '>' . $lemod[ $rangOption ] . '</option>';
}
//fin de la boucle
}
?>
</select>
<!--************Affichage des données de l'utilisateur (à mettre en hidden)*********-->
<tr>
<td>
<input type="hidden" value="<? echo $client?>" name="client" />
<input type="hidden" value="<? echo $systeme ?>" name="systeme" />
<input type="hidden" value="<? echo $nav ?>" name="nav" />
<input type="hidden" value="<? echo $type ?>" name="type" />
<input type="hidden" name="choixfabr" value="<? echo $fabricant ?>" />
</td>
<!--**************************************************************-->
<p><center> <input type="submit" name="formtype" value="Continuer" /></center></p>
</tr></form>
</td>
</body>
</html>
et pour finir cette partie la page finale
<!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-1" />
<title>Mise à jour du profil-Enregistrement 2</title>
</head>
<body>
<?
//page des requetes à effectuer
//attribution de a requette
$choixfabr=$_POST['choixfabr'];
$client=$_POST['client'];
$nav=$_POST['navi'];
$systeme=$_POST['systeme'];
$modele=$_POST['modele'];
//execution de la requete
//verification que toutes les valeurs sont rentrées
if (empty($modele) or empty($client))
{
//un ou plusieurs champs sont vide
echo "<br />";
echo 'Vous n\'avez pas précisé le modèle du pc.Veuillez recommencer...!';
echo "<input type=\"button\" value=\"Retour\" onClick=\"javascript:window.location.href='/prive/assistance/requete.php';\" />";
exit ();
}
//c'est tout bon
//connexion a la base de données
//recherche dans la table utilisateur
$connexion=mysqli_connect('xxxx','xxxx','xxx','xxxx');
if (!$connexion) {
die('connexion impossible au serveur' .mysqli_error());
exit();
}
//ajout du navigateur dans la table profil
$ajoutmod = mysqli_query($connexion ,"UPDATE profil SET Modele='$modele' WHERE Client='$client'");
$execmod = mysqli_query($connexion,$ajoutmod);
//modification impossible
if($execmod)
{
echo '<p>Erreur SQL : '.mysqli_error().'</p>';
echo "<br />";
echo "<input type=\"button\" value=\"Retour\" onClick=\"javascript:window.location.href='/prive/petite_annonce/gestion_annonce.php';\" />";
exit ();
}
?>
<!--************Affichage des données de l'utilisateur (à mettre en hidden)*********-->
<tr>
<td>
<p><center><h2>La mise à jour de votre profil matériel est terminée</h2></center></p>
<!--**************************************************************-->
<form name="profilmodele" action="/prive/assistance/requetemodele.php" method="post">
<!--***************prevoir pour continuer la suite**********************************-->
<input type="submit" name="formtype" value="Valider" />
</form>
</td></tr>
<?
//je ferme la connexion
mysqli_close();
?>
</body>
</html>
voila,c'est peut etre pas LA solution académique,il y a suremnt de l'optimisation à faire mais pour l'instant ca fonctionne.
Je precise que je fait des requetes update pour entrer le profil ,car à l'inscription sur mon site je cree l'enregistrement profil de la personne
je pense pouvoir marqué resolu ,jusqu'a la prochaine fois.
un grand merci à vous 2.Je continue à potasser le JS..
bonne journée
@+