Page 1 sur 2

Associer une image à un bouton radio

Posté : 14 mai 2011, 15:08
par nicolas17550
Bonjour, (Je suis un peu débutant :? )

J'ai créer un espace membre, et je voudrais que les personnes qui s'inscrivent choisissent leur sexe : "Homme / Femme" avec deux boutons radios et que dans leur profil, la valeur récupérée soit une image qui correspond au sexe.

Pouvez-vous m'aidez :cry:

(J'ai déjà créer la variable $sexe dans ma base de donnée)

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 15:18
par misterflo
Salut,

il suffit simplement de remplir la valeur dans la bdd par le chemin de l'image que tu souhaite (exemple : www/images/sexe_homme.jpg) au lieu de homme ou femme

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 16:23
par nicolas17550
Comment je dois procéder ?
Je dois entrer dans ma base de donnée et créer deux variables : "homme" et "femme" et je leur atribut le chemin des images ?

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 16:27
par AB
Oui ou encore tu donne traditionnellement la valeur 1 pour masculin et la valeur 2 pour féminin que tu enregistre dans ta bdd et ensuite en fonction de cette valeur tu fais afficher l'image correspondante.
Ce sera mieux par rapport à la solution précédente dans le sens où cela te fais moins de données dans ta bdd et surtout tu pourras changer l'adresse des images sans avoir à mettre à jour ta bdd.

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 17:15
par nicolas17550
Merci pour ces réponses, comment je dois procéder en détail pour entrer les nouvelles valeurs homme et femme : text ou varchar ?
Ensuite comment récupérer ces valeurs en php dans la page membre ?
Peut tu me donner des exemples ?

Merci

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 17:33
par AB
Dans ta base de donnée tu ajoute une colonne nommée par exemple "sexe". Et dans cette colonne tu met 1 ou 2 suivant le sexe.

Comment fais-tu pour qu'un membre se connecte ? Montres nous la requête que tu fais et je la compléterai par un exemple.

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 17:41
par nicolas17550
Je te prépare ça =)

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 18:28
par nicolas17550
En fait, c'est à l'inscription que je souhaite que les personnes choisissent leur sexe donc
Je joins :

le formulaire d'inscription
la page "inscription.php" qui traite le formulaire
la page membre "home.php" pour afficher les images selon le sexe :

Exemple pour les hommes Image

Formulaire d'inscription :
<form>
...
Homme : <input type="radio" name="sexe" value="Homme" />
Femme : <input type="radio" name="sexe" value="Femme" />
...
</form>

Page d'inscription "inscription.php" :
<?php
session_start(); //On demarre une session parce que j'ai envi ^^
require("conf.php3"); //On insert le fichier qui contient les informations

