Comment ortographié une variable de type chexkbox dans Mysql ?

Comment ortographié une variable de type chexkbox dans Mysql ? - PHP - Programmation

Marsh Posté le 17-05-2006 à 10:54:50    

Bonjour,  
dans mes formulaires PHP j'ai plusieurs checkbox, donc leur noms sont déclarés avec deux crochets  
.
 
Exemple : "temps[],"sexe[]","permis[]" etc ...
 
D'apres mes connaissanes en PHP/MySQL pour recuperer les variables dans une table, il faut que les noms des champs possedent le même nom que les variables.
 
 
Donc ok pour les variables de type "nom","prenom" etc ... mais lorsque j'ai une variable nommé "permis[] (checkbox avec oui ou non pour savoir si la personnes a le permis) comment je dois appeler le champ de ma table qui recuperera cette information ?
 
sexe  
 
ou bien  
 
sexe[]  
 
??
 
 
Merci pour répondre à cette questiontrès bête mais dont je n'ai pas encore la réponse.

Reply

Marsh Posté le 17-05-2006 à 10:54:50   

Reply

Marsh Posté le 17-05-2006 à 10:55:44    

Hein ?

Reply

Marsh Posté le 17-05-2006 à 11:14:35    

Je vois pas trop ce que tu veux dire, mais les noms des champs de ta table n'ont pas besoin d'etre les meme que ceux de tes variables!

Reply

Marsh Posté le 17-05-2006 à 11:16:58    

Ja vais tenter de mieux expliquer.
Dans un formulaire j'ai deux checkbox pour savoir si l'utilisateur a le permis.
Donc une checkbox avec la valeur "oui" et une autre avec la valeur "non".
 Elles sont déclarés comme ceci :
 
<input type="Checkbox" name="permis[]" value="oui">
<input type="Checkbox" name="permis[]" value="non">
 
Pour recuperer ce que l'utilisateur a coché j'ai donc crée une table contenant deux champs : le champ "id" et le champ "permis[]".
 
 
J'espère que jusque la je n'ai pas fait d'erreur, car ma question c'est de savoir si pour le second champ de ma table je le nomme "permis[]" ou "permis" sans les crochets.
 
Merci


Message édité par kiru@ le 17-05-2006 à 11:18:36
Reply

Marsh Posté le 17-05-2006 à 11:21:55    

ça n'a aucun rapport, tu pourrais l'appeler tagada  
 
c'est un langage (php au pif) qui va insérer les données dans la table, c'est à lui que tu dois donner le nom correct pour accéder aux variables
 
accessoirement, tu devrais lire quelques tutos comme celui ci : http://www.phpfrance.com/tutoriaux [...] l-avec-php ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 11:27:28    

Et une petite remarque, dans ton cas des boutons radio seraient bien plus appropriés.


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
Reply

Marsh Posté le 17-05-2006 à 11:28:02    

Quand tu vas faire ton insertion, le champ de ta table va prendre la valeur contenue dans ta variable.
Vice versa, quand tu vas faire ta requete de selection c'est la variable qui va contenir le contenu du champ.
Le nom de ta variable et celui de ton champ peuvent donc etre differents, le tout est d'utiliser le bon selon que tu travail sur ta page ou sur ta table!

Reply

Marsh Posté le 17-05-2006 à 11:32:32    

Oui je le sais ca mais je me suis mal exprimé encore une fois je pense, ma véritable question c'est de savoir si je peut utiliser des crochets pour nommé un champ d'une table ?
 
Merci pour le tuto ;) je vais tout de même y jeter un coup d'oeil, je pose ma question ici parcque souvent les questions toutes bêtes ne sont pas dans les tutos, d'ailleurs ca fait uen dizaine de jours que je lis un tuto sur le siteduzero en PHP et je n'ai pas eu la réponse a ma question.

Reply

Marsh Posté le 17-05-2006 à 11:34:33    

