Verkürzüng

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verkürzüng

    Hallo,

    Ich habe folgenden Befehl, um zu prüfen, ob der jewelige User den Bereich betreten darf:

    PHP-Code:
        $get mysql_query("SELECT * FROM $user_cat_tname WHERE subname='$view'");
        while (
    $cat mysql_fetch_array($get)) { $acatid $cat[id]; }
        
        
    $check mysql_query("SELECT COUNT(*) as nums FROM $user_rights_tname WHERE catid='$acatid' AND userid='".$_SESSION['user_id']."'");
        
    $cache mysql_fetch_array($check);
        
    $num_rows $cache[nums];

        if (
    $num_rows == "0") { echo "Access denied."; } else { ... 
    Dies steht immer nach einem aufgerufenem $_GET, wie hier z.B.:

    Code:
    if ($_GET['action']=='admin' and $_GET['view']=='users') {
    Man beachte hierbei, dass die erste Zeile vom Code ($get = mysql_query("SELECT * FROM $user_cat_tname WHERE subname='$view'");) mit dem Link zusammenhängt. In diesem Fall $view.

    So, das klappt ja auch alles. Mein Problem ist, dass es mir zu blöde ist immer den Code nach so einem $_GET hinzuschreiben und wollte deshalb eine Funktion machen.

    Diese sieht bisher jetzt so aus:

    PHP-Code:
    function check($act) {
    $get mysql_query("SELECT * FROM $user_cat_tname WHERE subname='$act'");
    while (
    $cat mysql_fetch_array($get)) { $acatid $cat[id]; }
        
    $row mysql_query("SELECT COUNT(*) as nums FROM $user_rights_tname WHERE catid='$acatid' AND userid='".$_SESSION['user_id']."'");
    $cache mysql_fetch_array($row);
    $adm_rows $cache[nums]; } 
    Überprüfung:

    Code:
    if ($_GET['action']=='admin' and $_GET['view']=='users') {
    
    echo check($view);
    Hierbei gibt es aber leider einen mysql_fetch_array Fehler. Weiß vielleicht jemand wie ich das auf eine andere Weise als mit einer Funktion verkürzen könnte ? Falls nicht, was könnte bei dieser Funktion der Fehler sein ?

    Die Fehlernachricht: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

  • #2
    mach in der funktion mal aus mysql_query(...) das hier:
    PHP-Code:
    mysql_query(...) or die(mysql_error()); 
    und mach vor das erste mysql-qeury mal ein echo $get;

    aber wahrscheinlich liegts daran, dass in der funktion die variablen $user_cat_tname und $user_rights_tname nicht bekannt sind

    übergib die entweder per parameter wie auch $act (von mir bevorzugt) oder schreib in die funktion als allerersten befehl
    PHP-Code:
    global $user_cat_tname$user_rights_tname
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Danke für die schnelle Antwort

      Es klappt nun.

      Kommentar


      • #4
        Hm, ich glaube ich war etwas zu vorschnell, weil es wird nun $adm_rows garnicht definiert, wenn ich die funktion irgendwo im Script ausgebe. Nur wenn ich den Inhalt der Funktion an jeder Stelle allein nochmal hinschreibe wird die variable definiert. Woran kann das liegen ?

        Kommentar


        • #5
          denke mal es wird schon definiert. aber die variablen sind ja nicht global. das heißt außerhalb der fkt nicht zu gebrauchen.

          Kommentar


          • #6
            Achso verstehe, dankeschön

            Kommentar


            • #7
              Original geschrieben von jOhnny knOx
              Hm, ich glaube ich war etwas zu vorschnell, weil es wird nun $adm_rows garnicht definiert, wenn ich die funktion irgendwo im Script ausgebe. Nur wenn ich den Inhalt der Funktion an jeder Stelle allein nochmal hinschreibe wird die variable definiert. Woran kann das liegen ?
              wenn deine funktion etwas liefern soll, mit dem du später arbeiten willst, dann sollte sie auch eine return value haben.
              Genauso, mussst du ihr eigentlich die vars der TableNames übergeben, weil auch die kennt sie nicht.

              Kommentar

              Lädt...
              X