Passer les valeurs des checkbox par GET

Résolu
MrAdnanox Messages postés 5 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009 - 7 mai 2009 à 02:27
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 11 mai 2009 à 10:06
Bonjour,

j'ai un petit problème qui me fatigue trop,
voila j'ai un formulaire ou il y'a des checkbox
pour sélectionnez les matières :
Arabe :   
Francais :   
Anglais :   
Sciences :   
Physique :   


Mat :   
Sociologie :   
Philosophie :   
Traduction :   
Sport :


le formulaire retourne dans le OnSubmit la fonction AjouterProf() :


function AjouterProf()
{
var nom; var prenom; var email; var tel; var adresse; var pass;
nom = document.FormAjouterProf.nom.value;
prenom = document.FormAjouterProf.prenom.value;
email = document.FormAjouterProf.email.value;
tel = document.FormAjouterProf.tel.value;
adresse = document.FormAjouterProf.adresse.value;
pass = document.FormAjouterProf.pass.value;
var matiere = new Array();
matiere = document.FormAjouterProf.matiere;
var niveau = new Array();
niveau = document.FormAjouterProf.niveau;
if(texte = file('ADMINISTRATION/js/ajouter-prof-mysql.php?nom='+nom+'&prenom='+prenom+'&email='+email+'&tel='+tel+'&adresse='+adresse+'&pass='+pass+'&matiere='+matiere+'&niveau='+niveau));
{
if(texte == 1)
{
writediv(' '+nom+' a bien ete ajouter a la liste des professeurs
');
return(false)
}
else if(texte == 2)
{
writediv(' Erreur ');
return(false)
}
else
writediv(texte);
}
}

j'envoie les deux tableau matiere et niveau
par GET au fichier php ajouter-prof-mysql.php :


mysql_connect("localhost", "root", "") or die ('Erreur : '.mysql_error() );
mysql_select_db("ecole") or die ('Erreur :'.mysql_error());

$nom = strip_tags($_GET['nom']);
$prenom = strip_tags($_GET['prenom']);
$email = strip_tags($_GET['email']);
$tel = strip_tags($_GET['tel']);
$adresse = strip_tags($_GET['adresse']);
$pass = md5( $_GET['pass']);
$matiere = $_GET['matiere'][0];
for($i=1; $i<10; $i++)
{
if ($_GET['matiere'][$i] != '')
{
$matiere .= ', '.$_GET['matiere'][$i];
}
}


$niveau = $_GET['niveau'][0];

for($i=1; $i<4; $i++)
{
if ($_GET['niveau'][$i] != '')
{
$niveau .= ', '.$_GET['niveau'][$i];
}
}

$result = mysql_query('INSERT INTO professeur VALUES("", "'.$nom.'", "'.$prenom.'", "'.$matiere.'", "'.$niveau.'", "'.$email.'", "'.$tel.'", "'.$adresse.'", "'.$pass.'")') or die ('Erreur :'.mysql_error());

if(isset($result))
echo "1";
else
echo "2";



tous fonctionne parfaitement saufe les valeur des
tableaux me donne : u, n, d, e, f, i, n, e, d

y'a t'il quelqu'un pour m'aide svp.

11 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
7 mai 2009 à 15:02
Bonjour,

c'est illisible (**)
mais bon, j'ai cru voir :
>>>ou il y'a des checkbox pour sélectionnez les matières....et tu fais var matiere new Array(); matiere document.FormAjouterProf.matiere;
et tu n'as pas plusieurs de matières ????
donc : laquelle ? le navigateur ne peut pas savoir.

si c'est le même name :
document. name_du_formulaire .name_des_checkbox.length c'est le nombre et tu utilises
document.name_du_formulaire.name_des_checkbox[index].value ou .checked

index variant de 0 à document.name_du_formulaire.name_des_checkbox.length-1

** la saisie wysiwyg utilisée n'est pas compatible avec ton navigateur
clique sur [../infomsg.aspx?ajout =&ID=1308953&txtmode=0 Si vous n'arrivez pas à saisir votre message, CLIQUEZ ICI pour revenir à une "TextBox classique"] en dessous le bouton "Ajouter"

Cordialement [mon Site] [M'écrire] Bul
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 mai 2009 à 07:56
matiere ? lequel ? ou alors regarde push.
mais ce qu'on passe en paramètres get ou post, c'est une chaîne de caractères.
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mai 2009 à 09:57
var matiere = new Array();
matiere = document.FormAjouterProf.elements['matiere[]'];

fait un alert de matiere....
si tu veux mettre dans un array,
boucle :
    matiere[index]=document.FormAjouterProf.elements['matiere[]'][index];
ou push matiere(document.FormAjouterProf.elements['matiere[]'][index]);
3
MrAdnanox Messages postés 5 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009
8 mai 2009 à 02:30
j'ai fais

var matiere = new Array();
for (i=0;i<document. FormAjouterProf. matiere.length;i++)
{
matiere = document.FormAjouterProf.matiere[i].checked;
}

mais ca na rien donne
0

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

Posez votre question
MrAdnanox Messages postés 5 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009
9 mai 2009 à 03:17
Arabe + Français + Anglais + Sciences +Physique+

Mat + Sociologie+ Philosophie+ Traduction + Sport

je veut passe cette array par GET a l'aide d'AJAX

a un fichier php qui va insérer les valeur du

formulaire a la BDD.

si se n'ai pas possible de passer un array par GET

POST, est-il possible de transformer cette array

en chaîne de caractères pour pourvoir la transféré ?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 09:53
ma question concernait ton script !
tu fais matiere=....
or matiere a été déclarée juste devant comme un array

essaye simplement ça :
    var t=new Array();
    t="toto";
    alert(t.length);

>>passe cette array par GET a l'aide d'AJAX a un fichier php qui
va insérer
>>les valeur du formulaire a la BDD.
j'avais bien compris....

>>si se n'ai pas possible
de passer un array par GET POST,
un array ce n'est pas une chaîne de caractères et pour la transmission
    ( get ou post ) seules les chaînes de caractères sont permises
il faut donc d'abord le transformer
bêtement par exemple : "....&prm="+ton_array.join(",")+"..."
             php $_GET['prm']='poste 0,poste 1,poste 2.....   '
mais on doit pouvoir nettement mieux faire
@+
0
MrAdnanox Messages postés 5 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009
10 mai 2009 à 01:51
j'ai fais comme ca :

var matiere = new Array();
matiere = document.FormAjouterProf.elements['matiere[]'];

var niveau = new Array();

niveau = document.FormAjouterProf.elements['niveau[]'];

if(texte = file('ADMINISTRATION/js/ajouter-prof-mysql.php?nom='+nom+'&prenom='+prenom+'&email='+email+'&tel='+tel+'&adresse='+adresse+'&pass='+pass+'&matiere='+matiere.join(",")+'&niveau='+niveau.join(",")));


mais ca passe pas !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mai 2009 à 10:00
d'ailleurs : document.FormAjouterProf['matiere[]'][index]
0
MrAdnanox Messages postés 5 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 11 mai 2009
11 mai 2009 à 01:06
Je vous remercie de votre aide, je n'ai pas le temps pour tester maintenant,
mais si vous dite que ça marche :)
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
11 mai 2009 à 09:58
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
11 mai 2009 à 10:06
ça marche, ça marche.... pour mettre dans un Array,
sans préjuger du reste.
0
Rejoignez-nous