j_lecruel a écrit :

Et une petite remarque, dans ton cas des boutons radio seraient bien plus appropriés.


 
C'est vrai que ce serait mieux je vais modifier ca ;)
 

Reply

Marsh Posté le 17-05-2006 à 11:34:43    

pose toi plutôt une autre question
 
pour quelle raison faudrait-il mettre des crochets dans le nom du champ ? ça sert à quoi ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 11:34:43   

Reply

Marsh Posté le 17-05-2006 à 11:40:25    

Bien vu sh@rdar!
A partir te compliquer la vie dans tes requetes je n'en vois pas l'interet.

Reply

Marsh Posté le 17-05-2006 à 12:02:23    

Ah non ce n'est pas pour me compliqué.
En fait pour déclarer une checkbox il faut lui donner un nom avec deux crochets à la fin.
 
Je me suis dit moi qu'il fallait faire de même dans la table pour reconnaitre que la valeur attendu vient d'une checkkbox.
 
J'ai toujours tendance à m'emmêler les pinceaux.
 
Pour moi si on a un champ texte dans notre formulaire nommé "nom", hé bien je vais recuperer le contenu de ce champ dans ma base avec le champ nommé "nom".
 
Je suis obligé à ce stade de donner le même nom pour le champ et la variable pour moi.  A part si j'ai mal saisi quelque chose.

Reply

Marsh Posté le 17-05-2006 à 12:07:20    

donc dans l'ordre, non, non, oui, non et oui pour la fin :D
 
reprends sur un tuto de base t'as tout faux là ;)


Message édité par Sh@rdar le 17-05-2006 à 12:07:45

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 12:13:58    

En effet, j'ai revu les tutos, mais il me semblait que certain types d'éléments de formulaire avaient deux crochets à la fin non ? Et il me semblait que c'etait les checkbox donc ben je me suis perdu.
 
Je vais essyer de corriger tout cela je vous tiens au courant apres ma pause déjeuner et merci pour vos réponses jusque là ;)

Reply

Marsh Posté le 17-05-2006 à 12:18:15    

les crochets dans un élément de formulaire servent juste à spécifier que les données vont être envoyées dans un tableau
 
soit tu envoi nom1 nom2 nom3 pour tes checkbox, soit nom[] et tu aura à la réception le tableau contenant les valeurs cochées à la place de X variables


Message édité par Sh@rdar le 17-05-2006 à 12:18:29

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 13:07:40    

le mieux serait de rester dans le principe simple :  
 
on ne mets pas de crochets
et coté serveur on splitte ce qu'on récupère :  
normalement on devrait recuperer $post['nom'] = 'val1, val2, val3'
 
un simple split() suffirait.
 
et cela permettrait à la page (au html surtout) d'être reutilisable dans un autre langage serveur

Reply

Marsh Posté le 17-05-2006 à 13:24:10    

Le terme splitté ne m'est apparu dans aucun tuto, a mon avis ca veut dire faire une action pour enregistré la valeur des variables.
 
 
Par contre un truc que je cogite, voila ce qu'il ya érit sur un tuto :
 
name : c'est le nom de la zone de texte. Choisissez-le bien, car c'est lui qui va produire une variable. Par exemple :  
<input type="text" name="pseudo" />  
Cela va créer dans cible.php une variable $_POST['pseudo']  
 
 
 
Pour la variable crée dans cible.php, elle sera crée automatiquement par le serveur ou bien c'est a nous de prendre le soin de créer cette variable dans la page cible.php ?
 
Car moi je l'ai crée moi-même, ca affiche le contenu de la variable dans la page cible.php.
 
 
Donc la variable est-elle généré automatiquement ?

Reply

Marsh Posté le 17-05-2006 à 13:36:00    

La variable sera créé du coté serveur.

Reply

Marsh Posté le 17-05-2006 à 13:43:29    

