Rechercher : dans
Par :

Sql : choix multiple vers un seul champ

Dernière réponse le 20 mai 2008 à 17:47:36 campusliber, le 20 mai 2008 à 10:42:41 
 Signaler ce message aux modérateurs

Bonjour tout l'monde !
Voilà : je suis un béotien en matière de php, de sql, faut dire que la dernière fois que j'ai développé un site, c'était avec pagemill, ça nous rajeunit pas !

Mon problème :
- soit un formulaire html, comportant un groupe de boutons-radio, dont la syntaxe est :
<input type="radio" name="civilites" value="Mademoiselle" />
<input type="radio" name="civilites" value="Madame" />
<input type="radio" name="civilites" value="Monsieur" />

- soit une table sql comportant une rubrique "civilites" unique

- soit une page de traitement php

Quelle est la syntaxe de l'instruction sql "Insert into" dans la page de traitement php pour insérer le résultat du choix entre ces boutons-radio du formulaire dans la rubrique unique de la base ?

Grazie mille...

Configuration: Mac OS X
Firefox 2.0.0.14

Meilleures réponses pour « sql : choix multiple vers un seul champ » dans :
Javascript - Lien aléatoire / Choisir un lien au hasard VoirLe script ci-dessous permet de créer un lien hypertexte dirigeant le visiteur vers une adresse choisie au hasard dans une liste. Le code ci-dessous est à insérer entre les balises et en début de page :
Réseau local, connexion internet : bien choisir son routeur VoirRouteurs : points de repères essentiels Quelle utilisation ? Un seul ordinateur VS plusieurs ordinateurs : quel routeur choisir ? Modem-routeurs de votre fournisseur d’accès Modem-routeurs des FAI : des offres de qualité Routeurs...
Télécharger Questy VoirQuesty est une application de création de questionnaires à choix multiples en mode multimédia. Il permet d'éditer des fiches interactives idéals pour les enseignants qui veulent tester la connaissance de leurs élèves ou étudiants. Questy permet aussi...
Transmission de données - Le multiplexage VoirIntroduction au multiplexage On appelle multiplexage, la capacité à transmettre sur un seul support physique (appelé voie haute vitesse), des données provenant de plusieurs paires d'équipements (émetteurs et récepteurs) ; on parle alors de voies...

1

Mimiste, le 20 mai 2008 à 10:48:28

Je comprend pas trop ce que tu veux dire par

- soit une table sql comportant une rubrique "civilites" unique

Ce serai pas plutot une base SQL comportant une table "civilites" ?
Unique ?
La sportivité commence là où le diesel s'arrête !
You can still watch this ? Wait until the Vtec kick in !

Répondre à Mimiste

2

campusliber, le 20 mai 2008 à 11:03:18

Base de données: agents
Table: inscription
Rubrique : civilites

Je ne fais que reprendre l'arborescence établie par mon serveur !

Répondre à campusliber

3

José !, le 20 mai 2008 à 11:04:21

$sql = "INSERT INTO <tatable> (civilites) VALUES (".$_POST['civilites']".")";

Voici en gros le type de requete même si je comprend pas bien à quoi ca te servirai, il faudra dans tout les cas remplir des autres champs ^^. Si c'est juste le champ que tu veux mettre à jour utilise plutot UPDATE :)

Voilà en esperant t'avoir donné un coup de main ;)

Répondre à José !

4

José !, le 20 mai 2008 à 11:12:25

Petite erreur de ma part avec les double quotes:

Ca donne docn avec tes paramètres de tables :

$sql = "INSERT INTO inscription (civilites) VALUES (".$_POST['civilites'].")";

Apres pour la connexion à la base de donnée regarde les tutoriels concernant les connexions à la BDD ;)

Répondre à José !

5

campusliber, le 20 mai 2008 à 11:14:14

Voilà la syntaxe de l'instruction d'insertion :