$mail = htmlentities($_POST['mail']);

    if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
    {
		$chaine = "abcdefghijklmnopqrstuvwxyz0123456789"; 
		$confirm = str_shuffle($chaine); //On créé le code de confirmation
		
		$pseudo = htmlentities($_POST['pseudo']); //On recupère les infos
		$mdp = htmlentities($_POST['mdp']);
		$verif_mdp = htmlentities($_POST['verif_mdp']);
		$nom = htmlentities($_POST['nom']);
		$prenom = htmlentities($_POST['prenom']);
		$pays = htmlentities($_POST['pays']);
		$website = htmlentities($_POST['website']);
		$born = htmlentities($_POST['born']);
		$sexe = htmlentities($_POST['sexe']);
		
		/*On Fait la variable contenant le mail de confirmation*/
	
		$message1 = '<html><body><img src="http://www.web-astronomie.com/images/entete-mail.png"></br><br>';
		$message1 .= '<font face="Tahoma" color="#3b5998" size="2">Bonjour<b> ' . $prenom . ' ' . $nom . ' </b>et bienvenue sur<b> ' .$nom_site. '</b></br>';
		$message1 .= 'Toute l\'équipe de Web Astronomie vous remercie de votre inscription.<br><br>';
		$message1 .= 'Vos identifiants (conserver les précieusement) : <br>';
		$message1 .= '</br>';
		$message1 .= 'Votre pseudo : <b>' . $pseudo .'</b><br>';
		$message1 .= 'Votre mot de passe : <b>' . $mdp .'</b><br>';
		$message1 .= '</br>';
		$message1 .= 'Votre profil : </br>';
		$message1 .= '</br>';
		$message1 .= 'Votre mail : <b>' . $mail .'</b></br>';
		$message1 .= 'Votre nom : <b>' . $nom .'</b><br>';
		$message1 .= 'Votre prenom : <b>' . $prenom .'</b><br>';
		$message1 .= 'Votre sexe : <b>' . $sexe .'</b></br>';
		$message1 .= 'Votre pays : <b>' . $pays .'</b><br>';
		$message1 .= 'Votre date de naissance : <b>' . $born .'</b><br><br>';									
		$message1 .= 'Pour modifier vos infos, rendez-vous dans votre compte<br>';
		$message1 .= '</br>';
		$message1 .= 'Cliquez sur le lien ci-dessous pour activer votre compte :</br>';
		$message1 .= '</br>';
   		$message1 .= '<a href="http://www.web-astronomie.com/confirm.php?login=' . str_replace(' ','%20',$pseudo) . '&confirm=' . $confirm . '">';
		$message1 .= 'Cliquez ici pour activer</a>';
		$message1 .= '</br></br>';
		$message1 .= 'Nous vous remercions de votre fidélité<br>';
		$message1 .= 'L\'équipe de <b>Web Astronomie</b></font></body></html>';

		$sql = connect_sql(); //On se connecte à MySQL
		
		$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
		$donnees = mysql_fetch_array($verification)or die (mysql_error());

		if($donnees['COUNT(*)'] >= 1) //On verifie que le pseudo n'existe pas déjà
		{ 
			echo "<script>alert(\"Votre pseudo est déjà pris !\")</script>";
			echo '<script language="Javascript">document.location.replace("javascript:history.back(1)");</script>';
		}
		else
		{	
			if( empty($pseudo) || empty($mdp) || empty($verif_mdp) || empty($mail) || empty($nom) || empty($prenom) || empty($born) || empty($sexe)) //On verifie que les variables précédentes ne soient pas vide
			{
				echo "<script>alert(\"Un ou plusieurs champs ne sont pas remplis !\")</script>";
				echo '<script language="Javascript">document.location.replace("javascript:history.back(1)");</script>';
			}
			elseif( $mdp != $verif_mdp) //On verifie que les 2 pass sont identiques
			{
					echo "<script>alert(\"Le deux mots de passe ne sont pas identiques !\")</script>";
					echo '<script language="Javascript">document.location.replace("javascript:history.back(1)");</script>';
			}
			else //Si tout est bon on entre les données dans la BDD et on envoye le mail
			{
				mysql_query("INSERT INTO pdf_membre VALUES ('','$pseudo', '$mdp', '$mail', '$confirm', '$nom', '$prenom', '$pays', '$born', '$website', '$sexe')");
				echo "<script>alert(\"Félicitation, vous êtes maintenant inscrit sur Web Astronomie ! Vous allez recevoir un email pour activer votre compte\")</script>";
				echo '<script language="Javascript">document.location.replace("index.php");</script>';
				$entete = "MIME-Version: 1.0\r\n";
				$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
				$entete .= "From: Web Astronomie <$email_admin>\r\n";
				$entete .= "Reply-To: $email_admin\r\n";
				mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'' , $message1, $entete);
			}
		}
		
		mysql_close($sql); //On se deconnecte
	}
	else //Reponse si l'adresse e-mail est une fausse
	{
		echo "<script>alert(\"Votre adresse email n\'est pas correcte !\")</script>";
		echo '<script language="Javascript">document.location.replace("javascript:history.back(1)");</script>';
		
	} 	




?>

Page membre "home.php" :
<?php
session_start(); //On ouvre la session pour pouvoir verifier si le membre est connecté
require("conf.php3"); //Commme d'ab

if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
	echo "<script>alert(\"Vous devez vous connecter pour voir cette page\")</script>"; //Si non, on arrete le script et on affiche un message
	echo '<script language="Javascript">document.location.replace("index.php");</script>';

}

$sql = connect_sql();
$pseudo_membre = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM pdf_membre WHERE `pseudo`='$pseudo_membre'"); 
$result = mysql_fetch_array ($requete);

$id = $result['id'];
$pseudo = $result['pseudo'];
$mail = $result['mail'];
$born = $result['born'];
$nom = $result['nom'];
$prenom = $result['prenom'];
$pays = $result['pays'];
$sexe = $result['sexe'];
/* On peut recuperer plus d'info si besoin */

?>
<?php include('protect/accueil.html'); ?>
Peux tu aussi m'indiquer les détails pour la base de donnée pour la variable $sexe : (Le nom de la colonne / Type / Interclassement / Null etc...) pour que je ne fasse pas d'erreurs :?
Voila, redis moi si il manque des éléments à t'envoyer ! :D
Merci

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 20:53
par moogli
Salut,

