Rechercher : dans
Par :

PHP - formulaire - recup valeur champ

Dernière réponse le 8 avr 2009 à 05:29:09 jeremie64, le 17 jui 2007 à 10:11:01 
 Signaler ce message aux modérateurs

Bonjour,
j'ai un pb avec PHP.
Dans une formulaire j'ai un champ liste déroulante résultat d'une requete . J'ai un deuxieme champ liste déroulante dont le contenu va dépendre du choix effectué dans le premier champ.
Comme nt récupérer la valeur du premier champ (sans envoyer le formulaire au serveur par submit)
merci bien

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « PHP formulaire recup valeur champ » dans :
Javascript - Effacer un champ de formulaire lors du clic (focus) VoirIl vous est sûrement arrivé de tomber sur un formulaire HTML avec des valeurs pré-remplies décrivant par exemple le type de valeur attendue. L'intention est louable mais il est désagréable de devoir sélectionner ce texte et le supprimer avant de...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...

1

bbar, le 17 jui 2007 à 11:10:36
  • +1

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

Répondre à bbar

2

jeremie64, le 17 jui 2007 à 11:29:26

Merci pour ta réponse mais :
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

Répondre à jeremie64

3

Alain42, le 17 jui 2007 à 14:49:12

Deux solutions:

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

Répondre à Alain42

4

Alain42, le 17 jui 2007 à 14:55:12
  • +1

Dans un moment de bonté je te mets le code de la solution 2(trois fichiers):

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;
?>

Répondre à Alain42

5

jeremie64, le 18 jui 2007 à 10:08:54

Merci c'est OK je vais tenter avec Ajax

Répondre à jeremie64

6

2mop, le 27 aoû 2008 à 11:27:40

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');

Répondre à 2mop

8

saar_pape, le 25 fév 2009 à 11:45:45

J'ai le meme probleme que 2mop; j'ai essayé d'adapter le code à mon probleme mais j'y arrive pas; j'ai donc pris l'exemple tel qu'il est mais je me trouve avec alert('Un probleme est survenu avec la requete'). Merci; de bien vouloir m'aider

Répondre à saar_pape

9

kahina2104, le 6 avr 2009 à 11:53:30

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

Répondre à kahina2104

10

 2mop, le 8 avr 2009 à 05:29:09

Bjr,

Il faudrait que tu sois plus précis : genre donner ton formulaire...

Si non vu ton pb je pense qu'il faut que tu passes par un truc genre DO WHILE qui recupère tes champs, genre dans un tableau et après tu ecrire (printf, echo ...) ta requète

voilà une piste

2mop

Répondre à 2mop