Infoseiten Problem

Lenox
Folgendes Problem hab ich gerade:

Ich versuche grad eine Informationsseite im wbb zu integrieren so das man bei einem TEAM-Mitglied darauf klicken kann

nun hab ich aber das Problem das wenn ich auf einen User klicke steht zwar in der adresszeile team.php?action=info&userid=1

Aber es wird nicht der Name zu der ID ausgegeben

Kann mir da einer Helfen wie ich das ermögliche irgendwie bin ich da zu blöd für

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
// Information
if (isset($_REQUEST['action'])) $action $_REQUEST['action'];
else $action '';

if ($action == 'info') {

$info=$db->unbuffered_query ("SELECT userid, username FROM bb".$n."_users ORDER by userid='".$row['userid']."'");
    while($row=$db->fetch_array ($info)) {
        $row['userid'];
        $row['username'] = htmlspecialchars($row['username']);
        $username $row['username'];
                
        eval("\$team_info_bit = \"".$tpl->get("team_info_bit")."\";");
    }

    eval("\$tpl->output(\"".$tpl->get("team_info")."\");");
} else {
    
eval("\$tpl->output(\"".$tpl->get("team")."\");");
}


Wenn ich vor ORDER by ein WHERE und danach abfrage userid=$row['userid'] dann bekomme ich eine leere weise seite
Broken Sword
Eine Frage: was ist $row['userid']?
Wo wurde das deklariert?
WHERE ist schon richtig, anstatt ORDER BY. Denn ORDER BY sortiert nur.

Außerdem kannst du deinen Code vereinfachen:
$row['username'] = htmlspecialchars($row['username']);
$username = $row['username'];
Warum nicht gleich:
$username = htmlspecialchars($row['username']);
?
Lenox
Zitat:
Original von Broken Sword
Eine Frage: was ist $row['userid']?
Wo wurde das deklariert?
WHERE ist schon richtig, anstatt ORDER BY. Denn ORDER BY sortiert nur.

Außerdem kannst du deinen Code vereinfachen:
$row['username'] = htmlspecialchars($row['username']);
$username = $row['username'];
Warum nicht gleich:
$username = htmlspecialchars($row['username']);
?


Öhm... naja eigentlich dachte ich wenn ich WHERE userid='".$row['userid']."' nehme dann weiss der Code was ich möchte aber wenn ich das mache kommt eine weisse seite von daher weiss ich nicht weiter

wie müsste dann der WHERE-Befehl lauten?

den ich möchte wenn man direkt auf der Team-Seite steht und hinterdem Username auf Info klickt dann zu dem auch die Userid und dazu dann derUsername in der Info steht

Aber das macht er derzeit nicht
Broken Sword
Wie wäre es damit?
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
// Information
if (isset($_REQUEST['action'])) $action $_REQUEST['action'];
else $action '';

if ($action == 'info') {
$uid intval($_GET['userid']);
$info=$db->unbuffered_query ("SELECT userid, username FROM bb".$n."_users WHERE userid='".$uid."'");
    while($row=$db->fetch_array ($info)) {
        $row['userid'];
        $username htmlspecialchars($row['username']);                
        eval("\$team_info_bit = \"".$tpl->get("team_info_bit")."\";");
    }

    eval("\$tpl->output(\"".$tpl->get("team_info")."\");");
} else {
    
eval("\$tpl->output(\"".$tpl->get("team")."\");");
}


Aber eines fällt mir noch auf, warum benuzt du eine while-Schleife, wenn es doch nur ein User ist? Wäre das denn nicht besser?
php:
1:
2:
3:
4:
5:
if ($action == 'info') {
$info=$db->query_first("SELECT userid, username FROM bb".$n."_users WHERE userid='".intval($_GET['userid'])."'");
$username htmlspecialchars($row['username']);                
eval("\$tpl->output(\"".$tpl->get("team_info")."\");"); //In dem Template   team_info_bit   integrieren
}
Lenox
Ah danke hab das jetzt so gelöst:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
if ($action == 'info') {

$info=$db->query ("SELECT userid, username, title, regdate FROM bb".$n."_users WHERE userid='".intval($_GET['userid'])."'");
    while($row=$db->fetch_array ($info)) {
    
        $row['userid'];
        $username htmlspecialchars($row['username']);
        $row['title'] = htmlconverter($row['title']);
        $regdate formatdate($wbbuserdata['dateformat'], $row['regdate']);
                
        eval("\$team_info_bit = \"".$tpl->get("team_info_bit")."\";");
    }

    eval("\$tpl->output(\"".$tpl->get("team_info")."\");");
}
Moes
Statt $_GET würde ich $_REQUEST benutzen. Augenzwinkern
Lenox
Zitat:
Original von Moes
Statt $_GET würde ich $_REQUEST benutzen. Augenzwinkern


Danke dir mal wieder Moe

Man liest sich nachher im ICQ Augenzwinkern
Broken Sword
Nach deiner Beschreibung ist GET, durch die Speicherplatzersparnis von 3 Bytes, die bessere Wahl.
BreiteSeite
Zitat:
Original von Moes
Statt $_GET würde ich $_REQUEST benutzen. Augenzwinkern


Mir hat man gesagt immer GET; POST, COOKIE und SESSION benutzen anstatt REQUEST... in einem php-Channel im IRC...
xundy
Grundsätzlich sind ja alle methoden auch eine Art filter, ausser REQUEST(kommt eher einem catch all gleich) un beschränken halt die Methode wie Werte an ein Script übergeben werden.

Werden in einem Script 2 Möglichkeiten der Werteübergabe verwendet zB. POST und GET dann nutzt man auch REQUEST um diese aufzufangen, da man ansosnten "denselben" Code 2 mal im Script einbauen muß einmal wenn ein Wert per POST und einmal wenn ein WERT per GET übergeben wird.

Kommt ja oft vor wenn ein Formular Werte übergibt und nach Abarbeitung das Script per header wieder sich selbst mit entsprechen Parametern aufruft.

Ich sage es mal ganz Plumb, eigentlichkönnte immer REQUEST(mache ich natürlich nur im obigen FallAugenzwinkern ) benutzt werden, man muß halt dann nur Sorge tragen, die Daten entsprechend aufzubereiten, um nicht Lücken in seinem Script für Angriffe zu schaffen, aus Performancegründen den ein oder anderen zu nutzen ist wohl eher MakulaturAugenzwinkern

mfg