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
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
A voir également:

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
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
7
jeremie64 Messages postés 3 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007
17 juil. 2007 à 11:29
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
0
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
0
je viens d'essayer ta premiere methode mais elle marche pas sur ma liste deroulante!!!
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
0
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;
?>
4
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
merci c'est OK je vais tenter avec Ajax
0
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');
0
saar_pape > 2mop
25 févr. 2009 à 11: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
0
kahina2104 > 2mop
6 avril 2009 à 11:53
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
0
2mop > kahina2104
8 avril 2009 à 05:29
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
0
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;
?>
3
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
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
0
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
2

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
1
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
1
A mon humble avis 'val_sel' correspond a la valeur retourne via <option valeu = '...'>patati </option>
Sinon c'est trop cool ce source ! et commente en plus !
Dailleurs je vais l'integrer dans mon site de vente !
www.poureve.biz
0
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

<?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
1
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
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.
1
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
0