php debug meldung beheben?

Dann wirds ein Klammer-Fehler sein. Wo geht denn die Klammer zu, die hier anfängt:

PHP:
if(isset($user->data['is_founder'] ) && $user->data['is_founder'] == true)
    {
 
Hallo ich habe es nun mit diesem Code hinbekommen:
Code:
if(isset($user->data['is_founder'] ) && $user->data['is_founder'] == true)
    {
 
    if($is_founder == true)
        $user->data['is_founder'] = 1;
 
  if ($user->data['user_accept_rules'] == 0 && $user->data['is_registered'] && $user->data['is_founder'] && !$user->data['is_bot'] && (request_var('mode', '') != 'rules'))
    {
        if (confirm_box(true))
        {
            $sql = 'UPDATE ' . USERS_TABLE . '
                SET user_accept_rules = 1
                WHERE user_id = ' . $user->data['user_id'];
            $db->sql_query($sql);
        }
        else
        {
            confirm_box(false, sprintf($user->lang['NEW_RULES'], '<a href="' . append_sid("{$phpbb_root_path}rules.php") . '">', '</a>'));
            header("Location: " . append_sid("{$phpbb_root_path}ucp.$phpEx?mode=logout&sid=" . $user->session_id));
        }
    }
}
aber leider Funktioniert bei diesem Code das bestätigen fü die anderen User auch nicht mehr.

Ich wollte es eigentlich so haben das alle anderen das bestätigen weiter müssen nur der Gründer nicht?
 
Ich verstehe es noch nicht ganz. Du willst also

- das der Gründer die neuen (oder auch die alten) Regeln niemals bestätigen muss
- alle anderen Benutzer die Regeln (sowohl die alten als auch die neuen) immer bestätigen müssen?

Sinn machen würde folgender Code:

PHP:
if($is_founder == true)
    $user->data['is_founder'] = 1;
 
if ($user->data['user_accept_rules'] == 0 && $user->data['is_registered'] && (!isset($user->data['is_founder'] ) || $user->data['is_founder'] != true) && !$user->data['is_bot'] && (request_var('mode', '') != 'rules'))
{
    if (confirm_box(true))
    {
        $sql = 'UPDATE ' . USERS_TABLE . '
                SET user_accept_rules = 1
                WHERE user_id = ' . $user->data['user_id'];
        $db->sql_query($sql);
    }
    else
    {
        confirm_box(false, sprintf($user->lang['NEW_RULES'], '<a href="' . append_sid("{$phpbb_root_path}rules.php") . '">', '</a>'));
        header("Location: " . append_sid("{$phpbb_root_path}ucp.$phpEx?mode=logout&sid=" . $user->session_id));
    }
}

Zu erst wird abhängig von $is_founder im Array $user->data das Element 'is_founder' gesetzt. Anschließend wird geprüft, ob der Benutzer die Regeln schon akzeptiert hat, ob es sich um keinen Gründer-Account handelt [Achtung Verneinung: !isset($user->data['is_founder'] ) || $user->data['is_founder'] != true) ]. Nur wenn diese Bedingungen erfüllt sind, wird der innere Code ausgeführt.

Macht das für dich auch Sinn?
 
Also ich habe da auch noch den Verdacht das das is_founder nicht richtig ist,das einzigste was ich weiss das der Gründer im phpbb als founder bezeichnet wird,das is_founder wurde von mir efunden.

Sorry das hätte ich eventuell gleich erwähnen sollen.
Aber ich suche schon solange nach einer löung des Problems das ich es vergessen hatte.

Natürlich würde es sinn machen wenn man es machen könnte das der Gründer nicht bestätigen müsste und alle andren schon,aber da wir nicht wissen wie das is_founder wirklich heisen muss,würden wir nicht weiter kommen.

der MOD verhält sich wie folgt,das $user->data['user_accept_rules'] == 0 sorgt dafür das in der Datenbank nach dem Aktivieren die spalte user_accept_rules auf 0 gesetzt,wenn man diese dann bestätigt hat sollte dieser Teil:
Code:
$sql = 'UPDATE ' . USERS_TABLE . '
                SET user_accept_rules = 1
                WHERE user_id = ' . $user->data['user_id'];
        $db->sql_query($sql);
alle User wider auf 1 setzt und das Funktioniert ja auch,nur beim Gründer nicht.

Für mich sieht das so aus das wenn man den Teil WHERE user_id = ' . $user->data['user_id']; erwetern könnte das der auch beim Gründer greift,wäre das Problem behoben?
 
Ok verstehe ich denoch danke das du es versucht hast.

Hallo mir ist gerade eine idee gekommen,gibt es nichts was man hier einbinden kann um eine bestimmte User ID aus genommen werden soll von der abfrage?
Oder eine bestimmte User ID mit direkt angesprochen wird oder so was ähnliches?
Code:
$sql = 'UPDATE ' . USERS_TABLE . '
                SET user_accept_rules = 1
                WHERE user_id = ' . $user->data['user_id'];
        $db->sql_query($sql);
 
Klar, du kannst die WHERE-Bedingung erweitern. Wenn der Name des auszuschließenden Users bekannt ist, oder die ID immer die gleiche ist, kannst du die WHERE-Bedingung mit einem AND versehen und die Spalte + Value dahinter schreiben:

PHP:
$sql = 'UPDATE ' . USERS_TABLE . '
                SET user_accept_rules = 1
                WHERE user_id = ' . $user->data['user_id'] . ' AND user_id != 1;
        $db->sql_query($sql);

EDIT: Aber eigentlich ist das doch blödsinn. Führe den Query einfach nicht aus, wenn die User-ID einem bestimmten Kriterium entspricht (also eine if-Bedingung außen rum).
 
Hallo vielen dank.

Ich verstehe deinen EDIT nicht,was genau meinst mit if bedingung und was bewirkt diese dann?

*EDIT*
Wenn ich deine Abfrage einbau wird der Untere Teil in der php Datei Lahm gelegt:
 

Anhänge

  • error.png
    error.png
    30,1 KB · Aufrufe: 7
Zuletzt bearbeitet:
Na du hast doch in $user->data['user_id'] die ID des angemeldeten Benutzers drin stehen. Wenn du bestimmte Benutzer ausschließen willst, dann prüf doch was in $user->data['user_id'] drin steht, und wenn da eine (oder mehrere) bestimmte ID drin steht, wird der Codeteil gar nicht ausgeführt.

Da hab ich einen Syntax-Fehler eingebaut, bei

WHERE user_id = ' . $user->data['user_id'] . ' AND user_id != 1;

fehlt hinten vor dem Semikolon der Single-Quote - sorry.
 
Hallo kein Problem ich habe das Single-Quote eingebaut,aber es hat nicht den Gewünschten erfolg,es änder sich nichts der User mit der ID = 2 muss dann immer noch die bestätigung machen.

Ich möchte das so haben das der User mit der ID = 2 von der abfrage nicht betroffen ,alle anderen sollen diese aber davon betroffen sein.

Wie kann ich das mit der if abfrage umsetzen?

Ich bekomme es alleine leider nicht hin?
 
Zurück