[RESOLU] Pb d'affichage de "radio" différents selon $data

Eléphant du PHP | 57 Messages

16 août 2012, 10:47

Bonjour :D

J'ai un souci et donc, encore une fois, besoin du regard d'un pro pour me débloquer. Merci d'avance pour votre aide.

Je voudrais que le formulaire de modification du profil des membres inscrits sur mon site soit prérempli avec les dernières informations que le membre a enregistré sur la bdd. J'y arrive déjà avec tous les champs :P ... sauf un ! #-o

Ce champs est de type "radio" (c'est le seul de tout le formulaire ! ceci explique cela !)

Voici le code que j'ai tenté :
 <p>	<!--modification du champs "sexe"    A MODIFIER (résoudre le problème du préremplissage (<=> checked mais en fonction des données préenregistrés) -->
	
	<?php
	//cas 1 : le membre a coché 'je suis un homme' lors de son inscription, donc la valeur de $data['sexe'] = 'un homme'. Je veux affiché le formulaire du choix du sexe avec la case "homme" précochée.
	
	if $data['sexe'] = 'un homme' { 
	<input type="radio" name="sexe" value="un homme" id="homme"
checked="checked" /> <label for="homme">un homme</label>
<input type="radio" name="sexe" value="une femme" id="femme" /> <label
for="femmme">une femme</label>;}

//cas 2 : le membre a coché 'je suis une femme' lors de son inscription, donc la valeur de $data['sexe'] = 'une femme'. Je veux affiché le formulaire du choix du sexe avec la case "femme" précochée.
else {
<input type="radio" name="sexe" value="un homme" id="homme"
 /> <label for="homme">un homme</label>
<input type="radio" name="sexe" value="une femme" id="femme" checked="checked" /> <label
for="femmme">une femme</label>}
	?>
		<br /><br /></p>  
Ce code est extrait de cette page (du moins la partie qui nous interesse ici !)
<h2>Modification du profil</h2>
<form method="post" action="formulaire_profil_complet_traitement.php">
<?php //recupération des données déjà enregistrées //
//récupération des données dans la base pour les afficher dans le tableau 
// connexion à la base 
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  
    mysql_select_db('gv2',$db)  or die('Erreur de selection '.mysql_error()); 
// preparation de la requete
$sql = ('SELECT * FROM membres WHERE pseudo="'.$_SESSION['login'].'"');
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
 $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
 // on récupère le résultat sous forme d'un tableau
$data = mysql_fetch_array($req); 

?>
<!-- formulaire pré-rempli prêt pour modif -->
<form>
<p>	<!--modification du champs "sexe"    A MODIFIER (résoudre le problème du préremplissage (<=> checked mais en fonction des données préenregistrés) -->
	
	<?php
	//cas 1 : le membre a coché 'je suis un homme' lors de son inscription, donc la valeur de $data['sexe'] = 'un homme'. Je veux affiché le formulaire du choix du sexe avec la case "homme" précochée.
	
	if $data['sexe'] = 'un homme' { 
	<input type="radio" name="sexe" value="un homme" id="homme"
checked="checked" /> <label for="homme">un homme</label>
<input type="radio" name="sexe" value="une femme" id="femme" /> <label
for="femmme">une femme</label>;}

//cas 2 : le membre a coché 'je suis une femme' lors de son inscription, donc la valeur de $data['sexe'] = 'une femme'. Je veux affiché le formulaire du choix du sexe avec la case "femme" précochée.
else {
<input type="radio" name="sexe" value="un homme" id="homme"
 /> <label for="homme">un homme</label>
<input type="radio" name="sexe" value="une femme" id="femme" checked="checked" /> <label
for="femmme">une femme</label>}
	?>
		<br /><br /></p>
<p> <!-- modification du champs "nom" -->
		
	<label for="nom">Votre nom</label> : <input type="text" name="nom" id="nom" value="<?php echo $data['nom']; ?>" /></p>
<p> <!-- modification du champs "prenom" -->
		
	<label for="prenom">Votre prénom</label> : <input type="text" name="prenom" id="prenom" value="<?php echo $data['prenom']; ?>" /></p>
<p> <!-- modification du champs "passions" -->
		
	Vos passions : <textarea name="passions" id="passions" > <?php echo $data['passions']; ?></textarea></p>
<p> <!-- modification du champs "localisation" -->
		
	<label for="localisation">Localisation</label> : <input type="text" name="localisation" id="localisation" value="<?php echo $data['localisation']; ?>" /></p>	
<p> <!-- modification du champs "date_naissance" -->
		
	<label for="date_naissance">Votre date de naissance</label> : <input type="date" name="date_naissance" id="date_naissance" value="<?php echo $data['date_naissance']; ?>" /></p>	
<p> <!-- modification du champs "email" et de son option 'confidentiel' associé -->
		
<label for="email">Votre email</label> : <input type="text" name="email" id="email" value="<?php echo $data['email']; ?>" />
	<!-- option 'option confidentiel" avec préremplissage par défaut sur "oui" -->
Voulez-vous cacher votre email aux autres membres ?
<input type="radio" name="confidentiel_email" value="oui" id="oui" checked="checked" /> <label for="oui">Oui</label>
<input type="radio" name="confidentiel_email" value="non" id="non" /> <label for="non">Non</label></p>	
<p> <!-- modification du champs "site" -->
		
	<label for="site">Votre site</label> : <input type="text" name="sie" id="site" value="<?php echo $data['site']; ?>" /></p>	
<p> <!-- modification du champs "adresse" -->
		
	<label for="adresse">Votre adresse postale</label> : <input type="text" name="adresse" id="adresse" value="<?php echo $data['adresse']; ?>" /></p>
<p> <!-- modification du champs "code_postal" -->
		
	<label for="code_postal">Votre code postal</label> : <input type="INT" name="code_postal" id="code_postal" value="<?php echo $data['code_postal']; ?>" /></p>
<p> <!-- modification du champs "pays" -->
		
	<label for="pays">Votre pays</label> : <input type="text" name="pays" id="pays" value="<?php echo $data['pays']; ?>" /></p>	
<p> <!-- modification du champs "signature" -->
		
	<label for="signature">Votre signature</label> : <input type="textarea" name="signature" id="signature" value="<?php echo $data['signature']; ?>" /></p>		
	
	<br /><br />
<p><!-- validation du formulaire-->
	<input type="submit" value="Envoyer" /></p>

</form>
 
Moi ça me paraissait logique mais apparemment ma logique ne plait pas à mon pc puisque il me vire toute ma page de formulaire pour me mettre un message d'erreur qui est :
( ! ) SCREAM: Error suppression ignored for
( ! ) Parse error: syntax error, unexpected '$data' (T_VARIABLE), expecting '(' in C:\wamp\www\mon_siteV6 d\tech\formulaire_profil_complet.php on line 47


La ligne 47 étant celle-ci
  if $data['sexe'] = 'un homme' {  
...

Je suspecte un problème de syntaxe d à l'incrustation du langage html (input) dans un code php (if ...else) mais je ne sais pas comment concilier les 2...

Merci d'avance pour votre aide (et désolée pour la longueur du message! )

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 août 2012, 10:55

salut,

ma première est : tu m'étonne :mrgreen: :mrgreen: :mrgreen:

quand tu regarde ton code rien ne te choque ?

comment fait on, en php, pour afficher quelque chose ?

si tu répond à cette question tu résous ton problème :)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 57 Messages

16 août 2012, 11:06

salut,

ma première est : tu m'étonne :mrgreen: :mrgreen: :mrgreen:
:mrgreen:
quand tu regarde ton code rien ne te choque ?
Si, je le vois bien qu'y a quelque chose qui cloche mais je sais pas quoi... En même temps , si je le savais, je serais pas là à vous solliciter hein :mrgreen:
comment fait on, en php, pour afficher quelque chose ?

si tu répond à cette question tu résous ton problème :)
@+
D'après le peu de connaissances en php que j'ai, on affiche avec echo (d'ailleurs j'y arrive très bien quand les $data sont de type text ou date ou int !) mais mes connaissances en php sont toutes petites !
J'ai essayé de mettre des echo (avant les input, à la place des input,) j'ai également pensé aux ; entre les différentes instructions : avec ou sans ; y'a toujours le même souci. Je sais plus quoi tenté.

ViPHP
xTG
ViPHP | 7331 Messages

16 août 2012, 11:09

Ah non pas le même souci justement si tu rajoutes un echo...
Au pire tu auras une erreur de syntaxe impliquant les quotes.

Exemple avec la coloration syntaxique :
echo "l'abbé pierrot";
echo 'l'abbé pierrot';

Eléphant du PHP | 57 Messages

16 août 2012, 11:14

sauf que ce que je veux afficher , ce n'est pas la valeur du $data, mais un radio dont le checked change en fonction de la valeur du $data. C'est ça que je ne sais pas faire...

nicos
Invité n'ayant pas de compte PHPfrance

16 août 2012, 11:53

Salut

tout d'abord si je ne m'abuse
if $data['sexe'] = 'un homme'  {
ca devrai plutôt être
if ($data['sexe'] == 'un homme' ){
ensuite tu melange le code php et html d'une mauvaise facon :

soit tu ferme tes balises php avant de mettre ton html (quand bien sûr c'est possible)
soit tu ecrit ton html dans ton php mais alors tu ne respecte pas la syntaxe

ex:

pour ecrire un input dans du php
echo "<input type='text' name='user_name' />"; 

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 août 2012, 12:06

soit tu ecrit ton html dans ton php mais alors tu ne respecte pas la syntaxe
qu'elle synataxe n'est pas respectée ?

si c'est HTML, sache simplement que tu peux échapper les " avec un \ ou simplement utiliser les simples quotes


<?php
        //cas 1 : le membre a coché 'je suis un homme' lors de son inscription, donc la valeur de $data['sexe'] = 'un homme'. Je veux affiché le formulaire du choix du sexe avec la case "homme" précochée.
        
        if ($data['sexe'] == 'un homme' ){ 
echo '<input type="radio" name="sexe" value="un homme" id="homme" checked="checked" /> <label for="homme">un homme</label>';
}
        if ($data['sexe'] == 'une femme' ){ 
echo '<input type="radio" name="sexe" value="une femme" id="femme" /> <label for="femmme">une femme</label>';}
Attention ceci est une source d'emmerde, tes "sexes" devraient plutôt être enregistré en tant que référence, simplement pour respecter un modèle relationnel et éviter d'avoir des données inutile en base (atomicité des informations :) ). c'est plus maintenable économique en place etc etc).


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 57 Messages

16 août 2012, 12:21

ok !

J'ai vu où étaient mes erreurs. effectivement c'etait bien des erreurs de syntaxe causées par mes faibles connaissances en php. Va falloir que je ralentisse la progression de mon site et que je me concentre un peu plus à retenir la syntaxe (les histoires de == à la place de =, ou l'absence/présence de ' selon le cas... ) y'a du boulot !

En tout cas, merci pour votre aide. Vous êtes géniaux ! je l'ai déjà dit ailleurs mais je le pense ! =D>