Seite 1 von 1

PN-List Mod für Advanced PM-Mod

Verfasst: 24.05.2004 18:33
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.

Verfasst: 24.05.2004 18:48
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...

Verfasst: 24.05.2004 19:09
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

Verfasst: 24.05.2004 22:28
von andreasOymann
Probiere es mal mit dem SQL-Befehl "LEFT JOIN" ...

Verfasst: 30.05.2004 18:02
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