Pour le champ sql plusieurs école :
- les possibilités de SQL tendent a utiliser un domaine spécifique (mais pas implanter partout)
- mysql offre le type enum (énumération) qui pourrait convenir mais cela n'est pas standard ;)
- utiliser un booléen mais implémenté dans tous les sgbd
- utiliser un entier non signer est une solution correct dans le cas indiqué (smallint) et parfaitement suffisant il ne devra pas être null (sauf si tu sauf souhaite laisser la possibilité de ne pas répondre auquel cas null devra être la valeur par défaut. Sinon tu doit prendre le partir de que le defaut c'est 1 ou c'est 2 (c'est arbitraire et n'en change rien)

Il va falloir modifier ton formulaire car les input doivent avoir en "value" 1 ou 2

Dans le cas que tu prévu sur ton formulaire il faut que utilise champ text ou un type enum (le must c'est un domaine mais bon :/) tu ne pourra pas mettre de valeur par defaut dans ton champs et si j'ai bien vue, le premier qui met koala ou androgyne va pourrir ta table ;) avec un type enum ou un domaine qui va bien pas de soucis ;)

Pour l'interclassement et tout le reste je dirais faut mettre la même chose que pour le reste pour pas mettre le brin dans la table ;)
@+

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 21:06
par nicolas17550
Merci de ta réponse.
Et dans la page inscription.php, il y a des choses a rajouter ?

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 22:25
par AB
Merci de ta réponse.
Et dans la page inscription.php, il y a des choses a rajouter ?
$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
                $donnees = mysql_fetch_array($verification)or die (mysql_error());

                if($donnees['COUNT(*)'] >= 1)
