Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Bonjour,
Ce tuto va vous expliquer comment ajouter des champs dans votre register.php (page d'inscription) comme par exemple l'age, le sexe du membre, un lien vers un second forum ou une photo personnelle.
Cette valeur sera enregistrer dans la table users, et pourra être modifier depuis le profil.
On pourra l'apercevoir dans le viewtopic, et le profil du membre.
Ce tuto va modifier:
- la BDD
- register.php
- viewtopic.php
- profile.php
- lang/french/profile.php
- lang/french/topic.php
- lang/french/register.php
Tout d'abord, on va prendre comme exemple le fait d'ajouter un lien vers une photo personnelle. Bien entendu cette "mod" pourra s'adapter à vos besoin, à vous de changer les noms et valeurs 
1) Ajouter dans la table user, un champ nommé "lien_photo" (nom que vous pouvez changer) en VARCHAR 200, si vous ne savez pas comment faire pour ajouter un champ dans la BDD, suivez ce tuto http://www.siteduzero.com/tutoriel-3-14 … admin.html
Dans le fichier register.php
2) Rechercher (ligne 197 environ) :
// Add the user
$db->query('INSERT INTO '.$db->prefix.'users (username, group_id, password, email, email_setting, save_pass, timezone, language, style, registered, registration_ip, last_visit) VALUES(\''.$db->escape($username).'\', '.$intial_group_id.', \''.$password_hash.'\', \''.$email1.'\', '.$email_setting.', '.$save_pass.', '.$timezone.' , \''.$db->escape($language).'\', \''.$pun_config['o_default_style'].'\', '.$now.', \''.get_remote_address().'\', '.$now.')') or error('Unable to create user', __FILE__, __LINE__, $db->error());
$new_uid = $db->insert_id();Et remplacer par :
<?php
//Variable de la mod
$lien_photo = $db->escape($_POST['lien_photo']);
// Add the user
$db->query('INSERT INTO '.$db->prefix.'users (`username`, `group_id`, `password`, `email`, `email_setting`, `save_pass`, `timezone`, `language`, `style`, `registered`, `registration_ip`, `last_visit`, `lien_photo`)
VALUES(\''.$db->escape($username).'\', '.$intial_group_id.', \''.$password_hash.'\', \''.$email1.'\', '.$email_setting.', '.$save_pass.', '.$timezone.' , \''.$db->escape($language).'\',
\''.$pun_config['o_default_style'].'\', '.$now.', \''.get_remote_address().'\', '.$now.',"'.$lien_photo.'")') or error('Unable to create user', __FILE__, __LINE__, $db->error());
?>3) Rechercher (ligne 295 environ) :
<div class="inform">
<fieldset>
<legend><?php echo ($pun_config['o_regs_verify'] == '1') ? $lang_prof_reg['E-mail legend 2'] : $lang_prof_reg['E-mail legend'] ?></legend>
<div class="infldset">
<?php if ($pun_config['o_regs_verify'] == '1'): ?> <p><?php echo $lang_register['E-mail info'] ?></p>
<?php endif; ?> <label><strong><?php echo $lang_common['E-mail'] ?></strong><br />
<input type="text" name="req_email1" size="50" maxlength="50" /><br /></label>
<?php if ($pun_config['o_regs_verify'] == '1'): ?> <label><strong><?php echo $lang_register['Confirm e-mail'] ?></strong><br />
<input type="text" name="req_email2" size="50" maxlength="50" /><br /></label>
<?php endif; ?> </div>
</fieldset>
</div>Ajouter a la suite :
<div class="inform">
<fieldset>
<legend><?php echo $lang_register['photo_legend'] ?></legend>
<div class="infldset">
<label class="conl"><strong><?php echo $lang_register['lien_photo'] ?></strong><br /><input type="text" name="lien_photo" size="200" maxlength="200" /><br /></label>
</div>
</fieldset>
</div>Dans le fichier profile.php
4) Chercher (ligne 749 environ) :
$form = extract_elements(array('realname', 'url', 'location'));Et remplacer par :
$form = extract_elements(array('realname', 'url', 'location', 'lien_photo'));5)Chercher (ligne 908 environ) :
$result = $db->query('SELECT u.username, u.email, u.title, u.realname, u.url, u.jabber, u.icq, u.msn, u.aim, u.yahoo, u.location, u.use_avatar, u.signature, u.disp_topics, u.disp_posts, u.email_setting, u.save_pass, u.notify_with_post, u.show_smilies, u.show_img, u.show_img_sig, u.show_avatars, u.show_sig, u.timezone, u.language, u.style, u.num_posts, u.last_post, u.registered, u.registration_ip, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id='.$id) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());Remplacer par :
$result = $db->query('SELECT u.username, u.email, u.title, u.realname, u.lien_photo, u.url, u.jabber, u.icq, u.msn, u.aim, u.yahoo, u.location, u.use_avatar, u.signature, u.disp_topics, u.disp_posts, u.email_setting, u.save_pass, u.notify_with_post, u.show_smilies, u.show_img, u.show_img_sig, u.show_avatars, u.show_sig, u.timezone, u.language, u.style, u.num_posts, u.last_post, u.registered, u.registration_ip, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id='.$id) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());6) Chercher (ligne 938 environ) :
if ($user['url'] != '')
{
$user['url'] = pun_htmlspecialchars($user['url']);
if ($pun_config['o_censoring'] == '1')
$user['url'] = censor_words($user['url']);
$url = '<a href="'.$user['url'].'">'.$user['url'].'</a>';
}
else
$url = $lang_profile['Unknown'];Ajouter avant :
if ($user['lien_photo'] != '')
{
$lien_photo = pun_htmlspecialchars($user['lien_photo']);
$lien_photo = '<img src="'.$user['lien_photo'].'"></img>';
}
else
$url = $lang_profile['Unknown'];7) Chercher (ligne 987 environ) :
<dt><?php echo $lang_common['Username'] ?>: </dt>
<dd><?php echo pun_htmlspecialchars($user['username']) ?></dd>
<dt><?php echo $lang_common['Title'] ?>: </dt>
<dd><?php echo ($pun_config['o_censoring'] == '1') ? censor_words($user_title_field) : $user_title_field; ?></dd>
<dt><?php echo $lang_profile['Realname'] ?>: </dt>
<dd><?php echo ($user['realname'] !='') ? pun_htmlspecialchars(($pun_config['o_censoring'] == '1') ? censor_words($user['realname']) : $user['realname']) : $lang_profile['Unknown']; ?></dd>
<dt><?php echo $lang_profile['Location'] ?>: </dt>
<dd><?php echo ($user['location'] !='') ? pun_htmlspecialchars(($pun_config['o_censoring'] == '1') ? censor_words($user['location']) : $user['location']) : $lang_profile['Unknown']; ?></dd>Ajouter juste après :
<dt><?php echo $lang_profile['lien_photo'] ?>: </dt>
<dd><?php echo pun_htmlspecialchars($lien_photo) ?> </dd>8) Chercher (ligne 1256 environ) :
<label><?php echo $lang_profile['Realname'] ?><br /><input type="text" name="form[realname]" value="<?php echo pun_htmlspecialchars($user['realname']) ?>" size="40" maxlength="40" /><br /></label>
<?php if (isset($title_field)): ?> <?php echo $title_field ?>Ajouter ensuite :
<label><?php echo $lang_profile['lien_photo'] ?><br /><input type="text" name="form[lien_photo]" value="<?php echo pun_htmlspecialchars($user['lien_photo']) ?>" size="200" maxlength="200" /><br /></label>Dans le viewtopic.php :
9) Chercher (ligne 186 environ) :
$result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], true) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());Remplacer par :
$result = $db->query('SELECT u.email, u.title, u.url, u.location, u.lien_photo, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], true) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());10) Chercher (ligne 237 environ) :
// Now let's deal with the contact links (E-mail and URL)
if (($cur_post['email_setting'] == '0' && !$pun_user['is_guest']) || $pun_user['g_id'] < PUN_GUEST)
$user_contacts[] = '<a href="mailto:'.$cur_post['email'].'">'.$lang_common['E-mail'].'</a>';
else if ($cur_post['email_setting'] == '1' && !$pun_user['is_guest'])
$user_contacts[] = '<a href="misc.php?email='.$cur_post['poster_id'].'">'.$lang_common['E-mail'].'</a>';Ajouter au dessus : (mettre des balise img si vous voulez afficher l'image)
// Lien vers la photo
if ($cur_post['lien_photo'] != '')
{
$cur_post['lien_photo'] = pun_htmlspecialchars($cur_post['lien_photo']);
$user_info[] = '<a href="'.$cur_post['lien_photo'].'">'.$lang_topic['lien_photo'].'</a>';
}
else echo '';Dans le fichier lang/french/profile.php :
11) Chercher (ligne 72 environ) :
// Profile display stuffAjouter ensuite :
'lien_photo' => 'Photo ',Dans le fichier lang/french/topic.php :
12) Chercher (ligne 4 environ) :
// Language definitions used in viewtopic.php
$lang_topic = array(Ajouter ensuite :
'lien_photo' => 'Photo :',Dans le fichier lang/french/register.php :
13) Chercher (ligne 34 environ) :
'Confirm e-mail' => 'Confirmez votre adresse de courriel',Ajouter ensuite :
// Photo
'lien_photo' => 'Lien de la photo :',
'photo_legend' => 'Veuillez entrer l\'url de votre photo :',J'espère que ce tuto vous servira 
Les possibilités sont infini, donc ne vous arrêter pas là 
Si vous avez des questions n'hésitez pas surtout, et pour ne pas vous trompez et faire des erreurs, veuillez lire une première fois en entier, puis vérifier après avoir fini 
PS : J'ai pas vu de tuto dans le même genre pour phpmyadmin, mais s'il y en a un sur le forum, je changerais le lien 
Dernière modification par WinuX (27-01-2011 00:20:11)
Hors ligne
De rien 
Hors ligne
Bien comme tuto.
2 petites remarques :
- pour un lien, 50 caractères, c'est pas beaucoup
- dans la partie à ajouter en 2), c'est plutôt un $db->escape qu'un pun_htmlspecialchars qu'il faudrait lors de l'envoi en bdd. (et doit manquer des guillemets dans la requête, non ?)
Bouh !
StarShip Renaissance
Hors ligne
J'ai mis 50 caractère car c'est un exemple je sais pas exactement combien de caractère mettre 
Je vais augmenter à 200, ca suffira amplement 
Pour le $db->escape c'est bien la première fois que j'le rencontre en mysql, donc je vais te faire confiance 
Merci pour les conseils 
Hors ligne
Hors ligne
J'avoue, ça ne peut t'être que bénéfique 
En tout cas c'est corriger 
Manquait une apostrophe, et yavait une parenthèse en trop.
Florider, si t'as une erreur, google est ton ami, crois moi, ya toujours une solution 
Hors ligne
Il est réaliste et dis ça pour t'aider avant tout 
Il est pas non plus là pour t'enfoncer, il n'a rien à y gagner (j'me trompe Adaur?
)
Hors ligne
Non, j'ai aucun intérêt à enfoncer les gens! Au lieu d'appeler à l'aide de suite, pause toi quelques secondes devant ton code, la solution à ce genre de problème est la plupart du temps assez simple... 
Hors ligne
ya pas de parenthèse mais en effet j'ai oublié les points 
Quand à la guillemet, elle y est normalement par défaut, mais je vérifie tout ca et je corrige 
Hors ligne
Et si, au lieu de copier/coller tes erreurs, tu y regardais de plus près afin de t'améliorer?
Je ne pense pas que cette réponse sois sympa
Elle est néanmoins justifiée, au vu des derniers messages, et je comprends "l'énervement" d'adaur.
Quand on aide quelqu'un, c'est AUSSI pour lui apprendre à s'aider soi-même (voire les autres). S'il n'y a pas de réaction (ne serait-ce que minimale, comme examiner les lignes ou lancer l'aide PHP) en face, c'est décourageant globalement, et énervant par rapport à "l'aidé".
Hors ligne
Sympa l'astuce 
Hors ligne
T'as pas vu que tu étais dans la catégorie trucs et astuces ??? 
Heureusement que tout le monde n'est pas comme toi sinon vlà la modération qui y aurait à faire.
Hors ligne
Ta première demande était basé sur le tuto oui, maintenant c facile de modifier ton deuxième reply et de faire le canard !
Je n'ai rien contre toi,en vrai osef de toi lol, c'est juste que comme d'hab, tu viens crier au secours sans même réfléchir a tes éventuelles erreurs ! Winux t'as même aider (modif de ton premier message), c'est pour dire à quel point tu dois harceler tous tes contacts en plus de ton reply d'aide posté ici ...
Perso des gars comme toi me gave (ceux qui ne cherche même pas a comprendre l'erreur, etc...) ... Donc je ne peux m'empêcher de répliqué 
Dernière modification par Guims (27-01-2011 20:20:16)
Hors ligne
Stop vos querelles puériles, la vie est presque belle parfois..
Le sujet est réglé. Oui il aurait du chercher plus loin son erreur, d'ailleurs j'lui ai conseillé d'arrêter de coder son forum pour se mettre sérieusement au php.
Maintenant restons en au sujet initial 
Hors ligne
WinuX
Hors ligne