$sql = "INSERT INTO agents.inscription VALUES (
'".$titreformulaire."',
'".$civilites."',
'".$prenom."',
'".$nom."',
'".$adresse."',
'".$suiteadresse."',
'".$codepostal."',
'".$ville."',
'".$telfixe."',
'".$gsm."',
'".$adressemail."',
'".$secusociale."',
'".datenaissance."',
'".villenaissance."',
'".departnaissance."',
now())";

Mais j'ai une erreur "Column count doesn't match value count at row 1", et je pense que ça vient du fait que le groupe de boutons-radio du formulaire est identifié comme 3 champs distincts, alors qu'avec l'instruction "insert into", "civilites" ne représente qu'un champ dans la table !

Répondre à campusliber

6

José !, le 20 mai 2008 à 11:29:21

Fait un echo de $civilites, personnelement je n'ai jamais eu de probleme avec les boutons radios, qui ont justement l'interet de ne ramene qu'un champ.

Fait une recherche internet pour ce type d'erreur, j'ai regardé rapidement et ca peut-être causé par des champs manquants dans ta requete (d'où l'interet de specifier les champs dans lesquels tu va insérer tes valeurs), ou bien pour une personne par une absence de mot de passe / login pour la connexion. Sinon est tu sur que now() dans les double quotes marche? Sinon essaye d'afficher ta requete sql tu y verra peut-être le champ manquant :)

Répondre à José !

7

José !, le 20 mai 2008 à 11:33:27

Désolé ne pouvant éditer je met ca à la suite, il te manque les $ devant 3 variables,
datenaissance
villenaissance
departnaissance

Ensuite d'après NotePad++, le now() ne passe pas dans des guillemets(c'est une fonction), je te conseille donc la concaténation.

Un truc dans le genre :

$sql = "INSERT INTO agents.inscription VALUES (
'".$titreformulaire."',
'".$civilites."',
'".$prenom."',
'".$nom."',
'".$adresse."',
'".$suiteadresse."',
'".$codepostal."',
'".$ville."',
'".$telfixe."',
'".$gsm."',
'".$adressemail."',
'".$secusociale."',
'".$datenaissance."',
'".$villenaissance."',
'".$departnaissance."',
".now().")";

Répondre à José !

8

campusliber, le 20 mai 2008 à 11:52:29

Bon, on progresse !

J'ai mis les $ où ils manquaient, et ré-écrit la dernière ligne avec le "now" comme indiqué dans ta correction.

Et maintenant... "Fatal error: Call to undefined function now() in /cosmaforms/traitinscragent.php on line 78", la ligne 78 étant justement celle du "now" !!!

Rhâââââ...

Répondre à campusliber

9

José !, le 20 mai 2008 à 11:57:02

La fonction now() n'existe pas, ou n'a pas été importé, essaye plutot une fonction comme time(), ou encore date('Y-m-d'), time te ramenant le time stamp, et date te ramene la date sous le fomat que tu veux (ici 2008-05-20)

Va donc voir la doc concernant ce point:

http://fr2.php.net/time pour time

http://fr2.php.net/date pour date, il y explique comment avoir la date au format que tu veux.

Voilà en ésperant t'avoir aidé.

Répondre à José !

10

campusliber, le 20 mai 2008 à 12:37:35

Bon, j'ai supprimé "now", je croyais que c'était une instruction particulière, je l'ai dit, je n'y connais rien... et maqintnenant j'ai ce message :

Erreur de syntaxe près de ')' à la ligne 17

sachant que la ligne 17 se présente ainsi dans la demande de connexion :

16 // Connexion au serveur mysql
17 $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD)
18 or die('Impossible de se connecter : ' . mysql_error());
19 // sélection de la base de données
20 mysql_select_db(DB_DATABASE, $connect);

Répondre à campusliber

11

José !, le 20 mai 2008 à 12:55:09

A mon avis ca viens du fait que tu n'as pas mis les $ devant le nom de variable, ensuite j'aurais mis le or die sur la même ligne, je pense que le probleme de parenthèse viens de la.


