Archives FluxBB.fr

Les archives de FluxBB.fr

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

#1 05-10-2009 19:52:05

fanf73
Wik-wiki

Re : Ajout de 2 champs

La marche à suivre est assez simple :
- Créer le(s) champ(s) dans la table "users" qui contiendra l'information
- Modifier l'une des pages du profil pour que les membres puissent renseigner l'information (profile.php)
- Modification du traitement de ce formulaire pour enregistrer l'information (profile.ph)
- Voir après si tu affiches l'information dans les topics et dans le profil du membre (viewtopic.php et profile.php)
- Modification du fichier registrer.php si tu veux que l'on puisse renseigner l'information dès l'inscription.

Le plus simple est de regarder comment une mod fonctionne et s'en inspirer / la modifier (par exemple celle-ci http://www.punbb.fr/forums/viewtopic.php?id=9599 )


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#2 05-10-2009 20:12:58

fanf73
Wik-wiki

Re : Ajout de 2 champs

Tu cliques à gauche sur le nom de ta table (users), puis sur l'onglet "Structure". A la fin du tableau avec la structure se trouve un formulaire sur lequel tu spécifies "2" champs, puis exécuter.

Tu rentres le nom du champ dans la colonne champ, le type de champ dans type (varchar pour des caractères, int pour des chiffres), la longueur (nombre de caractère maximum pour varchar, 11 pour des chiffres), et la valeur par défaut dans défaut, puis sauvegarder.

Ou alors tu te créer un fichier "install_mod.php" qui le fait "tout seul" en t'inspirant d'un existant, par exemple cité dans mon précédent message.


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#3 05-10-2009 23:45:29

teopath
Habitué actif

Re : Ajout de 2 champs

J'ai rajouté des champ dans mon forum, là je vais rejoindre ma couette, mais demain je t'expliquerai

Hors ligne

#4 06-10-2009 12:52:28

teopath
Habitué actif

Re : Ajout de 2 champs

Pour les champs, avec PhpMyAdmin, pour le chiffre derrière varchar, tu mets la longueur que tu souhaite pour le champ.

A moins que tu ne mettes un chiffre et alors tu mets INT avec le nombre de chiffres souhaités ou tinyint pour mettre un flag.

Si tu veux que un champ text soit par défaut vide, tu sélection "NULL" pour rester dans l'esprit de punbb et sinon tu mets la valeur par defaut dans Défaut.

Quant tu as fait çà, on passe au code PHP

Hors ligne

#5 06-10-2009 13:02:25

fanf73
Wik-wiki

Re : Ajout de 2 champs

C'est pas comme si je n'avais pas détaillé juste au-dessus, Sudemax, je me demande pourquoi je prends la peine de le faire roll


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#6 06-10-2009 13:15:28

teopath
Habitué actif

Re : Ajout de 2 champs

