Seite 1 von 2
User in eigener Tabelle eintragen
Verfasst: 20.03.2013 13:19
von waldkatze
Ich habe einen kleinen Mini-MOD gebastelt mit dem User in eine Datenbanktabelle Daten eintragen anzeigen und wieder löschen können. Das geht alles perfekt.
Ich suche jetzt noch nach einem Lösungsansatz wie ich den eintragenden User mit speichern kann.
Ziel ist, dass der User dann genau wie in einem Forumbeitrag mit dem Datensatz angezeigt werden kann.
Also mit Name, Avatar usw.
Die DevWiki habe ich schon durchsucht finde aber nicht den richtigen Ansatz.
Folgende Funktionen habe ich schon mal mit eingebaut:
Code: Alles auswählen
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
Spalte für ID Nummer des Users ist in Tabelle auch eingefügt.
Re: User in eigener Tabelle eintragen
Verfasst: 24.03.2013 17:09
von waldkatze
Keiner einen Tipp ?
Unten mal der Code zum Einfügen. Aber wie bekomme ich jetzt den User da mit rein?
Code: Alles auswählen
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
$user->session_begin();
$auth->acl($user->data);
$user->setup('mods/test');
// Daten eintragen
$submit = (isset($_POST['submit'])) ? true : false;
if ($submit)
{
$sql = 'INSERT INTO ' . TEST_TABLE . ' ' . $db->sql_build_array('INSERT', array(
'HERSTELLER' => (string) request_var('hersteller',''),
'TYPE' => (string)request_var('typ',''),
'LEISTUNG' => (int)request_var('leistung',''),
'KOMMENTAR' => (string)request_var('kommentar',''))
);
$db->sql_query($sql);
}
page_header($user->lang['FAHRZEUGE']);
$template->set_filenames(array(
'body' => 'test_insert.html'
));
page_footer();
?>
Re: User in eigener Tabelle eintragen
Verfasst: 24.03.2013 18:20
von Charlie_M
Schau mal hier rein:
https://wiki.phpbb.com/Add_users
Zum Bleistift:
Re: User in eigener Tabelle eintragen
Verfasst: 24.03.2013 19:05
von HabNurNeFrage
Hi,
dafür könnte man sich auch mal folgende Seiten im DEV-Wiki ansehen:
https://wiki.phpbb.com/Database_Abstraction_Layer (Erläuterung der Grundfunktionen)
https://wiki.phpbb.com/Dbal.sql_build_array (Erstellen dbal-konformer SQL-Query-Arrays)
Wenn phpbb schon so ein schickes Datenbank-Zugriffs-System vorhält, kann man es doch auch prima nutzen...
LG
Re: User in eigener Tabelle eintragen
Verfasst: 24.03.2013 20:08
von waldkatze
Erst mal Dank an Euch.
Genau die Seiten hatte ich mir schon mal vorgenommen.
Nur reicht mein bescheidenes Wissen nicht aus um das fachgerecht in meinen Code einzubauen.
Ich muss erst mal die Lösung finden, wie automatisch der postende User identifiziert und mit in meine Tabelle eingetragen wird.
Wenn ich den richtigen User erst mal drin stehen habe, bekomme ich das Anzeigen auch hin.
Re: User in eigener Tabelle eintragen
Verfasst: 24.03.2013 20:32
von HabNurNeFrage
Hi,
den Usernamen erhältst Du so:
Code: Alles auswählen
$user_id = request_var('user_id', 0);
$sql = 'SELECT username
FROM ' . USERS_TABLE . '
WHERE user_id = ' . $user_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
echo $row['username'];
LG
Re: User in eigener Tabelle eintragen
Verfasst: 24.03.2013 21:20
von waldkatze
Danke, das habe ich gesucht.
Jetzt ist mir erst mal klar wie der User ausgelesen wird.
Aber wie muss ich jetzt meinen Code ändern damit der User auch in die Tabellenspalte "poster" eingetragen wird?
Re: User in eigener Tabelle eintragen
Verfasst: 24.03.2013 23:44
von Charlie_M
Du hast ja schon den Teil deklariert:
brauchst du nur noch die Daten abholen:
Code: Alles auswählen
$user_name = $user->data['username'];
// Ausgabe
echo $username;
Damit kannst du die Variable
$username nutzen.
Für den Insert schau dir mal Example #1 von:
Dbal.sql build array
an, ist recht deutlich erklärt.
Im Prinzip kannst es auch genauso machen wie die du die anderen Daten bereits einträgst.

Re: User in eigener Tabelle eintragen
Verfasst: 25.03.2013 16:15
von waldkatze
Vielen Dank für die Hilfe.
Jetzt läuft das.
Re: User in eigener Tabelle eintragen
Verfasst: 30.03.2013 13:12
von waldkatze
Nach dem jetzt alles andere funktioniert, möchte ich gern noch den
AVATAR des Users anzeigen lassen der den Eintrag gemacht hat.
So habe ich das jetzt:
Code: Alles auswählen
// Anzeigen mit USERBLOCK
$sql = $db->sql_build_query('SELECT', array(
'SELECT' => 'fz.id, fz.hersteller, fz.typ, fz.leistung, fz.kommentar, u.user_id, u.username, u.user_colour, u.user_posts, u.user_from, user_email, u.user_avatar, u.user_avatar_type, u.user_avatar_width, user_avatar_height ',
'FROM' => array(
TEST_TABLE => 'fz',
USERS_TABLE => 'u',
),
'WHERE' => 'fz.fahrzeug_author = u.user_id',
'ORDER_BY' => 'fz.id'
));
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$template->assign_vars(array(
'FAHRZEUG_ID' => $row['id'],
'HERSTELLER' => $row['hersteller'],
'TYPE' => $row['typ'],
'LEISTUNG' => $row['leistung'],
'KOMMENTAR' => $row['kommentar'],
'USER_ID' => $row['user_id'],
'TZV_AUTHOR_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
'POSTER_POSTS' => $row['user_posts'],
'POSTER_FROM' => $row['user_from'],
// Hier soll AVATAR des Users der den Eintrag gemacht hat stehen
// Fehler zeigt AVATAR des Betrachters
'POSTER_AVATAR' => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
));
}
$db->sql_freeresult($result);
Allerdings wird jetzt der AVATAR des Betrachters angezeigt. Alles andere geht wunschgemäß
Ich nehme an das der Fehler hier liegt:
Code: Alles auswählen
// Hier soll AVATAR des Users der den Eintrag gemacht hat stehen
// Fehler zeigt AVATAR des Betrachters
'POSTER_AVATAR' => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
Kann jemand helfen wie ich das ändern muss ?