// Connexion au serveur mysql
$connect = mysql_connect($DB_SERVER, $DB_SERVER_USERNAME, $DB_SERVER_PASSWORD) or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db($DB_DATABASE, $connect);

Essaye un truc comme ça (le die sur la même ligne).

Répondre à José !

12

jisisv, le 20 mai 2008 à 13:28:26

Je ne vois pas l'utilité de stocquer la civilité sous forme de chaine. Celà prend de la place inutile et n'est pas efficace lors du traitement. Il vaut mieux stocker cette donnée en entier

<form action="hello.php" method="post">
Mademoiselle<input type="radio" name="civilites" value="0" /><br />
Madame<input type="radio" name="civilites" value="1" /><br />
Monsieur<input type="radio" name="civilites" value="2" /><br />
<input type="submit" value="Submit">
</form>

[johand@horus]~/public_html/radio $cat hello.php
<?php
print("<html><body>");
print_r($_POST);
print("</body></html>")
?>



...
create table agents.inscription (... , civilite int,...)
Quoi de plus simple que d'effectuer une jointure avec une table de civilités (en supportant éventuellement plusieurs langues....)



Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Répondre à jisisv

13

campusliber, le 20 mai 2008 à 16:07:23

C'est décidément plein de surprises, tout ça !
J'ai l'impression que chacun utilise sa propre syntaxe, ce qui m'étonne pour un code censé être universel !?!

Bon, j'en suis là : message "Impossible de se connecter".

Le code de connexion :

// Parametres mysql
define('DB_SERVER', 'localhost'); // serveur mysql - sans autre indication de mon hébergeur, je laisse "localhost"
define('DB_SERVER_USERNAME', 'campusliber'); // nom d'utilisateur - vérifié, OK
define('DB_SERVER_PASSWORD', '123456'); // mot de passe - vérifié, OK
define('DB_DATABASE', 'agents.inscription'); // nom de la base - là, j'ai un petit souci de compréhension : le nom de la base est "agents", mais le nom de la table est "inscription". Ça ne fonctionnait pas du tout quand j'indiquais seulement le nom de la base, j'ai donc rajouté le nom de la table, avec un point entre les deux...

// Connexion au serveur mysql
mysql_connect ($DB_SERVER, $DB_SERVER_USERNAME, $DB_SERVER_PASSWORD) or die("Impossible de se connecter ") ;
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);

Voilà... Si quelqu'un veut mettre un peu les mains dans le cambouis...

Répondre à campusliber

14

José !, le 20 mai 2008 à 17:31:05

Salut, désolé de t'avoir mis sur une fausse piste ! Je ne pensais pas que tu aurais mis les variables du serveur comme constante ! Donc tu peux enlever les $. Sinon y a une erreur de compréhension en effet, le nom de ta base est uniquement agents, pas agent.inscription. C'est plus tard que tu selectionnera ta table, tu lors de l'INSERT. Bref, essaye ca :

define('DB_DATABASE', 'agents');

// Connexion au serveur mysql
$connect = mysql_connect (DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die("Impossible de se connecter ") ;
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);

Voilà désolé de t'avoir induit en erreur !

Répondre à José !

15

 campusliber, le 20 mai 2008 à 17:47:36

Alors, j'ai fait ça :

10 // Parametres mysql
11 define('DB_SERVER', 'localhost'); // serveur mysql
12 define('DB_SERVER_USERNAME', 'campusliber'); // nom d'utilisateur
13 define('DB_SERVER_PASSWORD', '123456'); // mot de passe
14 define('DB_DATABASE', 'agents'); // nom de la base
15
16// Connexion au serveur mysql
17 $connect = mysql_connect (DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die("Impossible de se connecter ") ;
18 // sélection de la base de données
19 mysql_select_db(DB_DATABASE, $connect);

et ça donne ça :

Erreur de syntaxe près de ')' à la ligne 17

M'énerve, cette syntaxe !!!

tienjs, petit p.s. / qui connaîtrait un dico de syntaxe php et sql EN FRANÇAIS !!!??

Répondre à campusliber
Collection CommentÇaMarche.net