Fork me on GitHub

Rapport de message :*
 

Menu deroulant

Titre du sujet : Menu deroulant
par eparcyl92 sur 18/09/2006 06:41:56

Bonjour,
Je n'ai pas dormi de la nuit pour creer deux cases pour les inscriptions de mon site, en suivant les instructions et je me retrouve devant une belle page blanche.

Quelqu'un peut il me dire ou j'ai fait une erreur??? (j(vais m'faire disputé)

Création d’un menu déroulant, permettant de gérer le ‘genre’
(monsieur, madame, mademoiselle)

Création d’un menu déroulant, permettant de gérer le ‘age’
(18-20, 20-25, 25-30, 35-40, 45-50, 55-60, 60-65, 65-70, 70-75, 75-80)


Dans la base de données, insérer un champs ‘genre’ après le champs ‘uname’.
Vous pouvez utiliser la syntaxe suivante avec phpmyadmin par exemple. (en adaptant le nom de la table).


ALTER TABLE `xoops20131_users` ADD `genre` VARCHAR( 12 ) NOT NULL AFTER `uname` ;
J’ai limité le varchar à 12, car la valeur la plus longue ne dépasse pas ce nombre. A modifier selon les valeurs
prévues dans le menu déroulant (et qui seront ajoutées dans la base de données).

*******************************************
Fichier userinfo.php
*******************************************
Vers la ligne 96, ajouter à l’emplacement où l’on veut voir apparaître le menu déroulant le code suivant :
(dans mon cas, sous le pseudo choisi)

$xoopsTpl->assign('lang_genre', _US_GENRE);
$usergenre =& $thisUser->genre();
$xoopsTpl->assign('user_genre', $usergenre);

$xoopsTpl->assign('lang_age', _US_AGE);
$userage =& $thisUser->age();
$xoopsTpl->assign('user_age', $userage);

*************************************************************************************************
Fichier register.php
*************************************************************************************************
Vers la ligne 60, sous :
$uname = xoops_trim($uname);

Ajouter :
$genre = xoops_trim($genre);
$age = xoops_trim($age);

Vers la ligne 120, ajouter :
$genre = isset($_POST['genre']) ? $myts->stripSlashesGPC($_POST['genre']) : '';
$age = isset($_POST['age']) ? $myts->stripSlashesGPC($_POST['age']) : '';

Vers la ligne 144, sous :
echo _US_USERNAME.": ".$myts->htmlSpecialChars($uname)."<br />";

Ajouter :
echo _US_GENRE.": ".$genre."<br />";
echo _US_AGE.": ".$age."<br />";

Vers la ligne 154, sous :
<input type='hidden' name='uname' value='".$myts->htmlSpecialChars($uname)."' />


Ajouter :
<input type='hidden' name='genre' value='".$myts->htmlSpecialChars($genre)."' />
<input type='hidden' name='age' value='".$myts->htmlSpecialChars($age)."' />

Vers la ligne 182, sous :
$newuser->setVar('uname', $uname, true);

Ajouter :
$newuser->setVar('genre', $genre);
$newuser->setVar('age', $age);

Vers la ligne 235, sous :
$xoopsMailer->assign('USERNAME', $uname);

Ajouter :
$xoopsMailer->assign('GENRE', $genre);
$xoopsMailer->assign('AGE', $age);
**********************************
Fichier edituser.php
**********************************
Vers la ligne 101, sous :
$edituser->setVar('name', $_POST['name']);

Ajouter :
$edituser->setVar('genre', $genre);
$edituser->setVar('age', $age);

Vers la ligne 153, sous :
$form->addElement($uname_label);


Ajouter :
$genre_select = new XoopsFormSelectGenre(_US_GENRE, 'genre', $xoopsUser->getVar('genre'));
$form->addElement($genre_select);
$age_select = new XoopsFormSelectage(_US_AGE, 'age', $xoopsUser->getVar('age'));
$form->addElement($age_select);
*****************************************
Fichier include/functions.php
*****************************************
Vers la ligne 542, ajouter :

function xoops_getgenre($genre_id =0)
{


switch ($genre_id) {
case 'Monsieur':
$genre_lib = _US_GENRE_MAN;
break;
case 'Madame':
$genre_lib = _US_GENRE_WOMAN;
break;
case 'Mademoiselle':
$genre_lib = _US_GENRE_MISS;
break;
default:
$genre_lib = _US_GENRE_MAN;
break;
}


return $genre_lib;
}

===========pour age================
function xoops_getage($age_id =0)
{

switch ($age_id) {
case '18-20':
$age_lib = _US_AGE_18-20;
break;
case '20-25':
$age_lib = _US_AGE_20-25;
break;
case '25-30':
$age_lib = _US_AGE_25-30;
break;
case '30_35':
$age_lib = _US_AGE_30-35;
break;
case '35-40':
$age_lib = _US_AGE_35-40;
break;
case '40-45':
$age_lib = _US_AGE_18-20;
break;
case '45-50':
$age_lib = _US_AGE_45-50;
break;
case '50-55':
$age_lib = _US_AGE_50-55;
break;
case '55-60':
$age_lib = _US_AGE_55-60;
break;
case '60-65':
$age_lib = _US_AGE_60-65;
break;
case '65-70':
$age_lib = _US_AGE_65-70;
break;
case '70-75':
$age_lib = _US_AGE_70-75;
break;
case '75-80':
$age_lib = _US_AGE_75-80;
break;
case '80-85':
$age_lib = _US_AGE_80-85;
break;
case '85-90':
$age_lib = _US_AGE_85-90;
break;
case '90-95':
$age_lib = _US_AGE_90-95;
break;
case '95-100':
$age_lib = _US_AGE_95-100;
break;
default:
$age_lib = _US_AGE_18-20;
break;
}


return $genre_lib;
}
***************************************************
Fichier include/registerform.php
***************************************************
Vers la ligne 72, sous
$reg_form->addElement(new XoopsFormText(_US_NICKNAME, "uname", $uname_size, $uname_size,
$myts->htmlSpecialChars($uname)), true);


Ajouter :
$reg_form->addElement(new XoopsFormSelectGenre(_US_GENRE, "genre", $genre));
$reg_form->addElement(new XoopsFormSelectAge(_US_AGE, "age", $age));

****************************************
Fichier kernel/user.php
****************************************
Vers la ligne 74, sous :
$this->initVar('uname', XOBJ_DTYPE_TXTBOX, null, true, 25);


Ajouter :
$this->initVar('genre', XOBJ_DTYPE_OTHER, null, false);
$this->initVar('age', XOBJ_DTYPE_OTHER, null, false);

Vers la ligne 270, ajouter :

function genre()
{
$this->_genre = xoops_getgenre($this->getVar('genre'));
return $this->_genre;
}
=========pour age==============
function age()
{
$this->_age = xoops_getage($this->getVar('age'));
return $this->_age;
}

Vers la ligne 531 :

Remplacer :

if ($user->isNew()) {

$uid = $this->db->genId($this->db->prefix('users').'_uid_seq');

$sql = sprintf("INSERT INTO %s (uid, uname, name, email, url, user_avatar, user_regdate, user_icq,
user_from, user_sig, user_viewemail, actkey, user_aim, user_yim, user_msnm, pass, posts, attachsig, rank, level,
theme, timezone_offset, last_login, umode, uorder, notify_method, notify_mode, user_occ, bio, user_intrest,
user_mailok) VALUES (%u, %s, %s, %s, %s, %s, %u, %s, %s, %s, %u, %s, %s, %s, %s, %s, %u, %u, %u, %u,
%s, %.2f, %u, %s, %u, %u, %u, %s, %s, %s, %u)", $this->db->prefix('users'), $uid, $this->db>
quoteString($uname), $this->db->quoteString($name), $this->db->quoteString($email), $this->db>
quoteString($url), $this->db->quoteString($user_avatar), time(), $this->db->quoteString($user_icq), $this->db>
quoteString($user_from), $this->db->quoteString($user_sig), $user_viewemail, $this->db>
quoteString($actkey), $this->db->quoteString($user_aim), $this->db->quoteString($user_yim), $this->db>
quoteString($user_msnm), $this->db->quoteString($pass), $posts, $attachsig, $rank, $level, $this->db>
quoteString($theme), $timezone_offset, 0, $this->db->quoteString($umode), $uorder, $notify_method,
$notify_mode, $this->db->quoteString($user_occ), $this->db->quoteString($bio), $this->db>
quoteString($user_intrest), $user_mailok);

} else {

$sql = sprintf("UPDATE %s SET uname = %s, name = %s, email = %s, url = %s, user_avatar = %s,
user_icq = %s, user_from = %s, user_sig = %s, user_viewemail = %u, user_aim = %s, user_yim = %s,
user_msnm = %s, posts = %d, pass = %s, attachsig = %u, rank = %u, level= %u, theme = %s, timezone_offset =
%.2f, umode = %s, last_login = %u, uorder = %u, notify_method = %u, notify_mode = %u, user_occ = %s, bio
= %s, user_intrest = %s, user_mailok = %u WHERE uid = %u", $this->db->prefix('users'), $this->db>
quoteString($uname), $this->db->quoteString($name), $this->db->quoteString($email), $this->db>
quoteString($url), $this->db->quoteString($user_avatar), $this->db->quoteString($user_icq), $this->db>
quoteString($user_from), $this->db->quoteString($user_sig), $user_viewemail, $this->db>
quoteString($user_aim), $this->db->quoteString($user_yim), $this->db->quoteString($user_msnm), $posts,
$this->db->quoteString($pass), $attachsig, $rank, $level, $this->db->quoteString($theme), $timezone_offset,
$this->db->quoteString($umode), $last_login, $uorder, $notify_method, $notify_mode, $this->db>
quoteString($user_occ), $this->db->quoteString($bio), $this->db->quoteString($user_intrest), $user_mailok,
$uid);

}

Par :

if ($user->isNew()) {

$uid = $this->db->genId($this->db->prefix('users').'_uid_seq');

$sql = sprintf("INSERT INTO %s (uid, uname, name, genre, age, email, url, user_avatar, user_regdate,
user_icq, user_from, user_sig, user_viewemail, actkey, user_aim, user_yim, user_msnm, pass, posts, attachsig,
rank, level, theme, timezone_offset, last_login, umode, uorder, notify_method, notify_mode, user_occ, bio,
user_intrest, user_mailok) VALUES (%u, %s, %s, %s, %s, %s, %s, %u, %s, %s, %s, %u, %s, %s, %s, %s, %s,
%u, %u, %u, %u, %s, %.2f, %u, %s, %u, %u, %u, %s, %s, %s, %u)", $this->db->prefix('users'), $uid, $this>
db->quoteString($uname), $this->db->quoteString($name), $this->db->quoteString($genre), $this->db->quoteString($age), $this->db>
quoteString($email), $this->db->quoteString($url), $this->db->quoteString($user_avatar), time(), $this->db>
quoteString($user_icq), $this->db->quoteString($user_from), $this->db->quoteString($user_sig),
$user_viewemail, $this->db->quoteString($actkey), $this->db->quoteString($user_aim), $this->db>
quoteString($user_yim), $this->db->quoteString($user_msnm), $this->db->quoteString($pass), $posts,
$attachsig, $rank, $level, $this->db->quoteString($theme), $timezone_offset, 0, $this->db>
quoteString($umode), $uorder, $notify_method, $notify_mode, $this->db->quoteString($user_occ), $this->db>
quoteString($bio), $this->db->quoteString($user_intrest), $user_mailok);

} else {

$sql = sprintf("UPDATE %s SET uname = %s, name = %s, genre = %s, name = %s, age = %s, email = %s, url = %s,
user_avatar = %s, user_icq = %s, user_from = %s, user_sig = %s, user_viewemail = %u, user_aim = %s,
user_yim = %s, user_msnm = %s, posts = %d, pass = %s, attachsig = %u, rank = %u, level= %u, theme = %s,
timezone_offset = %.2f, umode = %s, last_login = %u, uorder = %u, notify_method = %u, notify_mode = %u,
user_occ = %s, bio = %s, user_intrest = %s, user_mailok = %u WHERE uid = %u", $this->db->prefix('users'),
$this->db->quoteString($uname), $this->db->quoteString($name), $this->db->quoteString($genre), $this->db->quoteString($age), $this->db>
quoteString($email), $this->db->quoteString($url), $this->db->quoteString($user_avatar), $this->db>
quoteString($user_icq), $this->db->quoteString($user_from), $this->db->quoteString($user_sig),
$user_viewemail, $this->db->quoteString($user_aim), $this->db->quoteString($user_yim), $this->db>
quoteString($user_msnm), $posts, $this->db->quoteString($pass), $attachsig, $rank, $level, $this->db>
quoteString($theme), $timezone_offset, $this->db->quoteString($umode), $last_login, $uorder,
$notify_method, $notify_mode, $this->db->quoteString($user_occ), $this->db->quoteString($bio), $this->db>
quoteString($user_intrest), $user_mailok, $uid);

}

