Radiation
Hey,
ich hab hier grade folgenden Code:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
//allowed to access?
$groups_allowed = explode(",",$news_cats['access']);
$countgroups = count($groups_allowed);
if($countgroups>0 && $groups_allowed[0]!=""){
for($i=0;$i<$countgroups;$i++){
$getaccess = $db->query_first("SELECT userid FROM bb".$n."_user2groups WHERE userid='".$wbbuserdata['userid']."' AND groupid='".$groups_allowed[$i]."'");
if($getaccess['userid'] != "") $can_access = 1; $i=$countgroups;
}
if($can_access || ($wbbuserdata['can_news_categorie_admin'] && $_GET['showall']==1)) eval("\$news_categories .= \"".$tpl->get("news_categorie_bit")."\";"); echo $news_cats['catid'];
}
else eval("\$news_categories .= \"".$tpl->get("news_categorie_bit")."\";"); |
|
Nun mein Problem, ich hab $can_access welches gesetzt wird wenn $getaccess['userid'] einen Inhalt hat, jedoch wird $can_access trotzdem gesetzt auch wenn $getaccess['userid'] nichts enthält da es keinen Treffer ergab. Irgendwie steh ich da grad aufm Schlauch...
Hoffe es war verständlich und jemand weiss mir zu helfen.
chrime
haste mal so gemacht:???
php: |
1:
2:
3:
4:
5:
|
....
if($getaccess['userid'] = "") $can_access = 0; $i=$countgroups;
}
if($can_access!=0 || ($wbbuserdata['can_news_categorie_admin'] && $_GET['showall']==1)) eval("\$news_categories .= \"".$tpl->get("news_categorie_bit")."\";"); echo $news_cats['catid'];
.... |
|
Radiation
Das ganze genau andersrum, jetzt isses immer weg...
chrime
//allowed to access?
$groups_allowed = explode(",",$news_cats['access']);
$countgroups = count($groups_allowed);
if($countgroups>0 && $groups_allowed[0]!=""){
for($i=0;$i<$countgroups;$i++){
$getaccess = $db->query_first("SELECT userid FROM bb".$n."_user2groups WHERE userid='".$wbbuserdata['userid']."' AND groupid='".$groups_allowed[$i]."'");
if($getaccess['userid'] != "") $can_access = 1; $i=$countgroups;
}
if($can_access) || ($wbbuserdata['can_news_categorie_admin']) && ($_GET['showall']==1)) eval("\$news_categories .= \"".$tpl->get("news_categorie_bit")."\";"); echo $news_cats['catid'];
}
else eval("\$news_categories .= \"".$tpl->get("news_categorie_bit")."\";");
Radiation
nope, nix angezeigt.
chrime
meine letzte idee
php: |
1:
2:
3:
4:
5:
|
....
if($getaccess['userid'] = "0"){ $can_access = 0; $i=$countgroups; }
}
if(($can_access!=0) || ($wbbuserdata['can_news_categorie_admin']) && ($_GET['showall']==1)) { eval("\$news_categories .= \"".$tpl->get("news_categorie_bit")."\";"); echo $news_cats['catid']; }
.... |
|
€dit, schau nochmal, ich hab noch was verbessert.
Radiation
Leider auch nicht, denke ich werde mal ne Nacht oder 2 drüber schlafen...
xundy
also das
SELECT userid FROM bb".$n."_user2groups WHERE userid='".$wbbuserdata['userid']."'
ergibt doch wohl gar keinen Sinn da kannste auch gleich $wbbuserdata['userid'] als Wert verwenden
mfg
Broken Sword
@xundy:
in der where-clausel steht noch ein AND
@Radiation:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
|
eval("\$groups_allowed = array(".$news_cats['access'].");");
if(count($groups_allowed)){
$can_access = 0; //sonst besteht die gefahr, dass $can_access nicht initialisiert wird aber dennoch bei der if abfrage darauf zugegriffen werden soll..... geht ja nicht
for($i=0;$i < count($groups_allowed);$i++){
$getaccess = $db->query_first("SELECT userid FROM bb".$n."_user2groups WHERE userid='".$wbbuserdata['userid']."' AND groupid='".$groups_allowed[$i]."'");
if($getaccess['userid']) {
$can_access = 1;
break;
}
}
if($can_access || ($wbbuserdata['can_news_categorie_admin'] && $_GET['showall']==1)) {
eval("\$news_categories .= \"".$tpl->get("news_categorie_bit")."\";");
echo $news_cats['catid'];
}
}
else eval("\$news_categories .= \"".$tpl->get("news_categorie_bit")."\";"); |
|
du hast oft { bzw. } bei if-abfragen vergessen, obwohl 2 befehle in der zeile folgten!
->das mit dem "eval("\$groups_allowed = array(".$news_cats['access'].");");"
klappt natürlich nur, wenn $news_cats['access'] zum beipsiel aus
besteht
->denk ich mir aba mal so
so dürft das eigentlich kein problem mehr sein ^^
xundy
Zitat: |
Original von Broken Sword
@xundy:
in der where-clausel steht noch ein AND
......... |
Ja und? Dann müssen beide war sein und es ändert nix daran das immer nur die eine ID rauskommt
wäre natürlich was anderes wenn das SELECT nach Ggroupid gemacht würde, was auch eigentlich weitaus mehr sinn machen würde
mfg
Broken Sword
Zitat: |
Original von xundy
Ja und? Dann müssen beide war sein und es ändert nix daran das immer nur die eine ID rauskommt
|
was aber Radiation damit bewirken will ist, dass etwas nur zurückgegeben wird, wenn die gruppenid, die (vermutlich) für das news-ding rechte besitzt, vorkommt.
sprich da könnte auch anstatt SELCET userid, SELCET irgendeinnameausdertabelle stehen...
-> es kommt nicht auf den inhalt an, sondern, dass etwas zurückgegeben wird
heino-1989
Wenn du
php: |
1:
2:
3:
4:
5:
6:
7:
|
for($i=0;$i < count($groups_allowed);$i++){
$getaccess = $db->query_first("SELECT userid FROM bb".$n."_user2groups WHERE userid='".$wbbuserdata['userid']."' AND groupid='".$groups_allowed[$i]."'");
if($getaccess['userid']) {
$can_access = 1;
break;
}
} |
|
durch
php: |
1:
2:
3:
4:
5:
6:
|
for($i=0;$i < count($groups_allowed);$i++){
if(in_array($groups_allowed[$i],$wbbuserdata['groupids'])) {
$can_access = 1;
break;
}
} |
|
ersetzt sparst du MySQL-Abfragen und Zeit
Die Ausführungszeit wird damit auf ca 5 - 10 % reduziert