Champ TINYINT

Résolu
JBennn Messages postés 107 Statut Membre -  
mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   -
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. Blopette Messages postés 317 Date d'inscription   Statut Membre Dernière intervention   273
     
    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. JBennn Messages postés 107 Statut Membre 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. Blopette Messages postés 317 Date d'inscription   Statut Membre Dernière intervention   273
       
      $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. JBennn Messages postés 107 Statut Membre 1
       
      ça ne marche pas.. a cause du ELSE. On peut mettre un else dans un autre else ? :s
      0
    4. Blopette Messages postés 317 Date d'inscription   Statut Membre Dernière intervention   273
       
      Oui on peut imbriquer des if et des else. Met bien des accolades { } là où il faut.
      0
    5. JBennn Messages postés 107 Statut Membre 1
       
      ç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. JBennn Messages postés 107 Statut Membre 1
     
    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
  3. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
     
    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