Ordre d’insertion de la variable genre important.
**************************************
Fichier class/xoopslists.php
**************************************
Vers la ligne 37, ajouter, juste après l’accolade :

function &getGenreList()
{
include_once XOOPS_ROOT_PATH.'/language/'.$GLOBALS['xoopsConfig']['language'].'/user.php';
$genre_list = array ("Monsieur" => _US_GENRE_MAN, "Madame" => _US_GENRE_WOMAN,

"Mademoiselle" => _US_GENRE_MISS);
return $genre_list;
}
===========pour age============
function &getageList()
{
include_once XOOPS_ROOT_PATH.'/language/'.$GLOBALS['xoopsConfig']['language'].'/user.php';
$age_list = array ("18-20" => _US_AGE_18-20, "20-25" => _US_AGE_20-25, "25-30" => _US_AGE_25-30, "30-35" => _US_AGE_30-35, "35-40" => _US_AGE_35-40, "40-45" => _US_AGE_40-45, "45-50" => _US_AGE_45-50, "50-55" => _US_AGE_50-55, "55-60" => _US_AGE_55-60, "60-65" => _US_AGE_60-65, "65-70" => _US_AGE_65-70, "70-75" => _US_AGE_70-75, "75-80" => _US_AGE_75-80, "80-85" => _US_AGE_80-85, "85-90" => _US_AGE_85-90, "90-95" => _US_AGE_90-95, "95-100" => _US_AGE_95-100);
return $age_list;
}
********************************************
Fichier class/xoopsformloader.php
********************************************
Vers la ligne 34, sous :
include_once XOOPS_ROOT_PATH."/class/xoopsform/formhiddentoken.php";


