PN-List Mod für Advanced PM-Mod

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
jörg gierth
Mitglied
Beiträge: 473
Registriert: 03.12.2002 20:13
Wohnort: Buseck
Kontaktdaten:

PN-List Mod für Advanced PM-Mod

Beitrag von jörg gierth »

ich probiere für meinen inneren Schweinehund
den Admin_PN_list-Mod auf das Advanced-PM-Mod
nur grob umzu arbeiten.

//Edit
Unten habe ich nochmals neu angefangen zu beschreiben.
Zuletzt geändert von jörg gierth am 24.05.2004 19:11, insgesamt 1-mal geändert.
Benutzeravatar
QCO
Mitglied
Beiträge: 708
Registriert: 15.03.2003 12:30
Wohnort: Leipzig

Beitrag von QCO »

Vielleicht könntest du mal grob umreißen, was du programmieren willst, was der gezeigte Code machen sollte und was stattdessen passiert.
Auch ein aussagekräftigerer Titel für den Thread wäre deiner Sache nur dienlich...
Schnelle direkte Hilfe? Modeinbau? Umfassender, persönlicher Support? Ein individuelles Design/Template?
Ich bin käuflich und löse zu kleinen Preisen Deine Probleme. Anfragen bitte per PN oder Mail.
jörg gierth
Mitglied
Beiträge: 473
Registriert: 03.12.2002 20:13
Wohnort: Buseck
Kontaktdaten:

Beitrag von jörg gierth »

ok wir fangen mal von vorne an


Ich möchte den Admin-PN-lis-Mod auf den
Advanced-PN-Mod umbauen.

Ich habe nun folgende Tabellen:

-phpbb_privmsga
-phpbb_privmsga_recips

in der privmsga stehen die PN-Überschriften, sowie die
Inhalte.
In der privmsga_recips stehen die User ID die die PN geschrieben haben
und der Empfänger.

Ich bin nun schon sowiet , das ich die Überschriften und die Inhalte
angezeigt bekomme.

Was ich nun noch machen möchte ist die Absender_id mit der
User_id zuverknüpfen , so das ich den Namen angezeigt bekomme.

Hier der bis jetzt gehende Code:

Code: Alles auswählen

<?php
global $userdata, $lang, $board_config, $phpEx;

define('IN_PHPBB', true);

if( !empty($setmodules) )
{
	$filename = basename(__FILE__);
	$module['Users']['Users PN'] = $filename;
	return;
}


//
// Let's set the root dir for phpBB
//
$phpbb_root_path = '../';
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);

//
// Set variables
//
$users_per_page = 25;

$start = (isset($HTTP_GET_VARS['start'])) ? intval($HTTP_GET_VARS['start']) : 0;

if( isset($HTTP_POST_VARS['sort']) )
{
	$sort_method = $HTTP_POST_VARS['sort'];
}
else if( isset($HTTP_GET_VARS['sort']) )
{
	$sort_method = $HTTP_GET_VARS['sort'];
}
else
{
	$sort_method = 'privmsg_id';
}

if( isset($HTTP_POST_VARS['order']) )
{
	$sort_order = $HTTP_POST_VARS['order'];
}
else if( isset($HTTP_GET_VARS['order']) )
{
	$sort_order = $HTTP_GET_VARS['order'];
}
else
{
	$sort_order = '';
}


$template->set_filenames(array(
	'body' => 'admin/admin_pn_list_body.tpl')
);

// Count users
$sql = "SELECT count(privmsg_id) as total FROM ".phpbb_privmsga." WHERE privmsg_id > 0";
if(!$result = $db->sql_query($sql))
{
	message_die(GENERAL_ERROR, "Could not count users", "", __LINE__, __FILE__, $sql);
}

$row = $db->sql_fetchrow($result);
$total_users = $row['total'];