Ensuite dans profile.php, (çà peut être fait dans d'autre page), mais puisque là c'est personalisé pour chaque membre, pourquoi se géner.

Il y a 3 phases :

Récupération des données du formulaire

Sauvegarde des données sur la base

Affichage du formulaire.

Pour ma part, j'ai ajouté les champs SIREN et ADELI, j'espère que tu sauras adapter à tes besoins.

Vers la ligne 750

derrière :

        case 'personal':
        {

ajouter dans la ligne les champs rajoutés :

            $form = extract_elements(array('realname', 'url', 'location', 'siren', 'adeli'));

vers la ligne 960

tu modifie $result en y ajoutant tes champs précédés de "u." (point de concaténation), çà donne :

$result = $db->query('SELECT u.username, u.email, u.title, u.realname, u.siren, u.adeli, 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());

Entre ces 2 lignes, si tu as un traitement des données saisie, tu peux le rajouter en php.

Hors ligne

#7 06-10-2009 13:30:26

teopath
Habitué actif

Re : Ajout de 2 champs

Reste le formulaire, c'est je pense la partie la plus hardue, car si faire un formulaire c'est tout simple, dans le cas présent il faut savoir à qui ces informations sont visibles.

Au membre, aux modérateurs, à l'admin, à tous ?

Pour ma part je l'ai rendu visible au membre uniquement

Je l'ai mis dans la section personal, je te donne tous le code, à toi de modifier

    else if ($section == 'personal')
    {
        if ($pun_user['g_set_title'] == '1')
            $title_field = '<label>'.$lang_common['Title'].'  (<em>'.$lang_profile['Leave blank'].'</em>)<br /><input type="text" name="title" value="'.pun_htmlspecialchars($user['title']).'" size="30" maxlength="50" /><br /></label>'."\n";

        $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / '.$lang_common['Profile'];
        require PUN_ROOT.'header.php';

        generate_profile_menu('personal');

?>
    <div class="blockform">
        <h2><span><?php echo pun_htmlspecialchars($user['username']).' - '.$lang_profile['Section personal'] ?></span></h2>
        <div class="box">
            <form id="profile2" method="post" action="profile.php?section=personal&id=<?php echo $id ?>">
                <div class="inform">
                    <fieldset>
                        <legend><?php echo $lang_profile['Personal details legend'] ?></legend>
                        <div class="infldset">
                            <input type="hidden" name="form_sent" value="1" />
                            <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 ?>
<?php endif; ?>                            <label><?php echo $lang_profile['Location'] ?><br /><input type="text" name="form[location]" value="<?php echo pun_htmlspecialchars($user['location']) ?>" size="30" maxlength="30" /><br /></label>
                            <label><?php echo $lang_profile['Website'] ?><br /><input type="text" name="form[url]" value="<?php echo pun_htmlspecialchars($user['url']) ?>" size="50" maxlength="80" /><br /></label>
                        </div>
                    </fieldset>
                </div>

<?php // ---------------- Début saisie SIREN et ADELI ------------ ?>

<?php if (($pun_user['id'] == $id) && (strlen($user['siren']) == '0') && (strlen($user['adeli']) == '0')): ?>
                <div class="inform">
                    <fieldset>
                        <legend>Si vous êtes un ostéopathe en activité, veuillez saisir votre SIREN (9 chiffres) ainsi que votre numéro ADELI (9 chiffres).</legend>
                        <div class="infldset">
                            <p>En aucune façon, vos SIREN et ADELI n'apparaitront en ligne, la saisie de ceux ci ne servant qu'à écarter les robots, une routine d'évaluation automatique rejetant les numéros fantaisistes.</p>
                            <label><strong>N° SIREN : </strong><input type="text" name="form[siren]" value="<?php echo pun_htmlspecialchars($user['siren']) ?>" size="9" maxlength="9" /></label>
                            <label><strong>N° ADELI : </strong><input type="text" name="form[adeli]" value="<?php echo pun_htmlspecialchars($user['adeli']) ?>" size="9" maxlength="9" /></label>
                        </div>
                    </fieldset>
                </div>
<?php endif; ?>

<?php // ---------------- Fin saisie SIREN et ADELI -------------- ?>

                <p><input type="submit" name="update" value="<?php echo $lang_common['Submit'] ?>" /><?php echo $lang_profile['Instructions'] ?></p>
            </form>
        </div>
    </div>
<?php

    }

Hors ligne

#8 06-10-2009 16:38:44

teopath
Habitué actif

Re : Ajout de 2 champs

C'est parceque tu n'as pas lu mon code, il faut tester la longueur des variables et tu n'affiche que si la longueur est supérieure à zéro

Hors ligne

#9 27-01-2010 00:55:19

agony
Membre

Re : Ajout de 2 champs

Merci ! Je viens d'ajouter des champs également !
C'est parfait. Je n'ai pas compris par contre à quoi sert le champ de langue lorsque l'on créé un nouveau champ.

J'aurai aimé passer en gras les intitulés d'origines: pour les ajouts, nous avons par ex :
ville: Tagadaland
Date d'inscription: 54 avant JC
passion: la couture
couleurs des yeux: mauve

Je vois que ça se passe dans le viewtopic.php à cette ligne :
<?php if (count($user_info)) echo "\t\t\t\t\t".implode('</dd>'."\n\t\t\t\t\t", $user_info).'</dd>'."\n"; ?>

mais je ne sais pas l'interpréter.

Dernière modification par agony (27-01-2010 00:55:49)

Hors ligne

Pied de page des forums