Ajouter :
include_once XOOPS_ROOT_PATH."/class/xoopsform/formselectgenre.php";
include_once XOOPS_ROOT_PATH."/class/xoopsform/formselectage.php";

****************************************
Dans le dossier class/xoopsform/
****************************************
Créer un fichier que l’on nommera : formselectgenre.php

Et qui contiendra le code suivant :

<?

include_once XOOPS_ROOT_PATH."/class/xoopslists.php";
include_once XOOPS_ROOT_PATH."/class/xoopsform/formselect.php";

class XoopsFormSelectGenre extends XoopsFormSelect
{
function XoopsFormSelectGenre($caption, $name, $value=null, $size=1)
{
$this->XoopsFormSelect($caption, $name, $value, $size);
$this->addOptionArray(XoopsLists::getGenreList());
}
}
?>
=============pour age=============
<?

include_once XOOPS_ROOT_PATH."/class/xoopslists.php";
include_once XOOPS_ROOT_PATH."/class/xoopsform/formselect.php";

class XoopsFormSelectAge extends XoopsFormSelect
{
function XoopsFormSelectAge($caption, $name, $value=null, $size=1)
{
$this->XoopsFormSelect($caption, $name, $value, $size);
$this->addOptionArray(XoopsLists::getAgeList());
}
}
?>
*****************************************
Fichier : /languagefrench/user.php
*****************************************
Vers la ligne 44, à la suite des autres valeurs, ajouter :