la variable $_POST['name_de_ton_input'] est créée automatiquement
chaque fois que tu cliques sur submit, tu peux récupérer les infos envoyées en faisant $_POST['name_de_ton_input] dans ton code PHP.
 
par conséquent, si tu as  
<input type="Checkbox" name="permis" value="oui">
et que dans ton code PHP tu tapes echo $_POST['permis'] lorsque tu cliqueras sur submit, ça affichera "oui"
 
tu as compris?  
 

Reply

Marsh Posté le 17-05-2006 à 13:45:00    

topai02 a écrit :

la variable $_POST['name_de_ton_input'] est créée automatiquement
chaque fois que tu cliques sur submit, tu peux récupérer les infos envoyées en faisant $_POST['name_de_ton_input] dans ton code PHP.
 
par conséquent, si tu as  
<input type="Checkbox" name="permis" value="oui">
et que dans ton code PHP tu tapes echo $_POST['permis'] lorsque tu cliqueras sur submit, ça affichera "oui"
 
tu as compris?


 
 
pour les checkbox attention, ça ne renvoie une valeur que si elle est cochée ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 14:06:48    

oui c vrai :)

Reply

Marsh Posté le 17-05-2006 à 14:17:05    

petite astuce au passage. S'il y a un menu select avec choix multiple il faut placer des crochets sur le nom du select.
 
<select name="toto[]" multiple>
 <option value="1"> ...
</select>
 
Script coté serveur il faut faire  
for($i=0;$i<count($_POST['toto']);$i++){
  echo $_POST['toto'][$i];
}
 
un truc comme ça je me rappelle plus exactement. Bref, pour vérifier il suffit de faire print_r($_POST). Vous serez comment faire business avec la variable ;)

Message cité 2 fois
Message édité par Berceker United le 17-05-2006 à 14:17:31
Reply

Marsh Posté le 17-05-2006 à 14:27:38    

un foreach($_POST['toto']) aussi ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 14:36:19    

aussi :jap:

Reply

Marsh Posté le 17-05-2006 à 14:46:29    

Berceker United a écrit :

petite astuce au passage. S'il y a un menu select avec choix multiple il faut placer des crochets sur le nom du select.
 
<select name="toto[]" multiple>
 <option value="1"> ...
</select>
 
Script coté serveur il faut faire  
for($i=0;$i<count($_POST['toto']);$i++){
  echo $_POST['toto'][$i];
}
 
un truc comme ça je me rappelle plus exactement. Bref, pour vérifier il suffit de faire print_r($_POST). Vous serez comment faire business avec la variable ;)


 
pas forcément tu peux très bien recuperer une simple variable qu'il faut splitter ensuite : 'val1, val2, val3'

Reply

Marsh Posté le 17-05-2006 à 14:47:38    

topai02 a écrit :