$template->assign_vars(array(
	'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'],
	'U_LIST_ACTION' => append_sid("admin_pn_list.$phpEx"),
	'L_SORT' => $lang['Sort'],
	'L_ORDER' => $lang['Order'],
	'L_SORT_DESCENDING' => $lang['Sort_Descending'],
	'L_SORT_ASCENDING' => $lang['Sort_Ascending'],
	'ID_SELECTED' => ($sort_method == 'privmsg_id') ? 'selected="selected"' : '',
	'USERNAME_SELECTED' => ($sort_method == 'username') ? 'selected="selected"' : '',
	'POSTS_SELECTED' => ($sort_method == 'privmsg_time') ? 'selected="selected"' : '',
	'LASTVISIT_SELECTED' => ($sort_method == 'user_lastvisit') ? 'selected="selected"' : '',
	'ASC_SELECTED' => ($sort_order != 'DESC') ? 'selected="selected"' : '',
	'DESC_SELECTED' => ($sort_order == 'DESC') ? 'selected="selected"' : '',
	'TOTAL_USERS' => $total_users
	)
);
$sql = "SELECT * FROM ".phpbb_privmsga."
        ORDER BY privmsg_id DESC
		LIMIT ".$start.",".$users_per_page;
if(!$result = $db->sql_query($sql))
{
	message_die(GENERAL_ERROR, "Could not query Users information", "", __LINE__, __FILE__, $sql);
}


while( $row = $db->sql_fetchrow($result) )
{
	$userrow[] = $row;
}

for ($i = 0; $i < $users_per_page; $i++)
{
	if (empty($userrow[$i]))
	{
		break;
	}

	$row_color = (($i % 2) == 0) ? "row1" : "row2";


    $template->assign_block_vars('userrow', array(
        'COLOR' => $row_color,
        'NUMBER' => $userrow[$i]['privmsg_id'],
        'time' => date($userdata['user_dateformat'], $userrow[$i]['privmsg_time'], $userdata['user_timezone']),
        'subject' => $userrow[$i]['privmsg_subject'],
        'text' => wordwrap( $userrow[$i]['privmsg_text'],100, "<br>", 25),
        'von' => $userrow[$i]['username'],
       	)
	);
}

$template->assign_vars(array(
	'PAGINATION' => generate_pagination(append_sid("admin_pn_list.$phpEx?sort=$sort_method&order=$sort_order"), $total_users, $users_per_page, $start),
	'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $users_per_page ) + 1 ), ceil( $total_users / $users_per_page ))
	) // end array
);

// Finally...
$template->pparse('body');

include('./page_footer_admin.'.$phpEx);

?>
nun habe ich schon folgendes Probiert:

Code: Alles auswählen

$sql = "SELECT * FROM ".phpbb_privmsga." AND ".phpbb_privmsga_recips." 
        ORDER BY privmsg_id DESC 
        WHERE ".privmsga_user_id." = ".users.user_id." AND 
      ".users.username." = $username 
      LIMIT ".$start.",".$users_per_page; 
if(!$result = $db->sql_query($sql)) 
{ 
   message_die(GENERAL_ERROR, "Could not query Users information", "", __LINE__, __FILE__, $sql); 
} 

aber es klappt nicht und ich bekomme folgenden Fehler:

Code: Alles auswählen

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND phpbb_privmsga_recips ORDER BY privmsg_id DESC 

SELECT * FROM phpbb_privmsga AND phpbb_privmsga_recips ORDER BY privmsg_id DESC WHERE privmsga_user_id = usersuser_id AND usersusername = LIMIT 0,25
Ich stelle ich nun di abfrage am besten an.

Gruß Jörg
Benutzeravatar
andreasOymann
Ehemaliges Teammitglied
Beiträge: 2392
Registriert: 10.06.2003 16:29
Wohnort: Hamminkeln
Kontaktdaten:

Beitrag von andreasOymann »

Probiere es mal mit dem SQL-Befehl "LEFT JOIN" ...
Kein Support per PN / Mail / ICQ / MSN ! Dafür gibt´s dieses Forum...
jörg gierth
Mitglied
Beiträge: 473
Registriert: 03.12.2002 20:13
Wohnort: Buseck
Kontaktdaten:

Beitrag von jörg gierth »

Ich habe mal im Handbuch danach gesucht
und folgendes gefunden.

Code: Alles auswählen

SELECT *
    FROM a,b LEFT JOIN c ON (c.key=a.key) LEFT JOIN d ON (d.key=a.key)
    WHERE b.key=d.key;
Aber was bedeuten denn die *.key ??
Sind es es in meinen Fall

Code: Alles auswählen

privmsga_user_id." = ".users.user_id."
und

Code: Alles auswählen

".users.username." = $username 
Antworten

Zurück zu „Coding & Technik“