define('_US_GENRE','Genre');
define('_US_GENRE_MAN','Monsieur');
define('_US_GENRE_WOMAN','Madame');
define('_US_GENRE_MISS','Mademoiselle');
=========pour age===========
define('_US_AGE','Age');
define('_US_AGE_18-20','18-20');
define('_US_AGE_20-25','20-25');
define('_US_AGE_25-30','25-30');
define('_US_AGE_30-35','30-35');
define('_US_AGE_35-40','35-40');
define('_US_AGE_40-45','40-45');
define('_US_AGE_45-50','45-50');
define('_US_AGE_50-55','50-55');
define('_US_AGE_55-60','55-60');
define('_US_AGE_60-65','60-65');
define('_US_AGE_65-70','65-70');
define('_US_AGE_70-75','70-75');
define('_US_AGE_75-80','75-80');
define('_US_AGE_80-85','80-85');
define('_US_AGE_85-90','85-90');
define('_US_AGE_90-95','90-95');
define('_US_AGE_95-100','95-100');

******************************************************************
Fichier language/french/mail_template/adminactivate.tpl
******************************************************************
Placez où vous le souhaitez, la variable : {GENRE} et {AGE}
Pour faire apparaître dans le mail d’activation que vous recevrez, le genre du nouveau membre.
Vous pouvez placer cette variable dans les autres fichiers .tpl contenus dans ce dossier.

