[gelöst] Navigation - Problem

Hallo…
wie der titel sicher schon verrät, habe ich ein problem mit meiner USER-Navigation…
nämlich wollte ich den verschiedenen Usern verschiedene Rechte geben. Und das hat auswirkungen auf die Navigation…

also hab ich in der Tabelle ‘log’ eine Spalte ‘ma’ gemacht (mitglieder art), dieses Feld ist ein Int, mit der Länge 1, nun hab ich bei meiner Abfrage ein problem…

if($rig == ‘6’ or $rig == ‘7’ or $rig == ‘8’ or $rig == ‘9’)

so sieht die Bedingung aus, und hat nicht funktioniert…
ist sie zu lang?

mfg

Wie sieht der umgebende Code aus? Könnte es an einem Tippfehler liegen?
In der Bedingung selbst sehe ich jedenfalls keinen Fehler.

Guten Abend die Herren,

Wie von dir angesprochen ist deine Spalte der Tabelle vom Typ Integer, Vergleiche kannst du also schonmal mit

if ($var = 0) {
....
}

…machen. Ansich kennt PHP zwar keine Datrentypen in dem Sinne, aber zwischen Zahlen und Strings unterscheidet man schon etwas. Ob die Abfrage zu lang ist, kann ich nicht sagen, ich persönlich verwende nicht soviele OR und AND wie du in deiner Abfrage. Da ich den Umgebenden Quelltext nicht kenne, kann ich dir leider auch keine verbindliche Alternative aufzeigen. Schau dir aber mal switch() an, also “select - Case” Anweisungen. Sowas sollte da besser sein, zumal du für jeden Usermode sagen kannst was für ein menü angezeigt werden soll.
Beispiel:

switch($var){
  case 0: //normaler User
  $menu = array("Link1", "Link2");
  break;

  case 1: //Admin 
  $menu = array("Link1", "Link2", "Link3");
  break;

  default: //alle anderen, bzw Standard
  $menu = array("Link1", "Link2");
  break;
}

Vielleicht hilfts dir ja was…
Greez

ok, danke euch
ich werds mal mit switch versuchen
e: aber wo muss ich denn den Wert, welcher ich in der Daten bank habe, oder haben sollte, eintragen?
mfg

Meinst du, an welcher Stelle der switch-Anweisung du den Wert eintragen sollst?

äh ja genau…

switch ('Hier kommt die Variable') { ... }

eigentlich hab ich den wert, welcher die Variable besitzten soll, gemeint.
e: hab jetzt auf php.net geschaut
danke
mfg

switch ($rig) { case 6: case 7: case 8: case 9: ...Anweisungen }
So, oder habe ich es komplett falsch verstanden?

nee, das war jetzt das, was ich meinte
aber irgedwie wird die Navi trotz dem nicht angezeigt
mfg

Wäre es dir möglich, den Code der Navigation zu posten? Andernfalls ist es schwer dir zu helfen.

Das sieht mir ziemlich nach $_GET aus…

verwende mal in der übergebenen VAR statt $var das hier:
$_GET[“var”]

switch($data->rig) { case 0: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />"); break; case 1: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=editzenter\">Editierzenter</a><br />", "<a target=\"_self\" href=\"/?action=rechtler\">Rechte</a><br />"); break; case 2: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=orgzenter\">Organisatorzenter</a><br />"); break; case 3: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=editzenter\">Editierzenter</a><br />", "<a target=\"_self\" href=\"/?action=rechtler\">Rechte</a><br />", "<a target=\"_self\" href=\"/?action=orgzenter\">Organisatorzenter</a><br />"); break; case 4: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=editzenter\">Editierzenter</a><br />", "<a target=\"_self\" href=\"/?action=rechtler\">Rechte</a><br />", "<a target=\"_self\" href=\"/?action=orgzenter\">Organisatorzenter</a><br />", "<a target=\"_self\" href=\"/?action=vorstzenter\">Vorstandszenter</a><br />", "<a target=\"_self\" href=\"/?action=sechost\">Hostzenter</a><br />"); break; case 5: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=vorstzenter\">Vorstandszenter</a><br />"); break; case 6: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=editzenter\">Editierzenter</a><br />", "r<a target=\"_self\" href=\"/?action=echtler\">Rechte</a><br />", "<a target=\"_self\" href=\"/?action=vorstzenter\">Vorstandszenter</a><br />"); break; case 7: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=editzenter\">Editierzenter</a><br />", "<a target=\"_self\" href=\"/?action=rechtler\">Rechte</a><br />", "<a target=\"_self\" href=\"/?action=orgzenter\">Organisatorzenter</a><br />", "<a target=\"_self\" href=\"/?action=vorstzenter\">Vorstandszenter</a><br />", "<a target=\"_self\" href=\"/?action=sechost\">Hostzenter</a><br />", "<a target=\"_self\" href=\"/?action=firsthost\">Hostzenter+</a><br />"); break; case 8: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=editzenter\">Editierzenter</a><br />", "<a target=\"_self\" href=\"/?action=rechtler\">Rechte</a><br />", "<a target=\"_self\" href=\"/?action=orgzenter\">Organisatorzenter</a><br />", "<a target=\"_self\" href=\"/?action=vorstzenter\">Vorstandszenter</a><br />"); break; case 9: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=rechtler\">Rechte</a><br />"); break; case 10: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />", "<a target=\"_self\" href=\"/?action=editzenter\">Editierzenter</a><br />", "<a target=\"_self\" href=\"/?action=rechtler\">Rechte</a><br />", "<a target=\"_self\" href=\"/?action=orgzenter\">Organisatorzenter</a><br />", "<a target=\"_self\" href=\"/?action=vorstzenter\">Vorstandszenter</a><br />", "rechtler\">Rechte</a><br />"); break; default: $menu = array("<a target=\"_self\" href=\"/?action=recht\">Rechtzenter</a><br />"); break; } echo $menu->1; <<linie 77 echo $menu->2; echo $menu->3; echo $menu->4; echo $menu->5; echo $menu->6; echo $menu->7; echo $menu->8; echo "<a href=\"memberout.php\" taeget=\"_self\">Log-Out</a>";

