MySQL Abfrage: Fehler

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
efrick
Mitglied
Beiträge: 12
Registriert: 18.01.2012 13:23

MySQL Abfrage: Fehler

Beitrag von efrick »

Hi Leute.

Da bin ich wieder.

Ich habe soeben was versucht und bekommen dabei eine Fehlermeldung:

Mein Quellcode:

Code: Alles auswählen

<?php

define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

include($phpbb_root_path . 'config.' . $phpEx);
include($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

$db = new $sql_db();

$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport);

// We do not need this any longer, unset for safety purposes
unset($dbpasswd);

$sql_in = array(1,2,3,4,5);

$sql = 'SELECT count(*) AS anzahl
    FROM phpbb_users
    WHERE ' . $db->sql_in_set('group_id', $sql_in);

$user = $db->sql_query($sql);

$row = $db->sql_fetchrow($user);

$template->assign_vars(array(
        'ANZAHL'    => $row['anzahl'],
));

?>
Wenn ich den Script ausführen will bekomme ich folgende fehlermeldung:

Fatal error: Cannot redeclare class dbal_mysql in C:\xampp\htdocs\phpbb\includes\db\mysql.php on line 490

Woran könnte das liegen?

Wäre sehr froh über eine Antwort :-)

Danke
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12179
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: MySQL Abfrage: Fehler

Beitrag von Mahony »

Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
efrick
Mitglied
Beiträge: 12
Registriert: 18.01.2012 13:23

Re: MySQL Abfrage: Fehler

Beitrag von efrick »

Habe nun alle includes und include_once umgeschrieben, trotzdem ist die fehlermeldung noch da :(
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12179
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: MySQL Abfrage: Fehler

Beitrag von Mahony »

Hallo
Du inkludierst die config.php. Warum hast du dann diesen Code

Code: Alles auswählen

$db = new $sql_db();

$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport);
in deiner Datei?

P.S. Ansonsten schau auch mal hier --> http://wiki.phpbb.com/Main_Page
Hier insbesondere diese Anleitung --> http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten

Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
efrick
Mitglied
Beiträge: 12
Registriert: 18.01.2012 13:23

Re: MySQL Abfrage: Fehler

Beitrag von efrick »

Diese Zeilen habe ich nun auskommentiert, immer noch die gleiche Fehlermeldung :cry:
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12179
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: MySQL Abfrage: Fehler

Beitrag von Mahony »

Hallo
Schau dich am besten mal hier um http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten

Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
efrick
Mitglied
Beiträge: 12
Registriert: 18.01.2012 13:23

Re: MySQL Abfrage: Fehler

Beitrag von efrick »

Diese Seite habe ich schon mehrmals durchgelesen.

Trotzdem komme ich nicht drauf, was an meinem Quellcode nicht stimmt:

Code: Alles auswählen

<?php

define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

include_once($phpbb_root_path . 'config.' . $phpEx);
include_once($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
include_once($phpbb_root_path . 'common.' . $phpEx);
include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx);

$sql = 'SELECT count(*) AS anzahl
    FROM phpbb_users
    WHERE group_id IN (1,2,3,4,5)'; 

$result = $db->sql_query($sql);

$row = $db->sql_fetchrow($result);

$template->assign_vars(array(
        'ANZAHL'    => $row['anzahl'],
));

page_header('Hallo');

$template->set_filenames(array(
    'body' => 'mein_template.html',
));

page_footer();

?>
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12179
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: MySQL Abfrage: Fehler

Beitrag von Mahony »

Hallo
Du benötigst doch nur das hier (am Anfang der Datei)

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
Ansonsten solltest du dich lediglich an die Coding guidelines --> http://area51.phpbb.com/docs/30x/coding-guidelines.html halten.


Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
efrick
Mitglied
Beiträge: 12
Registriert: 18.01.2012 13:23

Re: MySQL Abfrage: Fehler

Beitrag von efrick »

Danke für die Antworten, das hat wunderbar geklappt.

Aber ich hätte da vielleicht noch eine Frage:

Wenn ich mein Template in das overall-Templatte einbinde und und dann das Forum starte, wird die {ANZAHL} in meinel Template nicht angezeigt, weil ich ja in diesem Moment meinen Script nicht ausführe.

Meine Frage ist:

Wie kriege ich meine Script in diesem Moment zum laufen, so dass die die ANZAHL auch beim Aufruf der Startseite angezeigt wird?

Und wie gesagt, mit geht es dabei nicht um die Anzahl der User, sonder um irgendwelche Daten, die ich auf der Stastseite durch ein Template zeigen will, ohne den eigentlichen Quellcode von phpBB zu verändern.
Gibt es da nicht sowas wie hooks im Quellcode?

Ich hoffe meine Frage ist verständlich geworden :)

Danke im voraus.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: MySQL Abfrage: Fehler

Beitrag von Helmut »

Hallo efrick,

du willst also den Wert {ANZAHL} auf allen Seiten angezeigt bekommen, habe ich das richtig verstanden?

Wenn ja, dann ist es ganz einfach, du gehts so vor:

Öffne die includes/functions.php und finde folgendes:

Code: Alles auswählen

    // The following assigns all _common_ variables that may be used at any point in a template.
    $template->assign_vars(array(
 
und füge davor deinen Code ein:

Code: Alles auswählen

// Dein Code
$sql = 'SELECT count(*) AS anzahl
    FROM' . USERS_TABLE . '
    WHERE group_id IN (1,2,3,4,5)';

$result = $db->sql_query($sql);

$row = $db->sql_fetchrow($result);
//--------------------------
 
finde folgendes:

Code: Alles auswählen

    // The following assigns all _common_ variables that may be used at any point in a template.
    $template->assign_vars(array(
  
und füge danach ein:

Code: Alles auswählen

'ANZAHL'    => $row['anzahl'], 
Jetzt kannst du {ANZAHL}an beliebiger Stelle in deinem Forum einbauen, muss nicht zwinfgend die overall_header.html sein und du hast den Wert immer da.

Wenn du einen längeren Code machst, dann würde ich den Code in eine eigene z.B. includes/functions_deinedatei.php auslagern und mit include($phpbb_root_path . 'includes/functions_deinedatei.' . $phpEx); vor // The following assigns all _common_ variables that may be used at any point in a template. einbinden.

Deine includes/functions_deinedatei.php würde dann so aussehen:

Code: Alles auswählen

<?php
/**
*
* @author Original Author 
* 
*
* @package svi
* @version $Id: functions_deinedatei.php,v 0.0.1 2012/01/19 Exp $
* @copyright (c) 2012 .....
* @license http://opensource.org/licenses/gpl-license.php GNU Public License 
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
    die('Hacking Attempt!'); 
}
    
//Ab hier dein Code
$sql = 'SELECT count(*) AS anzahl
    FROM' . USERS_TABLE . '
    WHERE group_id IN (1,2,3,4,5)';

$result = $db->sql_query($sql);

$row = $db->sql_fetchrow($result);

//Ausgabe
$template->assign_vars(array(
        'ANZAHL'    => $row['anzahl'],
));


?>
Eine eigene php Datei ist nur interessant wenn du z.B. eine zusätzliche Seite in dein Forum einbauen willst wie etwa ein Impressum, der Code recht lang ist oder du den Code nur für bestimmte Seiten brauchst.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“