*******************************************************
Fichier modules/system/admin/users/main.php
*******************************************************
Vers la ligne 58, remplacer :

updateUser($uid, $username, $name, $url, $email, $user_icq, $user_aim, $user_yim, $user_msnm, $user_from,
$user_occ, $user_intrest, $user_viewemail, $user_avatar, $user_sig, $attachsig, $theme, $password, $pass2,
$rank, $bio, $uorder, $umode, $notify_method, $notify_mode, $timezone_offset, $user_mailok, $groups);


Par :
updateUser($uid, $username, $name, $genre, $age, $url, $email, $user_icq, $user_aim, $user_yim, $user_msnm,
$user_from, $user_occ, $user_intrest, $user_viewemail, $user_avatar, $user_sig, $attachsig, $theme, $password,
$pass2, $rank, $bio, $uorder, $umode, $notify_method, $notify_mode, $timezone_offset, $user_mailok,
$groups);


la variable $genre et $age a été ajoutée. L’ordre est important.

Vers la ligne 161, sous :
$newuser->setVar("uname", $username);


Ajouter :
$newuser->setVar("genre", $genre);
$newuser->setVar("age", $age)
*********************************************************
Fichier modules/system/admin/users/userform.php
*********************************************************
Vers la ligne 34, ajouter :
$genre_select = new XoopsFormSelectGenre(_AM_GENRE, "genre", $genre_value);
$age_select = new XoopsFormSelectAge(_AM_AGE, "age", $age_value);

Vers la ligne 134, (ou là où vous souhaitez voir apparaître ce menu dans l’administration du site, ajouter :
$form->addElement($genre_select);
$form->addElement($age_select);

*****************************************************
Fichier modules/system/admin/users/users.php
*****************************************************
Vers la ligne 75, sous :
$uname_value = "";

Ajouter :
$genre_value = "";
$age_value = "";

Vers la ligne 122, sous :
$name_value = $user->getVar("name", "E");

Ajouter :
$genre_value = $user->getVar("genre");
$age_value = $user->getVar("age");

Bien respecter cette position, sinon il y aura des problèmes avec l’insertion dans la base de données.

Vers la ligne 175, remplacer :
function updateUser($uid, $uname, $name, $url, $email, $user_icq, $user_aim, $user_yim, $user_msnm,
$user_from, $user_occ, $user_intrest, $user_viewemail, $user_avatar, $user_sig, $attachsig, $theme, $pass,
$pass2, $rank, $bio, $uorder, $umode, $notify_method, $notify_mode, $timezone_offset, $user_mailok, $groups
= array())

Par :
function updateUser($uid, $uname, $name, $genre, $age, $url, $email, $user_icq, $user_aim, $user_yim, $user_msnm,
$user_from, $user_occ, $user_intrest, $user_viewemail, $user_avatar, $user_sig, $attachsig, $theme, $pass,
$pass2, $rank, $bio, $uorder, $umode, $notify_method, $notify_mode, $timezone_offset, $user_mailok, $groups
= array())


Variable $genre ajoutée. L’ordre est important.


Vers la ligne 186, sous :
$edituser->setVar("name", $name);


Ajouter :
$genre ="";
$edituser->setVar("genre", $genre);

$age ="";
$edituser->setVar("age", $age);

*******************************************************************
Fichier modules/system/language/french/admin/users.php
*******************************************************************
Ligne 6, ajouter :
define("_AM_GENRE","Genre");
define("_AM_AGE","Age");

*******************************************************************
Fichier modules/system/templates/system_userinfo.html
******************************************************************
Mettre à jour le template avec ce code : (où vous voulez)

<tr>

<td class="head"><{$lang_genre}></td>

<td align="center" class="odd"><{$user_genre}></td>
</tr>

<tr>

<td class="head"><{$lang_age}></td>

<td align="center" class="odd"><{$user_age}></td>
</tr>

Terminé en principe :)
J’ai tout refait sur une installation vierge au fur et à mesure, et tout est opérationnel ici :
http://xoops.romanais.info/register.php

Ne par oublier de mettre a jour le module systeme

Merci d'avance de votre patience
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

39 Personne(s) en ligne (26 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 39 | Plus ...