[quote]Das sieht mir ziemlich nach $_GET aus…
[/quote]
stimmt nicht, hab bei der Navi kein GET verwendet
:susp: und?
/edit/: jetzt hab ich nen parse error:

[quote]Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or ‚{‘ or ‚$‘ in /users/bcg/www/memberin.php on line 77
[/quote]
ihr seht die fehler sicher gleich… :sun:
mfg :hail:

Hallo,

switch($data->rig)

entweder steckt “rig” in einer Klasse dann:

switch($data->$rig)

oder ist Teil eines Arrays, dann:

switch($data["rig"])

alles andere würde bedeuten das “rig” eine Function innerhalb der Klasse data ist und einen Wert mit return zurückgeben würde, was ich allerdings nicht glaube.

Greez

danke,
und der parse error?
mfg
/e: eigentlich ist das “rig” (für rights) teil einer mysql abfrage…
mfg

ok, der parse error ist weg, doch die Navi ist immer noch nicht da…

ist da was falsch?
mfg

nochmal was zu Arrays, ich glaube du sprichst sie wie schon bei $data falsch an, richtig müsste es $menu[0] heißen anstelle von $menu->1

alternativ kannste du auch am Ende den Teil so ersetzen:

foreach ($menu as $Menu_element){
 echo $Menu_Element;
} 

schonmal, geprüft ob $data[“rig”] überhaupt einen Wert Enthällt? Was für einen Datentyp hat die Spalte rig in der Tabelle?
Aktuell angezeigt werden müsste auf alle Fälle der in Default angelegte Link.

cool :slight_smile:
jetzt hab ich mich schon gefreut…
nun hab ich 2 menü punkte, von eigentlich 4 oder sogar 7…
echo $menu[0];
hat funktioniert, aber
echo $menu[1];

nich…
mfg

E/
äh, jetzt ist es bewiesen…
“rig” har den typ “INT” mit der länge “1” glaub ich…
mfg

Füg mal über switch das hier ein:

header("content-type: text/plain");
var_dump($data);
exit;

Dann haben wir den Inhalt von “rig”

//EDIT:
Nochwas:
Du könntest das hier für das Menü verwenden:

$menues=array(
  1 => array(
      "<a href='xyz'>XYZ</a>'
      ),
  2 => array(
      "<a href='xyz'>XYZ</a>'
      ),
  );

$menu=$menues[(is_nummeric($data["rig"]) ? $data["rig"] : 1)];

Damit ersparst du dir 9 mal case X: und break;

ok ich habs mal versucht, doch dann kommt jetzt das hier:

[quote]Warning: Cannot modify header information - headers already sent by (output started at /users/bcg/www/memberin.php:9) in /users/bcg/www/memberin.php on line 39
array(7) { [0]=> string(1) “1” [1]=> string(6) “username” [2]=> string(8) “userpw” [3]=> string(20) “user-e-mail” [4]=> string(19) “last log int” [5]=> string(1) “1” [6]=> string(1) “7” } [/quote]
was sagt mir nun das? hat doch etwas mit dem header-code zu tun…
mfg