Php : récupérer les valeurs d'un formulaire

Fermé
mia - 16 juil. 2003 à 14:42
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 3 juil. 2012 à 12:50
J'ai un problème :
dans un formulaire, je dispose de deux radio buttons et selon la valeur choisie je nourrie une liste déroulante par un accès à une base de données.

Mais ca ne marche pas, je ne parviens pas a recuperer la valeur choisie en php, alors qu'avec javascript si.

Je sais qu'avec php, on peut récupérer la valeur d'un formulaire avec : $_POST['Nom_Objet'] mais les radio buttons ont le même nom car on ne peut en choisir que l'un des deux ! Et quand je fais (le programme ci-dessous) ça ne marche pas. Si quelqu'un a une idée !!!


<p align="left
Materiel
<input type="radio" name="Type" value="Materiel">
Logiciel
<input type="radio" name="Type" value="Logiciel">

<input type="submit" name="ChercheLib" value="Chercher">

<SCRIPT language="javascript">
function testerRadio(radio) {
for (var i=0; i<radio.length;i++) {
if (radio[i].checked) {
alert("Système = "+radio[i].value)
}
}
}
</SCRIPT>
<?
chercheLib($_POST['this.form.Type']);

function chercheLib($val){
...
//Accés aux bases de données mysql

}
A voir également:

10 réponses

la tu confond les données dont tu dispose en javascript ( coté client) et les données donttu dispose en php ( coté serveur).

$_POST['this.form.Type'] n'a pas de sens comme tel car :
$_POST est valorisé coté serveur quand tu transmet ta page en validant
this.form.Type est valorisé coté client et n'a aucune valeur en php.

Solution :
En premier déclare une formulaire sur ta page html :

<FORM method="post" NAME="monformulaire">

//tes boutons radio et ton bouton submit

</FORM> // Fin du formulaire


Dans ta page php tu pourra traiter le contenu du formulaire via la global $_POST qui devrait contenir si je suis ton code.


$_POST ["Type"] = "Materiel" ou "Logiciel"
$_POST ["ChercheLib"] = "Chercher"



Voila en espérant t'aider :)
12
Quand tu valides ton formulaire les éléments contenu dans ta page( éléments du formulaire) sont transmisent au serveur.

Toi en php ton moyen de traiter ces informations sont de récupérer le contenu de $_POST qui lui contiendra tous les élements transmis.
$_POST est un tableau pour info ^^.

Pour toi tu as déclarer 3 éléments dans ton formulaire dont 2 qui ont le même nom donc ce que tu aurras comme information en php se sera :
$_POST["NomElement"] = "valeur";

NomElement correspond au nom des éléments du formulaire dans ta page html pour toi c'est type et ChercheLib.

La valeur transmise correspond soit a la valeur que tu as défini sinon c'est valoriser suivant ton action.

pour ChercheLib tu as mis value="Chercher" donc tu aurras comme valeur en php $_POST["ChercheLib"] = "Chercher"

Pour le bouton radio et bien cela dépendra sur lequel tu clic.
Si tu clic sur le premier $_POST["type"] aurra pour valeur 'Materiel' si tu clic sur le 2eme $_POST["type"] aurra pour valeur 'Logiciel'

Par contre comme dis Nico renome les bouton radio autrement genre "monchoix" par exemple.
5
maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
16 juil. 2003 à 15:18
Bonjour!!
alors, si je me souviens bien, quand tu récupères ta variable
$_POST ["Type"]

tu peux faire le test suivant

if($_POST ["Type"]=="Materiel")


bon courage!!


Maily   :-))))
3
Pour récupérer en PHP les valeurs d'un formulaire HTML, j'utilise une application freeware qui crée simultanément, en parallèle, le formulaire HTML et le script PHP qui récupère les données: à télécharger depuis
http://www.deleze.name/marcel/logiciels/
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
salut,

chercheLib($_POST["type"]) et non this.form.type,

php ne connait pas this.form.type, il récupére le nom de ta variable et non les objets et objet d'objet qui vont avec.
javascript et php sont deux choses bien différentes, distincts

voila , normalement ca devrait parcher

A@++
2
C'est ce que j'ai fait au début, mais je t'assure que ca ne marche pas, je viens meme de retester !!!
0
je crois savoir.
utilise un autre nom de variable à la place de "type"
type peut etre un nom d' instrustion, il me semble avoir déjà eu ce genre de probleme,
mais dans tous les cas la syntaxe correct de récupération des variables est $_POST["nom de ta variable"] ou directement $nom_de_ta_variable mais ceci n'est pas sur sur tous les serveurs.

