PHP - formulaire - recup valeur champ
Résolu/Fermé
jeremie64
Messages postés
3
Date d'inscription
mardi 17 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
-
17 juil. 2007 à 10:11
bodry24 Messages postés 86 Date d'inscription vendredi 21 août 2009 Statut Membre Dernière intervention 18 août 2014 - 13 sept. 2011 à 10:52
bodry24 Messages postés 86 Date d'inscription vendredi 21 août 2009 Statut Membre Dernière intervention 18 août 2014 - 13 sept. 2011 à 10:52
A voir également:
- PHP - formulaire - recup valeur champ
- Formulaire de réclamation facebook - Guide
- Easy php - Télécharger - Divers Web & Internet
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Formulaire instagram compte suspendu - Guide
- Valeur ascii - Guide
9 réponses
bbar
Messages postés
436
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
31 octobre 2008
140
17 juil. 2007 à 11:10
17 juil. 2007 à 11:10
salut, il faut que tu utilises le javascript, avec la directive onChange="..." dans la balise du premier champ. Tu peux faire appel à une fonction javascript qui va choisir le contenu de ton deuxième champ en fonction du premier
Dans un moment de bonté je te mets le code de la solution 2(trois fichiers):
config.php
listes_liees.php
RepPhpAjax.php
config.php
<?php $host="localhost"; $Login="xxxxxx"; $Pass="xxxxxxx"; $DB="test"; $Table="etudiants"; $champ_niv="niveau"; $champ_etud="etudiants"; ?>
listes_liees.php
<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>
RepPhpAjax.php
<?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; ?>
jeremie64
Messages postés
3
Date d'inscription
mardi 17 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
18 juil. 2007 à 10:08
18 juil. 2007 à 10:08
merci c'est OK je vais tenter avec Ajax
Tout dabord merci pour le code !
j'ai juste un problème c'est que je me prend le popup "Un problème est survenu avec la requête."
j'ai pourtant recréer la base et copier le code tel quel
peut être que cela vient de ma base :
pouriez vous m'aider
par avance merci !!
CREATE TABLE `etudiants` (
`niveau` varchar(30) NOT NULL default '',
`etudiants` varchar(30) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `etudiants`
--
INSERT INTO `etudiants` VALUES ('20', 'Droit international public app');
INSERT INTO `etudiants` VALUES ('19', 'Droit international public app');
INSERT INTO `etudiants` VALUES ('18', 'UNITE 4 - ENSEIGNEMENT DE DECO');
INSERT INTO `etudiants` VALUES ('17', 'UNITE 3 - ENSEIGNEMENT DE METH');
INSERT INTO `etudiants` VALUES ('16', 'UNITE 2 - LANGAGE ET SOCIETE 2');
INSERT INTO `etudiants` VALUES ('15', 'UNITE 1 - ETUDE THEORIQUE DU L');
INSERT INTO `etudiants` VALUES ('14', '6eme SEMESTRE');
INSERT INTO `etudiants` VALUES ('13', 'L''anglais pour la linguistique');
INSERT INTO `etudiants` VALUES ('12', 'Acquisition des langues en con');
INSERT INTO `etudiants` VALUES ('11', 'UNITE 4 - ENSEIGNEMENT DE DECO');
INSERT INTO `etudiants` VALUES ('8', 'UNITE 3 - ENSEIGNEMENT DE METH');
INSERT INTO `etudiants` VALUES ('9', 'UNITE 2 - LANGAGE & SOCIETE 1');
INSERT INTO `etudiants` VALUES ('4', 'Pratique de l''ecriture');
INSERT INTO `etudiants` VALUES ('2', 'Syntaxe');
INSERT INTO `etudiants` VALUES ('3', 'Informatique pour la linguisti');
INSERT INTO `etudiants` VALUES ('1', 'Phonetique / phonologie');
INSERT INTO `etudiants` VALUES ('5', 'Droit international public app');
INSERT INTO `etudiants` VALUES ('8', 'UNITE 1-ETUDE THEORIQUE DU LAN');
INSERT INTO `etudiants` VALUES ('7', '5eme SEMESTRE');
INSERT INTO `etudiants` VALUES ('6', 'Questions de bilinguisme');
INSERT INTO `etudiants` VALUES ('5', 'Litteratures & francophonie');
INSERT INTO `etudiants` VALUES ('21', 'Droit international public app');
INSERT INTO `etudiants` VALUES ('22', 'Droit de l''urbanisme');
INSERT INTO `etudiants` VALUES ('23', 'CHOIX COURS SANS TD');
INSERT INTO `etudiants` VALUES ('24', 'SEMESTRE 1');
INSERT INTO `etudiants` VALUES ('25', 'COURS AVEC TD');
INSERT INTO `etudiants` VALUES ('26', 'UNITE 1 Enseignements Fondame');
j'ai juste un problème c'est que je me prend le popup "Un problème est survenu avec la requête."
j'ai pourtant recréer la base et copier le code tel quel
peut être que cela vient de ma base :
pouriez vous m'aider
par avance merci !!
CREATE TABLE `etudiants` (
`niveau` varchar(30) NOT NULL default '',
`etudiants` varchar(30) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `etudiants`
--
INSERT INTO `etudiants` VALUES ('20', 'Droit international public app');
INSERT INTO `etudiants` VALUES ('19', 'Droit international public app');
INSERT INTO `etudiants` VALUES ('18', 'UNITE 4 - ENSEIGNEMENT DE DECO');
INSERT INTO `etudiants` VALUES ('17', 'UNITE 3 - ENSEIGNEMENT DE METH');
INSERT INTO `etudiants` VALUES ('16', 'UNITE 2 - LANGAGE ET SOCIETE 2');
INSERT INTO `etudiants` VALUES ('15', 'UNITE 1 - ETUDE THEORIQUE DU L');
INSERT INTO `etudiants` VALUES ('14', '6eme SEMESTRE');
INSERT INTO `etudiants` VALUES ('13', 'L''anglais pour la linguistique');
INSERT INTO `etudiants` VALUES ('12', 'Acquisition des langues en con');
INSERT INTO `etudiants` VALUES ('11', 'UNITE 4 - ENSEIGNEMENT DE DECO');
INSERT INTO `etudiants` VALUES ('8', 'UNITE 3 - ENSEIGNEMENT DE METH');
INSERT INTO `etudiants` VALUES ('9', 'UNITE 2 - LANGAGE & SOCIETE 1');
INSERT INTO `etudiants` VALUES ('4', 'Pratique de l''ecriture');
INSERT INTO `etudiants` VALUES ('2', 'Syntaxe');
INSERT INTO `etudiants` VALUES ('3', 'Informatique pour la linguisti');
INSERT INTO `etudiants` VALUES ('1', 'Phonetique / phonologie');
INSERT INTO `etudiants` VALUES ('5', 'Droit international public app');
INSERT INTO `etudiants` VALUES ('8', 'UNITE 1-ETUDE THEORIQUE DU LAN');
INSERT INTO `etudiants` VALUES ('7', '5eme SEMESTRE');
INSERT INTO `etudiants` VALUES ('6', 'Questions de bilinguisme');
INSERT INTO `etudiants` VALUES ('5', 'Litteratures & francophonie');
INSERT INTO `etudiants` VALUES ('21', 'Droit international public app');
INSERT INTO `etudiants` VALUES ('22', 'Droit de l''urbanisme');
INSERT INTO `etudiants` VALUES ('23', 'CHOIX COURS SANS TD');
INSERT INTO `etudiants` VALUES ('24', 'SEMESTRE 1');
INSERT INTO `etudiants` VALUES ('25', 'COURS AVEC TD');
INSERT INTO `etudiants` VALUES ('26', 'UNITE 1 Enseignements Fondame');
bonjour a tous
dans le cadre de mon projet j'ai un formulaire, le probleme est simple
heuu enfin il n'est pas simple étant donner ke je n'arrive pas...:-)
moi le seul souci c ke j'ai créee une table dans ma BBD(Mysql) et je rajoute des champs dynamique du coup pour récuperer la valeur de mes champs et les inserer j'ai pas de nom préci a donner pour la requette $requete = "INSERT INTO `etudiant` (uid, nom, le les champs dy namique)VALUES ('$uid','$nom', 'les champs dynamique')"; étant donner k'il est variable
PS: mes champs sont inserer des checkbox dynamique
franchement si vous arrivé a me dépanner , alors la respect . paske la je ne sai plus koi faire je suis coincé et tous les garçon de la classe ont éssayé rien a faire....bref
merci bcp d'avance
dans le cadre de mon projet j'ai un formulaire, le probleme est simple
heuu enfin il n'est pas simple étant donner ke je n'arrive pas...:-)
moi le seul souci c ke j'ai créee une table dans ma BBD(Mysql) et je rajoute des champs dynamique du coup pour récuperer la valeur de mes champs et les inserer j'ai pas de nom préci a donner pour la requette $requete = "INSERT INTO `etudiant` (uid, nom, le les champs dy namique)VALUES ('$uid','$nom', 'les champs dynamique')"; étant donner k'il est variable
PS: mes champs sont inserer des checkbox dynamique
franchement si vous arrivé a me dépanner , alors la respect . paske la je ne sai plus koi faire je suis coincé et tous les garçon de la classe ont éssayé rien a faire....bref
merci bcp d'avance
j'ai revu et corrigé le code de la solution 2(trois fichiers):
voici le bon code sur trois fichiers avec la table inchangée:
config.php
<?php
$host="localhost";
$Login="xxxxxx";
$Pass="xxxxxxx";
$DB="test";
$Table="etudiants";
$champ_niv="niveau";
$champ_etud="etudiants";
?>
listes_liees.php
<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('RepPhpAjax.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>
//RepPhpAjax.php
<?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;
?>
voici le bon code sur trois fichiers avec la table inchangée:
config.php
<?php
$host="localhost";
$Login="xxxxxx";
$Pass="xxxxxxx";
$DB="test";
$Table="etudiants";
$champ_niv="niveau";
$champ_etud="etudiants";
?>
listes_liees.php
<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('RepPhpAjax.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>
//RepPhpAjax.php
<?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;
?>
athome
Messages postés
54
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
27 septembre 2010
4
15 sept. 2010 à 15:15
15 sept. 2010 à 15:15
je tente de me servir de ton script
mais je n'arrive pas à insérer la valeur de la 2eme liste déroulante !
alors que la première s'enregistre bien dans ma base
j'ai l'impression qu'elle se perd dans la fonction java???
si tu peux donner un coup de main ;)
merci
mais je n'arrive pas à insérer la valeur de la 2eme liste déroulante !
alors que la première s'enregistre bien dans ma base
j'ai l'impression qu'elle se perd dans la fonction java???
si tu peux donner un coup de main ;)
merci
Salut
Je cherchais ce code et quand je l'ai trouvé je n'ai pas hésiter a le saisir dans une et page pour le tester.cependant lors de la saisie il y a un truc que je ne comprend pas dans repPhpAjax.php la requete suivante
$QuestionBase = "SELECT * FROM $Table WHERE ".$champ_niv."='".$_POST[val_sel]."' ORDER BY ".$champ_etud." ASC " ;
je voudrais savoir l'index "val_sel" signifie quoi ? je ne l'ai vu nul part dans le code apart ce endroit.
Merci
Je cherchais ce code et quand je l'ai trouvé je n'ai pas hésiter a le saisir dans une et page pour le tester.cependant lors de la saisie il y a un truc que je ne comprend pas dans repPhpAjax.php la requete suivante
$QuestionBase = "SELECT * FROM $Table WHERE ".$champ_niv."='".$_POST[val_sel]."' ORDER BY ".$champ_etud." ASC " ;
je voudrais savoir l'index "val_sel" signifie quoi ? je ne l'ai vu nul part dans le code apart ce endroit.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut
EXCUSEZ moi je l'ai trouver je n'avais pas bien lu auparavant mais a force de chercher je l'ai trouver je vous prie de m'excusez.
Merci
EXCUSEZ moi je l'ai trouver je n'avais pas bien lu auparavant mais a force de chercher je l'ai trouver je vous prie de m'excusez.
Merci
Salut
Je suis très heureux de trouver cet forum. J'ai le même probleme que bodry24 sauf que moi j'ai encore trouvé "val_sel" dans le js de liste_liees.php .Je veux modifier le code pour qu'il fasse ce que je veux mais je ne sais pas ce qu'est cet val_sel alors expliquer le moi svp.Merci
john
Je suis très heureux de trouver cet forum. J'ai le même probleme que bodry24 sauf que moi j'ai encore trouvé "val_sel" dans le js de liste_liees.php .Je veux modifier le code pour qu'il fasse ce que je veux mais je ne sais pas ce qu'est cet val_sel alors expliquer le moi svp.Merci
john
Bonjour a tous,
J'ai récupérer ce petit script sur ce même forum hier, je l'ai un peu modifie mais j'ai toujours le même message d'erreur.
"Erreur de syntaxe prés de 'test' a la ligne 1"
Jusqu'a la ligne 67 du fichier liste_liees.php tout va bien il me semble
Je vous met les fichiers:
config.php
liste_liees.php
repPhpAjax.php
Si qqun voit la boulette je suis preneur :D
Merci d'avance
J'ai récupérer ce petit script sur ce même forum hier, je l'ai un peu modifie mais j'ai toujours le même message d'erreur.
"Erreur de syntaxe prés de 'test' a la ligne 1"
Jusqu'a la ligne 67 du fichier liste_liees.php tout va bien il me semble
Je vous met les fichiers:
config.php
<?php $host="localhost"; $Login="root"; $Pass=""; $DB="test"; $Table="etudiants"; $champ_niv="niveau"; $champ_etud="etudiants"; ?>
liste_liees.php
<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.'); alert('There was a problem with the request.(Code: ' + http_request.status + ')'); } } } </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_query($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('repPhpAjax.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>
repPhpAjax.php
<?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_query($DB) 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; ?>
Si qqun voit la boulette je suis preneur :D
Merci d'avance
bodry24
Messages postés
86
Date d'inscription
vendredi 21 août 2009
Statut
Membre
Dernière intervention
18 août 2014
7
13 sept. 2011 à 10:52
13 sept. 2011 à 10:52
Bonjour,
Si je comprend bien tu ne veux pas charger la page ni soumettre le formulaire. Si c'est bien ça je te conseille de passer par Ajax. Tu utilise js c-a-d tu ajout l'événement onchange() a la première liste et cet événement appel une fonction qui réalise ajax pour charger ta deuxième liste.
Bonne journée
La réussite est au bout de l'effort.
Si je comprend bien tu ne veux pas charger la page ni soumettre le formulaire. Si c'est bien ça je te conseille de passer par Ajax. Tu utilise js c-a-d tu ajout l'événement onchange() a la première liste et cet événement appel une fonction qui réalise ajax pour charger ta deuxième liste.
Bonne journée
La réussite est au bout de l'effort.
bonjour j'ai testé le code de serigne wil , ça fonctionne sauf que il met cette erreur php
" Deprecated: mysql_db_query() [function.mysql-db-query]: This function is deprecated; use mysql_query() instead in RepPhpAjax.php on line 16 "
quant je remplace par mysql_query() ça ne fonctionne plus du tout avec cette erreur
"Warning: mysql_query() expects parameter 2 to be resource, string given in RepPhpAjax.php on line 16"
si vous avez une solution pour que ça marche sans message d'erreur ça serait cool
" Deprecated: mysql_db_query() [function.mysql-db-query]: This function is deprecated; use mysql_query() instead in RepPhpAjax.php on line 16 "
quant je remplace par mysql_query() ça ne fonctionne plus du tout avec cette erreur
"Warning: mysql_query() expects parameter 2 to be resource, string given in RepPhpAjax.php on line 16"
si vous avez une solution pour que ça marche sans message d'erreur ça serait cool
17 juil. 2007 à 11:29
je vois comment acceder au champ avec Javascript par contre j'utilise une requete SQL pour faire la 2eme liste comment y integrer la valeur que le recupere avec le javascript. Il faudrait que je stocke la valeur récupérée avec le Javascript dans une variable qui pourrait etre utilisée dans mon code PHP mais je ne sais pas comment???
merci
17 juil. 2007 à 14:49
1- tu acceptes que ta page se recharge, alors tu n'utilises pas javascript, mais dans la liste 1 tu mets onChange=Submit(). Dans <form tu mets action="ta_page_php.php"
Dans ta_page_php tu vérifie que $_POST['nom_liste1']!="" et tu réintéroges ta BD et charges alors ta deuxième liste.
Pour que la valeur sélectionnée de ta première liste subsistes, tu dois mettre dans tous les
<option value="valeur1" <?php if ($_POST['nom_liste1']=="valeur1"){echo "selected";}?> >Valeur1</option>
2- si tu ne veux pas que ta page se recharge, alors tu utilises Javascript et AJAX qui va appeler un autre script PHP qui lira la bd et chargera la liste 2 en fct du choix liste 1
Fais une recherche sur Google "Listes liées Ajax" ou si besoin j'ai un bout de code
Modifié par nounou85 le 11/06/2011 à 13:42
il m'affiche le message suivant:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/vhosts/monsite.fr/httpdocs/espace_franchise/admin/articleajout.php on line 195
sachant que à la ligne 195 j'ai l code suivant:
<option value= "<?php echo $row_Liste1['type_article'];?>" <?php if ($_POST['type_article']==" $row_Liste1['type_article']"){echo "selected";}?> ><?php echo $row_Liste1['type_article'];?> </option>
stp dis moi c'est koi la source exacte de ce prob!!! merci