à remplacer par
$verification = mysql_query("SELECT COUNT(*) as nb FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
                $donnees = mysql_fetch_array($verification)or die (mysql_error());

                if($donnees['nb'] >= 1)
L'affichage des erreurs est un peu laborieuse avec javascript
echo "<script>alert(\"Votre pseudo est déjà pris !\")</script>";
                        echo '<script language="Javascript">document.location.replace("javascript&#058;history.back(1)");</script>';
avec cette méthode tu ne pourras afficher qu'une erreur à la fois. Il serait plus optimisé d'enregistrer les erreurs dans un tableau php puis de faire afficher ce tableau en php.

Du genre :
<?php

session_start(); //On demarre une session parce que j'ai envi ^^
require("conf.php3"); //On insert le fichier qui contient les informations

if (isset($_POST['envoyer']))
{
	$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
	$confirm = str_shuffle($chaine); //On créé le code de confirmation
	
    $mail = htmlentities($_POST['mail']);
	$pseudo = htmlentities($_POST['pseudo']); //On recupère les infos
	$mdp = htmlentities($_POST['mdp']);
	$verif_mdp = htmlentities($_POST['verif_mdp']);
	$nom = htmlentities($_POST['nom']);
	$prenom = htmlentities($_POST['prenom']);
	$pays = htmlentities($_POST['pays']);
	$website = htmlentities($_POST['website']);
	$born = htmlentities($_POST['born']);
	$sexe = htmlentities($_POST['sexe']);
   
	/*On Fait la variable contenant le mail de confirmation*/

	$message1 = '<html><body><img src="http://www.web-astronomie.com/images/entete-mail.png"></br><br>';
	$message1 .= '<font face="Tahoma" color="#3b5998" size="2">Bonjour<b> ' . $prenom . ' ' . $nom . ' </b>et bienvenue sur<b> ' .$nom_site. '</b></br>';
	$message1 .= 'Toute l\'équipe de Web Astronomie vous remercie de votre inscription.<br><br>';
	$message1 .= 'Vos identifiants (conserver les précieusement) : <br>';
	$message1 .= '</br>';
	$message1 .= 'Votre pseudo : <b>' . $pseudo .'</b><br>';
	$message1 .= 'Votre mot de passe : <b>' . $mdp .'</b><br>';
	$message1 .= '</br>';
	$message1 .= 'Votre profil : </br>';
	$message1 .= '</br>';
	$message1 .= 'Votre mail : <b>' . $mail .'</b></br>';
	$message1 .= 'Votre nom : <b>' . $nom .'</b><br>';
	$message1 .= 'Votre prenom : <b>' . $prenom .'</b><br>';
	$message1 .= 'Votre sexe : <b>' . $sexe .'</b></br>';
	$message1 .= 'Votre pays : <b>' . $pays .'</b><br>';
	$message1 .= 'Votre date de naissance : <b>' . $born .'</b><br><br>';                                                                  
	$message1 .= 'Pour modifier vos infos, rendez-vous dans votre compte<br>';
	$message1 .= '</br>';
	$message1 .= 'Cliquez sur le lien ci-dessous pour activer votre compte :</br>';
	$message1 .= '</br>';
	$message1 .= '<a href="http://www.web-astronomie.com/confirm.php?login=' . str_replace(' ','%20',$pseudo) . '&confirm=' . $confirm . '">';
	$message1 .= 'Cliquez ici pour activer</a>';
	$message1 .= '</br></br>';
	$message1 .= 'Nous vous remercions de votre fidélité<br>';
	$message1 .= 'L\'équipe de <b>Web Astronomie</b></font></body></html>';

	$sql = connect_sql(); //On se connecte à MySQL
   
	$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
	$donnees = mysql_fetch_array($verification)or die (mysql_error());


	$info_formulaire = array();
	
	
	if($donnees['nb'] >= 1) //On verifie que le pseudo ou le mail n'existe pas déjà
		{
			$info_formulaire[] ="Votre pseudo est déjà pris !";
		}
		  
						
	if( empty($pseudo) || empty($mdp) || empty($verif_mdp) || empty($mail) || empty($nom) || empty($prenom) || empty($born) || empty($sexe)) //On verifie que les variables précédentes ne soient pas vide
		{
			$info_formulaire[] ="Un ou plusieurs champs ne sont pas remplis !";
		}
	
	
	if( $mdp != $verif_mdp) //On verifie que les 2 pass sont identiques
		{
			$info_formulaire[] ="Le deux mots de passe ne sont pas identiques !";		  
		}
						   
	
	if (!preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
		{
			$info_formulaire[] ="Votre adresse email n\'est pas correcte !";
		}
		
		
	if(isset($info_formulaire) && count($info_formulaire) == 0)
	{	
		mysql_query("INSERT INTO pdf_membre VALUES ('','$pseudo', '$mdp', '$mail', '$confirm', '$nom', '$prenom', '$pays', '$born', '$website', '$sexe')");
			
		$info_formulaire[] ="Félicitation, vous êtes maintenant inscrit sur Web Astronomie ! Vous allez recevoir un email pour activer votre compte";
									   
		$entete = "MIME-Version: 1.0\r\n";
		$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
		$entete .= "From: Web Astronomie <$email_admin>\r\n";
		$entete .= "Reply-To: $email_admin\r\n";
		mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'' , $message1, $entete);
				 
			
		   
		mysql_close($sql); //On se deconnecte
	}
}
?>

<form action="#" method="post">
<div>
...
Homme : <input type="radio" name="sexe" value="1" />
Femme : <input type="radio" name="sexe" value="2" />
...

<input type = "submit" name = "envoyer" value = "Envoyer" />
</div>
</form>

<?php if (isset($info_formulaire) && count($info_formulaire) > 0)
{
foreach ($info_formulaire as $value) echo '<p>- '.$value.'</p>';
}
?>
Tu trouves pas ça plus simple ?

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 22:54
par nicolas17550
Oui c'est plus simple mais tu ne m'a pas expliqué comment faire pour associé deux images : Image et Image à deux boutons radios pour valeur $sexe et comment les affichés dans la page membre.php
Et dans la base de donnée comment je pourrais faire ??

Merci

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 23:36
par AB
Ben teste et tu verras bien le résultat dans ta bdd. Normalement si tu coche masculin tu devrais avoir 1 dans le champ sexe.

Ensuite
<?php
$sql = connect_sql();
$pseudo_membre = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM pdf_membre WHERE `pseudo`='$pseudo_membre'");
$result = mysql_fetch_array ($requete);

$id = $result['id'];
$pseudo = $result['pseudo'];
$mail = $result['mail'];
$born = $result['born'];
$nom = $result['nom'];
$prenom = $result['prenom'];
$pays = $result['pays'];
$sexe = $result['sexe'];

$adresse_image =  $sexe ==1 ? repertoire_image/image_sexe_masculin.jpg : repertoire_image/image_sexe_feminin.jpg;
/* On peut recuperer plus d'info si besoin */

?>
<?php include('protect/accueil.html'); ?>

<img src="<?php echo $adresse_image ?>"/>

Re: Associer une image à un bouton radio

Posté : 14 mai 2011, 23:49
par nicolas17550
Merci =)
Dans ma base de donnée je met "sexe" en nom de la colonne, mais le type de la colonne (text, varchar, ou enum ?) ainsi que l'interclassement, not null ou null etc....

Re: Associer une image à un bouton radio

Posté : 15 mai 2011, 00:08
par AB
moogli a déjà répondu.
Mets smallint comme type et par défaut not null si ce champ doit toujours être renseigné.