Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 23-09-2010 08:57:42

WinuX
Membre

[Css] Ajouter des champs lors de l'inscription

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 wink


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) ?>&nbsp;</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 stuff

Ajouter 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 wink
Les possibilités sont infini, donc ne vous arrêter pas là wink
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 wink

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 wink

Dernière modification par WinuX (27-01-2011 00:20:11)

Hors ligne

#2 23-09-2010 15:00:06

WinuX
Membre

Re : [Css] Ajouter des champs lors de l'inscription

De rien wink

Hors ligne

#3 23-09-2010 17:30:39

PascL
Membre

Re : [Css] Ajouter des champs lors de l'inscription

Bien comme tuto.

2 petites remarques :
- pour un lien, 50 caractères, c'est pas beaucoup smile
- 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 ?)

Hors ligne

#4 23-09-2010 18:37:10

WinuX
Membre

Re : [Css] Ajouter des champs lors de l'inscription

J'ai mis 50 caractère car c'est un exemple je sais pas exactement combien de caractère mettre happy

Je vais augmenter à 200, ca suffira amplement happy

Pour le $db->escape c'est bien la première fois que j'le rencontre en mysql, donc je vais te faire confiance wink

Merci pour les conseils wink

Hors ligne

#5 23-09-2010 19:02:51

adaur
Membre

Re : [Css] Ajouter des champs lors de l'inscription

Et si, au lieu de copier/coller tes erreurs, tu y regardais de plus près afin de t'améliorer?


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#6 23-09-2010 19:08:04

WinuX
Membre

Re : [Css] Ajouter des champs lors de l'inscription

J'avoue, ça ne peut t'être que bénéfique wink
En tout cas c'est corriger wink

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 wink

Hors ligne

#7 23-09-2010 19:18:41

WinuX
Membre

Re : [Css] Ajouter des champs lors de l'inscription

Il est réaliste et dis ça pour t'aider avant tout wink
Il est pas non plus là pour t'enfoncer, il n'a rien à y gagner (j'me trompe Adaur? happy)

Hors ligne

#8 23-09-2010 19:25:00

adaur
Membre

Re : [Css] Ajouter des champs lors de l'inscription

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... wink


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#9 23-09-2010 19:35:51

WinuX
Membre

Re : [Css] Ajouter des champs lors de l'inscription

ya pas de parenthèse mais en effet j'ai oublié les points wink

Quand à la guillemet, elle y est normalement par défaut, mais je vérifie tout ca et je corrige happy

Hors ligne

#10 24-09-2010 04:10:39

Mpok
Néo Admin

Re : [Css] Ajouter des champs lors de l'inscription

Florider a écrit :

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 happy

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

#11 27-09-2010 22:16:30

#KiRà
Membre

Re : [Css] Ajouter des champs lors de l'inscription

Sympa l'astuce smile

Hors ligne

#12 27-01-2011 20:01:44

Guims
Membre

Re : [Css] Ajouter des champs lors de l'inscription

T'as pas vu que tu étais dans la catégorie trucs et astuces ??? siffle

Heureusement que tout le monde n'est pas comme toi sinon vlà la modération qui y aurait à faire.

Hors ligne

#13 27-01-2011 20:19:21

Guims
Membre

Re : [Css] Ajouter des champs lors de l'inscription

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

#14 27-01-2011 20:54:02

WinuX
Membre

Re : [Css] Ajouter des champs lors de l'inscription

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 smile

Hors ligne

#15 28-01-2011 09:19:19

Mpok
Néo Admin

Re : [Css] Ajouter des champs lors de l'inscription

plus_un WinuX

Hors ligne

Pied de page des forums