Problème MYSQL

Résolu
fab0 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
fab0 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tout le monde,

Voici mon problème je n'arrive pas à récuperer les requêtes de mes listes déroulantes ainsi que la valeur de mes boutons radios dans ma base de donnée. Cela est d'autant plus bizarre que je fais un echo de ma requête et que je vois bien la valeur de mes champs séléctionnés.
exemple avec une de mes listes déroulantes:
<td>Profession : </td>

    <td><select name="metiers">
          <option value="">faites votre choix</option>
          <option value="metier_1">Ouvrié</option>
          <option value="metier_2">Technicien</option>
          <option value="metier_3">Cadre</option>
          <option value="metier_4">Profession libérale</option>

        </select></td>


Voici la requête (il y a tout les champs ça fait un peu long lol):
<?php

	include ("../fonction_php_mysql/fonction.php");
	 ouvreBase();
	
 $requete = "INSERT INTO adherents VALUES (null,' ".$_POST["nom"]." ',
 ' ".$_POST["prenom"]." ',' ".$_POST["login"]." ',' ".$_POST["email"]." ',
 ' ".$_POST["adresse"]." ',' ".$_POST["ville"]." ',
 ' ".$_POST["cp"]." ',' ".$_POST["tel_fixe"]." ',
 ' ".$_POST["tel_port"]." ',' ".$_POST["metiers"]." ',' ".$_POST["mdp"]." ',' ".$_POST["civils"]." ',
 ' ".$_POST["sexe"]." ',' ".$_POST["age"]." ',' ".$_POST["etudes"]." ',
 ' ".$_POST["inscription"]." ',' ".$_POST["commentaire"]." ')";
 
 ////////////////////test la requête//////////////////////////////////////////////////////
 echo "$requete";

graca à mon echo requête je vois bien que je récupère tout les valeurs mais dès que je fais un tour dans ma table les champs qui correspondent à une liste déroulante comme "métiers" ne sont pas récupérés.

Si vous pouviez m'aider ce serait sympa. Merci d'avance.
Si je ne répond pas à vos réponses tout de suite c'est que je vais au boulot.

6 réponses

Chaka2828 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
As-tu essayé de copier cette requête dans phpMyAdmin pour t'assurer qu'elle fonctionne ? Si ton serveur n'affiche pas les erreurs (tu peux le forcer en mettant "error_reporting(E_ALL)" au début du script - de tête, je suis pas certain de l'orthographe), il se peut qu'il y ait une erreur de syntaxe...