A@++
2
Ben non ca ne marche toujours pas. Le fait que les boutons ont le même non, ca peut etre une influence ?
0
oui merci, mais j'ai pas trop compris ...
les lignes de code de la fin :
"$_POST ["Type"] = "Materiel" ou "Logiciel"
$_POST ["ChercheLib"] = "Chercher""
2
comment récuperer en php la valeur des radio boutons ?
2
Avec du retard, mais c'est toujours valable...

Sinon, pour récupérer la valeur des boutons radios, il te suffit d'en cocher un par défaut avec l'attribut checked="checked" dans un de tes <input type="radio">.
Comme ça, tu as obligatoirement une valeur, donc moins de soucis :)
Le nom de ton bouton radio (dans l'attribut name) est celui grâce auquel tu déclares un groupe de boutons radios, dans ce même groupe il ne peut y avoir qu'un seul bouton de coché.

Donc il te suffit de récupérer la valeur de ton bouton radio avec :
<?php 
    $ta_variable = $_POST['nom_de_ton_groupe_de_Boutons_Radios'] ; 
?> 


Tout simplement... faut pas trop se poser de questions... en gros, les boutons radios fonctionnent comme je l'ai dit au dessus, mais on a toujours moyen de faire autrement. Mais c'est pas mon but de vous l'expliquer ici :)

Sur ce, bon courage à vous !
0
j'ai testé ton script
le nom de variable type ne convient, j'ai testé avec tipe est ca marche.

le source :
<?

chercheLib($_POST["tipe"]);

function chercheLib($val){
echo "la valeur est : ".$val;

}
?>
<html>
<body>
<form name=frm method=post>

Materiel
<input type="radio" name="tipe" value="Materiel">
Logiciel
<input type="radio" name="tipe" value="Logiciel">

<input type="submit" name="ChercheLib" value="Chercher">

</form>
<SCRIPT language="javascript">
function testerRadio(radio) {
for (var i=0; i<radio.length;i++) {
if (radio[i].checked) {
alert("Système = "+radio[i].value)
}
}
}
</SCRIPT>
</body>
</html>

si tu ne les avais pas mises , n'oublie pas les balises <form method=post> ...

A@++
1
oui merci, j'ai testé sur un autre exemple et ça marche.
0
misam Messages postés 31 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 25 juin 2009 2
17 juin 2009 à 17:16
Re Bonjour,
j'ai réussi à résoudre mon problème
MAIS j'ai un nouveau problème, je souhaite recuperer toute les photos de mon repertoire qui ont leurs nom qui commencent de la même manière que ma variable que j'ai récupéré
Exemple :

ma variable : $nom='elephant'
Je veux donc récupérer toutes le photos qui ont leur nom qui commence par 'elephant' ('elephant2.jpg' 'elephant1.jpg' 'elephant23.jpg')
1
Et ? Tu veux savoir comment il faut faire ? Tu pourrais expliciter ta question quand même, et ne pas balancer ton problème en laissant sous-entendre : "débrouillez-vous, c'est vous les pros !"

Mais bon, je peux pas m'empêcher d'aider les gens qui demandent quand ils ne s'y connaissent pas assez...

donc, il te suffit de faire une boucle, "Pour", si ton nombre d'image est fixe.

<?php
    for (i = (premier_index_de_tes_image) ; i < (nombre d'images) ; i++) {
        echo '<img src="chemin_de_ton_image/'.$nom.$i.' />';
    }
?>


ça affichera toutes tes images... donc c'est déjà un gros coup de main, tu n'as plus qu'à adapter ce code pour pouvoir récupérer tes images ;) Mais apprendre, c'est aussi (et surtout) chercher par soi-même !
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 3/07/2012 à 12:50
Salut !

<?php
function ScanDirectory($Directory, $debutMot){
	$rslt = array();
	
	$MyDirectory = opendir($Directory) or die('Erreur');
	
	while($Entry = @readdir($MyDirectory)) {

		if(substr($Entry, 0, strlen($debutMot)) == $debutMot) {
			array_push($rslt, $Entry);
		}
	}
  
	closedir($MyDirectory);
	
	return $rslt;
}

$result = ScanDirectory('.', 'r'); //Afficher tout les mots qui commencent avec "r" ! 

foreach($result AS $value) echo '<li>'.$value.'</li>';
?>
0