Comment ortographié une variable de type chexkbox dans Mysql ? - PHP - Programmation
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!
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
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
Marsh Posté le 17-05-2006 à 11:27:28
Et une petite remarque, dans ton cas des boutons radio seraient bien plus appropriés.
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!
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.
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
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 ?
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.
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.
Marsh Posté le 17-05-2006 à 12:07:20
donc dans l'ordre, non, non, oui, non et oui pour la fin
reprends sur un tuto de base t'as tout faux là
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à
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
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
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 ?
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?
Marsh Posté le 17-05-2006 à 13:45:00
topai02 a écrit : la variable $_POST['name_de_ton_input'] est créée automatiquement |
pour les checkbox attention, ça ne renvoie une valeur que si elle est cochée
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
Marsh Posté le 17-05-2006 à 14:27:38
un foreach($_POST['toto']) aussi
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. |
pas forcément tu peux très bien recuperer une simple variable qu'il faut splitter ensuite : 'val1, val2, val3'
Marsh Posté le 17-05-2006 à 14:47:38
topai02 a écrit : la variable $_POST['name_de_ton_input'] est créée automatiquement |
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é.
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
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...
Marsh Posté le 17-05-2006 à 15:27:24
topai02 a écrit : oui, suffit de faire un truc du genre |
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
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
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?
Marsh Posté le 17-05-2006 à 15:35:36
$_POST est un tableau (y'a des crochets => tableau )
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
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 ?
Marsh Posté le 17-05-2006 à 16:01:01
kiru@ a écrit : Je n'arrive pas a voir pourquoi j'utiliserais la concaténation. |
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é.
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.
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
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
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. |
enfin si c'est pas un select acceptant une multi-sélection, rien à foutre et pas besoin de crochets (et rien à foutre de splitter aussi ^^)
edit : ha ouuuuuaaais j'avais pas vu le "multiple"
-->[]
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 (et rien à foutre de splitter aussi ^^) |
Attend je t'accompagne
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.