Il y a une autre chose à laquelle je pense en voyant ton code: que se passe-t-il à ton avis si un des champs (la ville par exemple) contient un apostrophe ( ' ) ? MySQL va prendre l'apostrophe pour la fin du champ et va chercher la virgule juste après, qu'il ne trouvera pas -> erreur. Il faut que tu passes tes valeurs dans une fonction d'echappement (me souviens plus son nom... elle commence probablement par "mysql_" et devrait contenir "escape" :P )
0
fab0 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir Chaka,

Désolé de ne pas avoir répondu avant, je comprendrai très bien que tu ne réponde pas à ce post. Mais je voulais juste te dire que je n'ai pas résolu mon problème je n'arrive toujours pas à récupérer les valeurs de mes listes déroulantes dans ma BD alors que le résultat de mes sélections apparaît très bien lorsque je fais un echo de ma requête.
0
fab0 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
Rebonjour,

dans ma Base de Donnée j'ai déclaré ma liste déroulante de la manière suivante si cela peut aider.
`metiers` enum('ouvr','tech','cad','prof_lib') NOT NULL default 'ouvr',

Merci d'avance à ceux qui s'attarderont sur mon problème.

Ps: je sais pas si il est utile de précisé que je suis novice, je pense que tout le monde l'aura compris LOL.
0
Darshu Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   64
 
Salut ! Pas besoin de chercher plus loin ...

Quand tu fais INSERT INTO tu mets $_POST['metiers'] et tu as mis avant <select name="metiers">
<option value="">faites votre choix</option>
<option value="metier_1">Ouvrié</option>
<option value="metier_2">Technicien</option>
<option value="metier_3">Cadre</option>
<option value="metier_4">Profession libérale</option>

donc ça veut dire que métiers à pour valeur metier_1 OU metier_2 OU metier_3 OU metier_4. Et dans ta base tu as spécifié metiers` enum('ouvr','tech','cad','prof_lib'), c'est-à-dire que "metiers" ne peut avoir comme valeurs possibles QUE ouvr OU tech OU cad OU prof_lib ... Alors soit tu changes ton formulaire pour mettre VALUE="ouvr" etc, soit tu change l'enum de ta base de données.

En espérant être le plus clair possible.
0
fab0 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Darshu pour ta réponse mais j'ai toujours le même problème. Je vais donc essayé de détailler du mieux que possible mon site.

Page inscritpion formulaire en html:

liste déroulante:
	<td>Profession : </td>
    	<td><select name="metiers">
          		<option value="">faites votre choix</option>
          		<option value="ouvr">Ouvrié</option>
          		<option value="tech">Technicien</option>
          		<option value="cad">Cadre</option>
          		<option value="prof_lib">Profession libérale</option>
        		</select>
		</td>


Page envoi requête:

<?php

	include ("../fonction_php_mysql/fonction.php");
	 ouvreBase();
	
 $requete = "INSERT INTO adherents VALUES (null,' ".$_POST["nom"]." ',
 ' ".$_POST["prenom"]." ',' ".$_POST["login"]." ',' ".$_POST["email"]." ',
 ' ".$_POST["adresse"]." ',' ".$_POST["ville"]." ',
 ' ".$_POST["cp"]." ',' ".$_POST["tel_fixe"]." ',
 ' ".$_POST["tel_port"]." ',' ".$_POST["metiers"]." ',' ".$_POST["mdp"]." ',' ".$_POST["civils"]." ',
 ' ".$_POST["sexe"]." ',' ".$_POST["age"]." ',' ".$_POST["etudes"]." ',
 ' ".$_POST["inscription"]." ',' ".$_POST["commentaire"]." ')";
 
 ////////////////////test la requête//////////////////////////////////////////////////////
 echo "$requete";

 /////////////////////////////////////////////////
$result = mysql_query($requete);
if ($result ==0) echo ("Impossible d'effectuer la requete");
fermerBase();
?>


Résultat de ma requête:

INSERT INTO adherents VALUES (null,' julio ', ' Jacko ',' fabou ',' je ne sais@cdur.com ', ' 1 rue du bac ',' paris ', ' 75000 ',' 0123568978 ', ' 7878787878 ',' tech ',' 235689 ',' celi ', ' H ',' 27 ',' bac_p ', ' O ',' Voila tout est là ')
        


Voici ma table MYSQL:

CREATE TABLE `adherents` (
  `Id_adherents` int(11) NOT NULL auto_increment,
  `nom` varchar(50) NOT NULL default '',
  `prenom` varchar(50) NOT NULL default '',
  `login` varchar(50) NOT NULL default '',
  `email` varchar(50) NOT NULL default '',
  `adresse` varchar(50) NOT NULL default '',
  `ville` varchar(50) NOT NULL default '',
  `cp` int(5) NOT NULL default '0',
  `tel_fixe` decimal(10,0) NOT NULL default '0',
  `tel_port` decimal(10,0) NOT NULL default '0',
  `metiers` enum('ouvr','tech','cad','prof_lib') NOT NULL default 'ouvr',
  `mdp` varchar(6) NOT NULL default '',
  `civils` enum('marie','celi','concu','pacs') NOT NULL default 'marie',
  `sexe` enum('H','F') NOT NULL default 'H',
  `age` int(3) NOT NULL default '0',
  `etudes` enum('bep','bac','bac_p','bac+') NOT NULL default 'bep',
  `inscription` enum('O','C') NOT NULL default 'O',
  `commentaire` tinytext,
  PRIMARY KEY  (`Id_adherents`)
)


Voici comment ma table récupere ma requête:

INSERT INTO `adherents` VALUES (10, ' julio', ' Jacko', ' fabou', ' je ne sais@cdur.com', ' 1 rue du bac', ' paris', 75000, 0123568978, 7878787878, '', ' 23568', '', '', 27, '', '', ' Voila tout est là ');
        

Alors voilà nous y sommes les champs avec les côtes vides sont les listes déroulantes que ma table ne récupère pas. Pourtant comme on peut le voir au petit 3° ma requête contient bien tout les valeurs que je saisi dans mon formulaire html.

Je vous remercie tous pour l'aide que vous m'apportez.
0
Darshu Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   64
 
Hum, coïncidence ou pas, toujours est il que ça plante à chaque fois que t'a mis enum. Alors à ta place, surtout si ça vient d'une liste déroulante (les valeurs c'est TOI qui les fixe quand tu écris ton formulaire), je virerai les enum pour mettre des carchar(n) avec n le nombre maximal théorique (par exemple, varchar(8) pour les métiers).

Mais bon, c'est juste pour esquiver le problème, je ne sais pas pourquoi ça ne marche pas ...
0
fab0 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   > Darshu Messages postés 303 Date d'inscription   Statut Membre Dernière intervention  
 
Salut Darshu,

Je te remerci ta combine fonctionne à merveille, par contre je voudrai savoir pourquoi on utilise ENUM si VARCHAR fonctionne aussi bien voir mieux dans mon cas.

Sinon je te dis encore merci pour ton aide c'était vraiment sympa.
0
Darshu Messages postés 303 Date d'inscription   Statut Membre Dernière intervention   64 > Darshu Messages postés 303 Date d'inscription   Statut Membre Dernière intervention  
 
Bah de rien :) Pour ma part, je n'ai jamais utilisé ENUM encore, mais toujours varchar ... Enfin c'était une bonne idée de l'utiliser, mais je ne vois toujours pas pourquoi ça plantait !
0

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

Posez votre question
fab0 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
Oui j'avais regardé sur google mais je n'avais rien trouvé de concluant,
Voilà je te laisse et te remercie encore.
0
zaz
 
Je crois voir d'où cela vient, il semble qu'il y ai dans ta requête SQL des espaces blancs autour de
,' ".$_POST["metiers"]." ',

ce qui donne
'_tech_' (tiret bas symbolise l'espace blanc)

Du coup ca marche en varchar mais pas en enum, ce qui me parait normal puisque'il attend 'tech' et non '_tech_'
0
fab0 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
Merci zaz,

Tu as raison j'ai testé ce que tu m'as dis hier soir, j'ai enlevé les espaces et tout c'est mis à fonctionné .

Merci
0