Champ TINYINT

Résolu/Fermé
JBennn Messages postés 92 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 13 juin 2013 - 10 mai 2011 à 16:23
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 13 mai 2011 à 17:26
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

Blopette Messages postés 315 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 3 octobre 2012 273
10 mai 2011 à 16:26
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
JBennn Messages postés 92 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 13 juin 2013 1
10 mai 2011 à 17:23
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
Blopette Messages postés 315 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 3 octobre 2012 273
Modifié par Blopette le 11/05/2011 à 09:42
$Connaitre=$_POST["connaitre"];  
if $Connaitre="oui"  
$Connaitre=0 
else $Connaitre=1


Quelque chose comme ça, je ne sais plus trop la syntaxe PHP.
0
JBennn Messages postés 92 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 13 juin 2013 1
11 mai 2011 à 18:16
ça ne marche pas.. a cause du ELSE. On peut mettre un else dans un autre else ? :s
0
Blopette Messages postés 315 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 3 octobre 2012 273
12 mai 2011 à 11:38
Oui on peut imbriquer des if et des else. Met bien des accolades { } là où il faut.
0
JBennn Messages postés 92 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 13 juin 2013 1
12 mai 2011 à 17:10
ç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
JBennn Messages postés 92 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 13 juin 2013 1
10 mai 2011 à 16:53
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
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
13 mai 2011 à 17:26
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