Utilizzo NSN_Groups_690_135_IT su phpnuke 6.9.
Il mio problema è, quando devo inserire nuovi utenti ad un gruppo, non far risultare nell'elenco da cui vanno selezionati, quelli che sono stati sospesi.
In pratica è possibile (forse mediante la condizione if, ma di php ne capisco poco!), fare in modo che nel menù a tendina da cui si scelgono gli utenti da inserire nel gruppo, compaiano solo quegli utenti che nella tabella nuke_users abbiano il valore 0 nel campo user_active? (che siano cioè attivi e non sospesi): avendo molto utenti sospesi ... quando devo fare un gruppo ... è un caos!
Probabilmente (ovviamente se la cosa è fattibile!) forse bisogna modificare qualcosa nella riga in cui richiama gli utenti della tabella nuke_users, cioè questa:
echo "<SELECT NAME=\"add_uid[]\" size=\"10\" multiple>\n";
$result3 = $db->sql_query("select user_id, username from ".$user_prefix."_users order by username WHERE user_active='$useractive'");
Ma ... di php ne capisco poco! (il povero Sniffer lo sa )
Posto anche la restante parte del codice presente nel file: admin/modules/editgroups
----------------------------------------------------
case "GroupsUsersAdd":
$pagetitle = _GR_ADMIN.": "._GR_GROUPSUSERSADD;
global $prefix, $user_prefix, $db, $bgcolor1, $bgcolor2, $bgcolor3;
include ("header.php");
title("$pagetitle");
GroupsAdmin();
echo "<br>\n";
OpenTable();
if ($gid > 0) {
echo "<center><table border=\"0\" cellpadding=\"0\" cellspacing=\"2\">\n";
echo "<form method=post action=\"admin.php?op=GroupsUsersAddSave\">\n";
echo "<INPUT TYPE=HIDDEN NAME=\"gid\" VALUE=\"$gid\">\n";
echo "<tr>\n";
list($grpName) = $db->sql_fetchrow($db->sql_query("select gname from ".$prefix."_users_groups where gid='$gid'"));
echo "<td align=\"center\">"._GR_ADDUSRTO." <b>$grpName</b><br>";
echo "<SELECT NAME=\"add_uid[]\" size=\"10\" multiple>\n";
$result3 = $db->sql_query("select user_id, username from ".$user_prefix."_users order by username WHERE user_active='$useractive'");
while(list($thisUID, $thisUNAME) = $db->sql_fetchrow($result3)) {
$ingroup = $db->sql_numrows($db->sql_query("SELECT uid FROM ".$prefix."_users_groups_users WHERE uid='$thisUID' AND gid='$gid'"));
if ($ingroup < 1) ($useractive=1) {
echo "<option value=\"$thisUID\">$thisUNAME</option>\n";
}
}
echo "</SELECT><br>"._GR_ADDNOTE."<br><br>";
echo ""._GR_LENGTHMEMBER."<br><input type=\"text\" name=\"e_date\" value=\"0\" size=\"5\"><br>";
echo ""._GR_0UNLIMIT."<br><br>";
echo "<INPUT TYPE=SUBMIT VALUE=\""._GR_ADDUSR."\"></td>\n";
echo "</tr>\n";
echo "</form>\n";
echo "</table></center>\n";
} else {
echo "<center><table border=\"0\" cellpadding=\"0\" cellspacing=\"2\">\n";
echo "<form method=post action=\"admin.php?op=GroupsUsersAdd\">\n";
echo "<tr>\n";
echo "<td align=\"center\">"._GR_ADDUSRTO."<br>";
echo "<SELECT NAME=\"gid\" size=\"5\">\n";
$result3 = $db->sql_query("select gid, gname from ".$prefix."_users_groups order by gname");
while(list($thisGID, $thisGNAME) = $db->sql_fetchrow($result3)) {
echo "<option value=\"$thisGID\">$thisGNAME</option><br>\n";
}
echo "</SELECT><br><INPUT TYPE=SUBMIT VALUE=\""._GR_SELECTGRP."\"></td>\n";
echo "</tr>\n";
echo "</form>\n";
echo "</table></center>\n";
}
CloseTable();
include("footer.php");
break;
----------------------------------------------------
Grazie in anticipo per l'attenzione.
Dino.
compaiano solo quegli utenti che nella tabella nuke_users abbiano il valore 0 nel campo user_active? (che siano cioè attivi e non sospesi)
Non conosco NSN_Groups_690_135_IT e non ho avuto il tempo di provarlo ma so che il campo user_active utilizza il valore 0 per gli utenti non attivi e 1 per gli utenti attivi.
Guardando lo script che hai postato mi sembra che faccia già quello che cerchi, ad esempio la query viene fatta tenendo conto del campo user_active
Codice:
$result3 = $db->sql_query("select user_id, username from ".$user_prefix."_users order by username WHERE user_active='$useractive'");
Vengono memorizzati i valori nella variabile $useractive e poi verificati con
Codice:
if ($ingroup < 1) ($useractive=1) {
echo "<option value=\"$thisUID\">$thisUNAME</option>\n";
}
Se il valore è 1 (utente attivo) viene eseguito.
Se ritieni che lo script non faccia quello che ti ho descritto fammelo sapere che appena ho un pò di tempo lo installo e gli do un occhiata.
_________________ Non inviatemi pm con richieste di aiuto grazie.
Su questo forum solo gli utenti registrati possono vedere i links! Registrati o fai il login
Inviato:
Sab Nov 25, 2006 9:44 pm
Dino Fedele
Registrato: Mar 23, 2006 Messaggi: 105
Oggetto: Re
Scusami, mai ti ricorderai che sono un po' un pasticcione!!
Per sbaglio ti ho mandato del codice sul quale avevo già "pasticciato", senza riuscire a fare quello di cui ti parlavo.
Questo è il codice realmente presente nel file (senza le mie modifiche che purtroppo non funzionano):
-------------------------------------------------------------------------
case "GroupsUsersAdd":
$pagetitle = _GR_ADMIN.": "._GR_GROUPSUSERSADD;
global $prefix, $user_prefix, $db, $bgcolor1, $bgcolor2, $bgcolor3;
include ("header.php");
title("$pagetitle");
GroupsAdmin();
echo "<br>\n";
OpenTable();
if ($gid > 0) {
echo "<center><table border=\"0\" cellpadding=\"0\" cellspacing=\"2\">\n";
echo "<form method=post action=\"admin.php?op=GroupsUsersAddSave\">\n";
echo "<INPUT TYPE=HIDDEN NAME=\"gid\" VALUE=\"$gid\">\n";
echo "<tr>\n";
list($grpName) = $db->sql_fetchrow($db->sql_query("select gname from ".$prefix."_users_groups where gid='$gid'"));
echo "<td align=\"center\">"._GR_ADDUSRTO." <b>$grpName</b><br>";
echo "<SELECT NAME=\"add_uid[]\" size=\"10\" multiple>\n";
$result3 = $db->sql_query("select user_id, username from ".$user_prefix."_users order by username");
while(list($thisUID, $thisUNAME) = $db->sql_fetchrow($result3)) {
$ingroup = $db->sql_numrows($db->sql_query("SELECT uid FROM ".$prefix."_users_groups_users WHERE uid='$thisUID' AND gid='$gid'"));
if ($ingroup < 1) {
echo "<option value=\"$thisUID\">$thisUNAME</option>\n";
}
}
echo "</SELECT><br>"._GR_ADDNOTE."<br><br>";
echo ""._GR_LENGTHMEMBER."<br><input type=\"text\" name=\"e_date\" value=\"0\" size=\"5\"><br>";
echo ""._GR_0UNLIMIT."<br><br>";
echo "<INPUT TYPE=SUBMIT VALUE=\""._GR_ADDUSR."\"></td>\n";
echo "</tr>\n";
echo "</form>\n";
echo "</table></center>\n";
} else {
echo "<center><table border=\"0\" cellpadding=\"0\" cellspacing=\"2\">\n";
echo "<form method=post action=\"admin.php?op=GroupsUsersAdd\">\n";
echo "<tr>\n";
echo "<td align=\"center\">"._GR_ADDUSRTO."<br>";
echo "<SELECT NAME=\"gid\" size=\"5\">\n";
$result3 = $db->sql_query("select gid, gname from ".$prefix."_users_groups order by gname");
while(list($thisGID, $thisGNAME) = $db->sql_fetchrow($result3)) {
echo "<option value=\"$thisGID\">$thisGNAME</option><br>\n";
}
echo "</SELECT><br><INPUT TYPE=SUBMIT VALUE=\""._GR_SELECTGRP."\"></td>\n";
echo "</tr>\n";
echo "</form>\n";
echo "</table></center>\n";
}
CloseTable();
include("footer.php");
break;
--------------------------------------------------------------------
E la riga di cui ti dicevo (quella originale) è questa:
$result3 = $db->sql_query("select user_id, username from ".$user_prefix."_users order by username");
--------------------------------------------------------------------
Probabilmente (anche se da quello che mi dici, qualche pezzo era corretto) ho dimenticato qualcosa perchè viene un errore di sintassi. Modificando in qs modo:
------------------
while(list($thisUID, $thisUNAME) = $db->sql_fetchrow($result3)) {
$ingroup = $db->sql_numrows($db->sql_query("SELECT uid FROM ".$prefix."_users_groups_users WHERE uid='$thisUID' AND gid='$gid'"));
if ($ingroup < 1) { if ($useractive=1) {
echo "<option value=\"$thisUID\">$thisUNAME</option>\n";
}
}
}
------------------
l'errore scompare ma .... nella "tendina" tutti gli utenti scompaiono!
Grazie come sempre per la tua disponibilità.
Ciao, Dino.
Purtroppo in questo periodo non ho molto tempo cmq prova a modificare la query in questo modo
Codice:
$result3 = $db->sql_query("select user_id, username, user_active from ".$user_prefix."_users WHERE user_active = 1 ");
Fammi sapere
_________________ Non inviatemi pm con richieste di aiuto grazie.
Su questo forum solo gli utenti registrati possono vedere i links! Registrati o fai il login
Inviato:
Dom Nov 26, 2006 3:16 am
Dino Fedele
Registrato: Mar 23, 2006 Messaggi: 105
Oggetto: Re
Grandeeeeeeeeeeeeee Sniffer: di tempo te ne basta poco
Grazie: funziona!!
Ho aggiunto anche l'ordine in base all'username, lo posto dovesse servire a qualcuno.
Venire a trovarti è cmq sempre un piacere.
Ciao, Dino.
P.S.: qs è il codice definitivo funzionante che ho utilizzato:
Citazione:
$result3 = $db->sql_query("select user_id, username, user_active from ".$user_prefix."_users WHERE user_active = 1 order by username");
Non puoi inserire nuovi Topic in questo forum Non puoi rispondere ai Topic in questo forum Non puoi modificare i tuoi messaggi in questo forum Non puoi cancellare i tuoi messaggi in questo forum Non puoi votare nei sondaggi in questo forum