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
bonsoir à tous,me revoila avec mes soucis..
voila mon probleme je veut mettre sur mon site une page d'entraide ou les gens vont indiquer leur profil materiel.
pour cela j'utilise des liste deroulante
1 pour le fabricant du pc 1 pour le modele etc..

j'alimente mes listes depuis ma base de donnée
exemple:
<!--marque du pc-->

<label><h4>Marque de votre pc :</h4></label>
<select name="fabricant" >

<?
//requete pour le fabricant du pc
$reqfab="SELECT Constructeur FROM machine";
$resfab = mysqli_query($connexion,$reqfab);
while($valfab=mysqli_fetch_array($resfab))
{
$reffab=$valfab["Id"];
$fab=$valfab["Constructeur"];
?>

<label><h4>Fabricant :</h4></label>

<option value="<? echo $reffab ?>"><? echo $fab ?></option>
<?
//fin de la boucle
}

?>
</select>

<input type="text" value="<? echo $fab ?>" />


<!--modele du pc-->

<label><h4>Modele de votre pc :</h4></label>
<select name="modele">

<?
//requete pour les modeles
$reqmod="SELECT Modele FROM machine ";
$resmod = mysqli_query($connexion,$reqmod);
while($valmod=mysqli_fetch_array($resmod))
{
$refmod=$valmod["Id"];
$mod=$valmod["Modele"];
?>

<label><h4>Modèle : </h4>

<option value="<? echo $refmod ?>"><? echo $mod ?></option>
<?
//fin de la boucle
}

?>
</select>

jusque la ca marche mon probleme c'est que je voudrais qu'une fois selectionné le fabricant dans la liste modele cela m'affiche que les modele du fabricant selectionné (pour eviter d'avoir un HP inspiron par exemple..)
j'ai essaye avec
$reqmod="SELECT Modele FROM machine WHERE Modele='$fab'";
mais c'est pas concluant..

aussi ma question comment fait t'on pour recuperer la valeur selectionnée dans la liste precedente.
Je suis sur que c'est tout bête mais j'avoue je sèche...lamentablement
merci par avance

@+

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
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
@+
0
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
Bonsoir,

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.
0
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
waouhhhh
merci alain
j'adapte mes données (connexion etc et je teste)

MERCI!!!!
0
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
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
0

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
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'
0
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
faut que je mette ca dans la declaration de la fonction?
0
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
Alors tu as abandonné la solution que je te proposait ?
0
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
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

@+
0
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
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.
0
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
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

@+
0
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
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.
0
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
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.
@+
0
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
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
@+
0
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
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>
0
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
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
@+
0