User in eigener Tabelle eintragen

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.
Benutzeravatar
waldkatze
Ehemaliges Teammitglied
Beiträge: 792
Registriert: 08.03.2013 21:50

User in eigener Tabelle eintragen

Beitrag 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.
Das Bremsen eines Motorrades ist die Verschwendung hochwertiger Geschwindigkeit in sinnlose Wärmeenergie.
Benutzeravatar
waldkatze
Ehemaliges Teammitglied
Beiträge: 792
Registriert: 08.03.2013 21:50

Re: User in eigener Tabelle eintragen

Beitrag 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();
?>
Das Bremsen eines Motorrades ist die Verschwendung hochwertiger Geschwindigkeit in sinnlose Wärmeenergie.
Charlie_M
Mitglied
Beiträge: 1210
Registriert: 17.07.2008 13:09
Kontaktdaten:

Re: User in eigener Tabelle eintragen

Beitrag von Charlie_M »

Schau mal hier rein:
https://wiki.phpbb.com/Add_users

Zum Bleistift:

Code: Alles auswählen

'username'              => $data['username'],
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: User in eigener Tabelle eintragen

Beitrag 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
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
waldkatze
Ehemaliges Teammitglied
Beiträge: 792
Registriert: 08.03.2013 21:50

Re: User in eigener Tabelle eintragen

Beitrag 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.
Das Bremsen eines Motorrades ist die Verschwendung hochwertiger Geschwindigkeit in sinnlose Wärmeenergie.
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: User in eigener Tabelle eintragen

Beitrag 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
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Benutzeravatar
waldkatze
Ehemaliges Teammitglied
Beiträge: 792
Registriert: 08.03.2013 21:50

Re: User in eigener Tabelle eintragen

Beitrag 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?
Das Bremsen eines Motorrades ist die Verschwendung hochwertiger Geschwindigkeit in sinnlose Wärmeenergie.
Charlie_M
Mitglied
Beiträge: 1210
Registriert: 17.07.2008 13:09
Kontaktdaten:

Re: User in eigener Tabelle eintragen

Beitrag von Charlie_M »

Du hast ja schon den Teil deklariert:

Code: Alles auswählen

$user->session_begin();  
$auth->acl($user->data);
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. :wink:
Benutzeravatar
waldkatze
Ehemaliges Teammitglied
Beiträge: 792
Registriert: 08.03.2013 21:50

Re: User in eigener Tabelle eintragen

Beitrag von waldkatze »

Vielen Dank für die Hilfe.
Jetzt läuft das.
Das Bremsen eines Motorrades ist die Verschwendung hochwertiger Geschwindigkeit in sinnlose Wärmeenergie.
Benutzeravatar
waldkatze
Ehemaliges Teammitglied
Beiträge: 792
Registriert: 08.03.2013 21:50

Re: User in eigener Tabelle eintragen

Beitrag 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 ?
Das Bremsen eines Motorrades ist die Verschwendung hochwertiger Geschwindigkeit in sinnlose Wärmeenergie.
Antworten

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