SQL zugriff einer eigenen Seite

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Martin P
Mitglied
Beiträge: 1
Registriert: 19.08.2016 17:01

SQL zugriff einer eigenen Seite

Beitrag von Martin P »

Hallo,

ich versuche eine eigene Seite innerhalb der Boards zu erstellen und dort mit Datenbank zugriffen daten heraus zuholen. hierbei habe ich einige Fragen und Probleme.

Vieleicht erst ein paar informationen was ich genau machen möchte. ein Bekannter von mir möchte für sein Kampfsport Prüfungen digitalisieren. Also soll der Prüfer mehr oder weniger mit einem Tablet in der prüfung sitzen und den Schüler bewerten. Da mein Bekannter bereits ein PHPBB Forum nutzt dachte ich mir ich erleitere mir den Login und die Optik so einer Seite und versuche nun die Daten so in die Datenbank zu bekommen. Zum einen will ich sicher stellen das nur jemand der auch in der Richtigen Gruppe ist die Seite sehen und nutzen kann. Zum anderen dachte ich erleichtert es mir die verknüpfung der Tabellen ( ich habe 2 weitere Tabellen in der gleichen Datenbank ). Nur ist das bis jetzt noch garnicht so einfach wie ich dachte.

Diese Seite ist meine Quelle Link

Verständnis Fragen:
Ich brauche eine *.PHP datei um die daten aus zulesen und damit zu arbeiten. Um diese Daten ausgeben zu können schicke ist die daten mit hilfe eines Arrays zu meiner Template datei wo ich die Daten ausgeben kann.
Zum übergeben der Variable schreibe ich

Code: Alles auswählen

$template->assign_vars(array(meine array daten));
zum übergeben von Blockdaten

Code: Alles auswählen

$template->assign_block_vars('block_name', array(meine schleifen daten));
wenn ich das richtig verstanden habe sind Blockdaten daten aus einer Schleife oder ?

Sehe ich das richtig das ich keine verbindung mehr zur Datenbank einrichten muss weil die die ganzezeit offen ist ? Ich finde in keiner orginalen.php datei vom forum ein mysql_connect?

Nun zu meinem Problem:

Fehlercode:

Code: Alles auswählen

Parse error: syntax error, unexpected '$sql' (T_VARIABLE) in /users/lordpam/www/kungfu/phpBB3/test.php on line 35
php-Code:

Code: Alles auswählen

<?php
// Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'config.'. $phpEx);

// Session auslesen und Benutzer-Informationen laden
$user->session_begin();  // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('common');  // Sprachvariablen aus eigener Sprach Datei laden

/*
* Nun folgt erst Dein PHP Code für die neue Seite, also:
* Variablen setzen, Datenbankabfragen, Einfügen und Entfernen von Einträgen usw...
*/
$id = $user->data['user_id'];                                                            #divinieren der Variable $id
echo $id;                                                                                #Test ob die Variable $id Daten enthält und welche Daten
mysql_select_db($dbname)                                                                #Datenbank öffenen
$sql = "SELECT * FROM `phpbb_profile_fields_data` WHERE `user_id` = ".$id." ";            #Die Variable für das auslesen der DB wird eingerichtet
$result = mysql_query($sql);                                                            #Datenbank auslesen
while($row = mysql_fetch_assoc($result)) {                                                #Daten Sortieren ( in das array = $row schreiben )
  echo 'ID = '.$row['user_id'].' <br>Realname = '.$row['pf_name'].'<br><br>';            #Daten ausgabe
};
// Seiten Titel, diese Sprach Variable sollte in der Sprach Datei, 
// welche weiter oben genannt wurde, definiert sein.
page_header($user->lang['MEIN_TITEL']);

// Defniere nun den Dateinamen Deines Templates welches Du benutzen moechtest.
// Dies ist der Name von Deinem Template welches unter /styles/<style>/templates/ zu finden ist.
$template->set_filenames(array(
    'body' => 'typ.html',
));

// Script vervollständigen und Seite anzeigen lassen.
page_footer();
?>
ich habe auch schon in der angegebenen Zeile die Variable $id duch die 2 ersetzt aber ohne erfolg also gehe ich davon aus das die $id nicht leer ist.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: SQL zugriff einer eigenen Seite

Beitrag von gn#36 »

Nur kurz vorab: Die Vorlage dürfte noch funktionieren, ist aber eigentlich für phpBB 3.0, nicht 3.1. Es wäre sinnvoll, aber für einen Anfänger vermutlich schwieriger, eine Erweiterung zu erstellen, die deine Ausgabe erledigt statt eine neue Datei irgendwo abzulegen. Damit kannst du dich aber noch beschäftigen, wenn du die Grundlagen verstanden hast.

Eine PHP Fehlermeldung dieser Art bedeutet immer einen Syntax Fehler (steht ja auch da). Da irgendwas inhaltlich zu ändern wird dieses Problem nicht lösen. Das gilt so ziemlich für alle Parse Errors, wenn du nicht gerade den auszuführenden Code mit deinem Skript selber zusammenbaust.

Deinen Fehler dürftest du ziemlich leicht finden, wenn du einen vernünftigen Editor mit Syntax Check nutzt, nicht nur Syntax Highlighting. Ich nutze ganz gerne die Eclipse PDT, aber es gibt noch andere. Der Editor markiert dir dann direkt beim Tippen schon die fehlerhaften Stellen. In deinem Fall fehlt oberhalb der angegebenen Stelle ein Semikolon. Das ist bei solchen Fehlern übrigens auch häufig der Fall: Der eigentliche Fehler ist kurz vor der angemeckerten Stelle.

Eine Datenbankverbindung baut die Vorlage selbst auf, du brauchst keinerlei mysql Befehle (dazu kommt, dass ich mysql nicht mehr verwenden würde, weil PHP 7 diese Funktionen nicht mehr enthält). phpBB enthält stattdessen das Objekt $db, wofür du alle zugehörigen Klassen unter phpbb/db findest. Mit $result = $db->sql_query($sql) und $db->sql_fetch_row($result) kannst du genau so arbeiten wie mit den mysql Funktionen, kannst aber problemlos das Datenbank Backend tauschen ohne deinen Code zu ändern.

Deine Annahme über die Template Variablen ist korrekt. Im Template setzt du die Schleife mit <!-- BEGIN blockname --> und <!-- END blockname -->, die Variablen bekommen die Bezeichnungen aus dem Array mit dem Zusatz des Blocknamens, also z.B. {blockname.VAR1}, wenn im PHP Teil sowas wie $template->assign_block_vars('blockname', array('VAR1' => $string)); steht.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Extension Bastelstube“