Champ TINYINT

Résolu
Bonjour,

Alors voila j'ai un formulaire sur mon site avec un champ "connaitre" de type TINYINT avec deux boutons de radios ( Oui ou non )

Je voudrai savoir comment faire prendre la valeur 1 pour "oui" et la valeur 0 pour "non" par exemple. Car la dans ma table le champ connaitre prend toujours 0 donc je ne m'y retrouve pas :s

Je sais pas si c'est assez clair mais pouvez-vous m'aider ? lol svp

3 réponses

  1. Bonjour,
    Avant d'insérer la valeur de ton bouton radio dans la base de données, tu fais un test :
    si val=oui alors insérer 0 sinon insérer 1


    Ou alors j'ai mal compris...
    0
    1. Tu sais ou je dois placer le "si" dans ce code ?
      <html>
      	<head>
      		<title> TP PHP</title>
      	</head>
      	<body>
      	 <?php
      	 
      
      
      if(!isset($_POST['nom'])) { echo ' erreur : nom'; }	
      if(!isset($_POST['prenom'])) { echo ' erreur : prenom'; }	
       if(!isset($_POST['adresse'])) { echo ' erreur : adresse'; }	
      if(!isset($_POST['pseudo'])) { echo ' erreur : pseudo'; }	
      if(!isset($_POST['pass'])) { echo ' erreur : pass'; }	
       if(!isset($_POST['connaitre'])) { echo ' erreur : connaitre'; }	
      
      else{ 
      
      $Nom=$_POST["nom"]; 
      $Prenom=$_POST["prenom"]; 
      $Adresse=$_POST["adresse"]; 
      $Pseudo=$_POST["pseudo"]; 
      $Mdp=$_POST["pass"]; 
      $Connaitre=$_POST["connaitre"]; 
      	
      			
      			// Connexion au serveur MySQL 
      			$db=mysql_connect("localhost","root","")or die("Erreur de connexion au serveur");
      			
      			// Connexion à la base devillersbdd
      			mysql_select_db("devillersbdd",$db)or die ("Erreur de connexion à la base devillersbdd");
      			
      			// Requête Ajout de la personne créé dans le formulaire 
      			$MonSql="INSERT INTO inscription(Nom, Prenom, Adresse, Pseudo, Mdp, Connaitre) VALUES('$Nom','$Prenom','$Adresse','$Pseudo','$Mdp','$Connaitre')";	
      			
      			// Envoie de la requête 
      			mysql_query($MonSql);
      			
      			// Fermeture de la connexion
      			mysql_close($db);
      			
      			//	Message de confirmation
      			echo("Votre inscription est bien enregistrée. <br />");
      			
      			}
      	?>
      	</body>
      </html>
      0
    2. $Connaitre=$_POST["connaitre"];  
      if $Connaitre="oui"  
      $Connaitre=0 
      else $Connaitre=1


      Quelque chose comme ça, je ne sais plus trop la syntaxe PHP.
      0
    3. ça ne marche pas.. a cause du ELSE. On peut mettre un else dans un autre else ? :s
      0
    4. Oui on peut imbriquer des if et des else. Met bien des accolades { } là où il faut.
      0
    5. ça marche mais je peux pas mettre le "oui" car le nom de mon bouton de radio c'est "connaitre", et si je le change il y aura des erreurs :s
      0
  2. D'accord et est-ce que tu sais ou je dois placer le si dans ce code :

    <html>
    	<head>
    		<title> TP PHP</title>
    	</head>
    	<body>
    	 <?php
    	 
    
    
    if(!isset($_POST['nom'])) { echo ' erreur : nom'; }	
    if(!isset($_POST['prenom'])) { echo ' erreur : prenom'; }	
     if(!isset($_POST['adresse'])) { echo ' erreur : adresse'; }	
    if(!isset($_POST['pseudo'])) { echo ' erreur : pseudo'; }	
    if(!isset($_POST['pass'])) { echo ' erreur : pass'; }	
     if(!isset($_POST['connaitre'])) { echo ' erreur : connaitre'; }	
    
    else{ 
    
    $Nom=$_POST["nom"]; 
    $Prenom=$_POST["prenom"]; 
    $Adresse=$_POST["adresse"]; 
    $Pseudo=$_POST["pseudo"]; 
    $Mdp=$_POST["pass"]; 
    $Connaitre=$_POST["connaitre"]; 
    	
    			
    			// Connexion au serveur MySQL 
    			$db=mysql_connect("localhost","root","")or die("Erreur de connexion au serveur");
    			
    			// Connexion à la base devillersbdd
    			mysql_select_db("devillersbdd",$db)or die ("Erreur de connexion à la base devillersbdd");
    			
    			// Requête Ajout de la personne créé dans le formulaire 
    			$MonSql="INSERT INTO inscription(Nom, Prenom, Adresse, Pseudo, Mdp, Connaitre) VALUES('$Nom','$Prenom','$Adresse','$Pseudo','$Mdp','$Connaitre')";	
    			
    			// Envoie de la requête 
    			mysql_query($MonSql);
    			
    			// Fermeture de la connexion
    			mysql_close($db);
    			
    			//	Message de confirmation
    			echo("Votre inscription est bien enregistrée. <br />");
    			
    			}
    	?>
    	</body>
    </html>


    ??
    0
    1. Bonjour,

      je vous propose une solution bien plus mieux. Au lieu de choisir un TINYINT, choisissez le type ENUM: dans les valeurs de ENUM, vous mettez

      'Oui','Non'


      Ca ne mange que 1 octet.

      Le champ de type ENUM gère une association clé-valeur qui est transparente:

      SELECT DISTINCT connaitre FROM matable

      affiche:
      oui
      non

      SELECT DISTINCT connaitre+0 FROM matable

      affiche:
      0
      1

      L'intérêt du champ ENUM devient intéressant quand on a une collection limitée et fixe d'items mais de taille variable. Exemple, la liste des jours de la semaine:

      'lundi', 'mardi'.....'dimanche'

      Quelque soit la taille d'une valeur, elle occupera TOUJOURS un octet tant que le nombre d'items ne dépasse pas 255. Je parle du nombre de combinaisons possibles pour un même champ ENUM et non d'enregistrements dans votre table.

      Reprenons votre cas avec 'oui','non'

      Admettons que vous vouliez rajouter un état 'en attente', vous éditez la structure de votre table, vous rajoutez une clé-valeur 'en attente' et vous pourrez insérer un troisième état. Même si 'en attente' s'affiche sur 10 caractères, la valeur prise en base de données ne sera que de 1 octets!!!

      Donc, dans votre formulaire HTML, il vous suffit d'écrire la valeur 'Oui' ou 'Non' et la transmettre au script PHP sans avoir jamais besoin de la traduire en 0 ou 1 ou toute autre valeur.

      A+
      0