la variable $_POST['name_de_ton_input'] est créée automatiquement
chaque fois que tu cliques sur submit, tu peux récupérer les infos envoyées en faisant $_POST['name_de_ton_input] dans ton code PHP.
 
par conséquent, si tu as  
<input type="Checkbox" name="permis" value="oui">
et que dans ton code PHP tu tapes echo $_POST['permis'] lorsque tu cliqueras sur submit, ça affichera "oui"
 
tu as compris?


Oui c'est justement ca que j'ai affiché avec ce code.
 
Mais en fait, mois je veut que les données soient envoyés dans ma table donc je n'ai pas a lui dire d'afficher ca avec un echo $_POST['permis'].
Une simple requete de type mysql_query("INSERT INTO aa VALUES('', '$permis',); suffit non?
Berceker United : voila c'est ca dont je parlais au dessus, les deux crochets qui m'embetaient jusque la.
Donc c'est pour les menu select cela ? J'ai confondu avec les boutons radio et checkbox qui eux n'ont pas besoin de crochets.
 
 
Sinon je vois que je m'y prends mal d'apres vos codes coté server etc ... moi je tape tout le code dans une meme page .php : le formulaire + la connexion au serveur et la requête pour inserer les données dans la table etc ... c'est déconseille ??
 
 
Ca fait beaucoup de questions a la fois désolé.

Reply

Marsh Posté le 17-05-2006 à 14:48:59    

@gatsu : nan, la dernière valeur sélectionnée écrasera les précédentes :)
 
non t'es toujours à coté
 
les crochets servent à envoyer un tableau de données point barre
 
soit tu as X cases appelés case1 case2 etc etc et à toi de voir pour savoir lesquelles ont été cochées, soit tu as un tableau case[] avec les éléments cochés empilés dedans
 
pour des sélections multiples, si tes champs portent tous le même nom, t'auras que la dernière valeur dans $_POST['machin']
 
le temps de $machin c'est fini ;)
 
sinon tu peux tout coller au même endroit pour démarrer, c'est pas bien méchant


Message édité par Sh@rdar le 17-05-2006 à 14:52:09

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 14:56:39    

oui, suffit de faire un truc du genre
 
INSERT INTO ta_table ( 'ton_champ_permis_dans_la_table ) VALUES ('$_POST['permis]')
 
enfin, je crois...  
 :)  

Reply

Marsh Posté le 17-05-2006 à 15:27:24    

topai02 a écrit :

oui, suffit de faire un truc du genre
 
INSERT INTO ta_table ( 'ton_champ_permis_dans_la_table ) VALUES ('$_POST['permis]')
 
enfin, je crois...  
 :)


Non ca ne marche pas je pense a cause des apostrophes autour du permis.
 
 
Pour ajouter les données dans ma table j'ai le code suivant, il n'y a pas d'erreur mais les données n'entrent pas dans ma table je ne sais pas pourquoi d'ailleurs si vous savez pourquoi merci de me le dire :
 
<?php
if (isset($_POST['metier']) AND isset($_POST['temps'])) // Si les variables existent
{
    if ($_POST['metier'] != NULL AND $_POST['temps'] != NULL) // Si on a quelque chose à enregistrer
    {
mysql_connect("localhost", "dfgfdg", "2dfgfgz" ); // Connexion à MySQL
mysql_select_db("test" );  
 $metier = htmlentities ($_POST['metier']);
 $temps = htmlentities ($_POST['temps']);
 
   mysql_query("INSERT INTO aa VALUES('','$_POST[metier]', '$_POST[temps]')" );
   mysql_close(); // Déconnexion de MySQL
}
}
 
 
?>
 
 
PS : voila le lien de cette page :  
 
 
http://djilali.bechar.club.fr/dida/etape1-1.php


Message édité par kiru@ le 17-05-2006 à 15:27:49
Reply

Marsh Posté le 17-05-2006 à 15:29:41    

ça c'est pas bon..
 
 $metier = htmlentities ($_POST['metier']);
 $temps = htmlentities ($_POST['temps']);
 
   mysql_query("INSERT INTO aa VALUES('','$_POST[metier]', '$_POST[temps]')" );  
 
tu as 2 nouvelles variables modifiées, alors que tu veux insérer celles d'origine..
 
et pour mettre un tableau dans une chaine de caractère (la requête sql dans notre cas) il faut voir la concaténation ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 15:32:57    

Merci pour les variables je viens de comprendre. En revanche je ne vois pas de quel tableau tu parle?

Reply

Marsh Posté le 17-05-2006 à 15:35:36    

$_POST est un tableau (y'a des crochets => tableau :D )
 
en php c'est pas bien de faire $machaine = 'blabla $_POST[bidule]' pour plusieurs raisons
 
voir syntaxe des chaines de caractère et concaténation dans la doc :)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 15:43:50    

Je n'arrive pas a voir pourquoi j'utiliserais la concaténation.
 
Ici : on veut mélanger deux variables donc on l'utilise :  
 
<?php
$prenom = 'Jean ';
$nom = 'Dupont';
 
$nom_complet = $prenom . $nom;
?>
 
Mais moi je ne veut pas les mélanger mes variables, je veut juste qu'elles soient stockés dans ma table. A moins que je suis encore a coté de la plaque ?

Reply

Marsh Posté le 17-05-2006 à 16:01:01    

kiru@ a écrit :

Je n'arrive pas a voir pourquoi j'utiliserais la concaténation.
 
Ici : on veut mélanger deux variables donc on l'utilise :  
 
<?php
$prenom = 'Jean ';
$nom = 'Dupont';
 
$nom_complet = $prenom . $nom;
?>
 
Mais moi je ne veut pas les mélanger mes variables, je veut juste qu'elles soient stockés dans ma table. A moins que je suis encore a coté de la plaque ?


si tu fais une echo de $nom_complet tu verras afficher JeanDupont si tu envoys cela dans ta table c'est ce qui va enregistrer. JeanDupont.  
 
Note: J'ai volontaire coller le prenom et nom car je traduis texto ce qui serait affiché vu la maniere dont c'est concaténé.

Reply

Marsh Posté le 17-05-2006 à 16:14:06    

Ouai ca je sais c'était pour montrer dans quel cas je pensais utilisé la concatenation car je ne comprends pas pourquoi sh@rdar me renvoie vers la concaténation pour un seimple enregistrement de variables dans une table.
 

Reply

Marsh Posté le 17-05-2006 à 16:20:36    

effectivement je ne comprend pas non plus!

Reply

Marsh Posté le 17-05-2006 à 16:33:38    

parce que construire une requête c'est créer une chaine (qui sera ensuite exécutée par le moteur de base de données)
 
parce qu'utiliser des checkbox te fera aussi utiliser des tableaux, parce que les données post sont aussi des tableaux et que faire "INSERT INTO aa VALUES('','$_POST[metier]', '$_POST[temps]')"  c'est pas super joli même si coup de bol, ça peut fonctionner
 
 
 
pour ces raisons, faudra bien que tu sache comment intégrer un élément de tableau dans une chaine, sous peine de revenir avec une parse error


Message édité par Sh@rdar le 17-05-2006 à 16:34:53

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 17-05-2006 à 16:55:37    


 
C'est vrai que j'ai reussi a inserer les donnees dans ma table en recuperant les infos de la page concerné dans la page suivante comme cela :
mysql_query("INSERT INTO a VALUES('', '$nom','prenom')" );
 
Merci

Reply

Marsh Posté le 17-05-2006 à 17:26:36    

Berceker United a écrit :

petite astuce au passage. S'il y a un menu select avec choix multiple il faut placer des crochets sur le nom du select.
 
<select name="toto[]" multiple>
 <option value="1"> ...
</select>
 
Script coté serveur il faut faire  
for($i=0;$i<count($_POST['toto']);$i++){
  echo $_POST['toto'][$i];
}
 
un truc comme ça je me rappelle plus exactement. Bref, pour vérifier il suffit de faire print_r($_POST). Vous serez comment faire business avec la variable ;)


enfin si c'est pas un select acceptant une multi-sélection, rien à foutre et pas besoin de crochets :p (et rien à foutre de splitter aussi ^^)
 
edit : ha ouuuuuaaais j'avais pas vu le "multiple" :p
 -->[]

Message cité 1 fois
Message édité par Djebel1 le 17-05-2006 à 17:27:15
Reply

Marsh Posté le 17-05-2006 à 18:19:14    

Djebel1 a écrit :

enfin si c'est pas un select acceptant une multi-sélection, rien à foutre et pas besoin de crochets :p (et rien à foutre de splitter aussi ^^)
 
edit : ha ouuuuuaaais j'avais pas vu le "multiple" :p
 -->[]


Attend je t'accompagne [:tang]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed