Seite 1 von 2
Dummes Problem mit SQL-Abfrage im phpbb!
Verfasst: 20.09.2002 13:52
von JLoop©
Hi,
ich habe mir eine kleine sql abfrage zusammen gezimmert aber irgendwie muss da ein fehler drin sein denn alle daten werden 5 fach angezeigt:
Code: Alles auswählen
$sql = "SELECT b.edk_name, b.edk_id, b.user_id, b.added, u.username
FROM " . EDKLIST_TABLE . " b, " . USERS_TABLE . " u
WHERE b.user_id = $user_id
ORDER BY b.added";
Woran kann das liegen?
Gruß JLoop©
Verfasst: 20.09.2002 13:55
von Mister_X
da geht es eher um das drumherum, hast du das ganze vielleicht in einer Schleife die 5x aufgerufen wird drin ? Oder hast du vielleicht jeden Eintrag 5x in der Datenbank ?

Verfasst: 20.09.2002 14:00
von JLoop©
Nein jeder Eintrag ist nur einmal in der DB!Es ist eine ganz normale ausgabe wie sie hunderfach im phpbb ist!Hier mal die gqnze abfrage/ausgabe:
Code: Alles auswählen
$sql = "SELECT b.edk_name, b.edk_id, b.user_id, b.added, u.username
FROM " . EDKLIST_TABLE . " b, " . USERS_TABLE . " u
WHERE b.user_id = $user_id
ORDER BY b.added";
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Error getting edk listing', '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$template->assign_block_vars('userrow', array(
'USERNAME' => $row['edk_name'],
'ROW_NUMBER' => $i + ( $HTTP_GET_VARS['start'] ),
'U_PROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$edk_id"),
'U_PM' => '<a href="privmsg.'.$phpEx.'?mode=post&u='. $edk_id .'"><img src="' . $images['icon_pm'] . '" alt="' . $lang['Send_private_message_first'] . ' '. $edk_name .' ' . $lang['Send_private_message_sec'] . '" title="' . $lang['Send_private_message_first'] . ' '. $edk_name .' ' . $lang['Send_private_message_sec'] . '" border="0" /></a>',
'U_EMAIL' => '<a href="' . $email_url . '"><img src="' . $images['icon_email'] . '" alt="' . $lang['Send_email_first'] . ' '. $edk_name .' ' . $lang['Send_email_sec'] . '" title="' . $lang['Send_email_first'] . ' '. $edk_name .' ' . $lang['Send_email_sec'] . '" border="0" /></a>',
'U_MSN' => $msn,
'DELETE_IMAGE' => $del_image)
);
}
Gruß JLoop©
Verfasst: 20.09.2002 15:05
von JLoop©
Niemand ne idee woran es liegen kann das alles 5 fach angezeigt wird?
JLoop©

Verfasst: 20.09.2002 16:25
von itst
Das wird an der while-Schleife liegen.
Das eigentliche problem ist aber die Abfrage bzw. die Tabellen-Struktur.
Wie genau sieht die EDKLIST_TABLE aus und was willst Du eigentlich anzeigen?
Verfasst: 20.09.2002 16:58
von JLoop
Die struktur ist so aufgebaut:
Code: Alles auswählen
CREATE TABLE phpbb_edklist (
edklist_id int(1) NOT NULL auto_increment,
added varchar(50) NOT NULL default '',
user_id int(8) NOT NULL default '0',
edk_id int(8) NOT NULL default '0',
edk_name varchar(40) NOT NULL default '',
PRIMARY KEY (edklist_id)
) TYPE=MyISAM;
Anzeigen will ich die User die darin gespeichert sind!So funzt es ja:
Code: Alles auswählen
$sql = "SELECT edk_name, edk_id, user_id, added
FROM " . EDKLIST_TABLE . "
WHERE user_id = $user_id
ORDER BY added";
aber ich brauche zusätzlich noch die user_msnm aus dem USERS_TABLE!
Gruß JLoop©
Verfasst: 21.09.2002 14:56
von Pyramide
Ersetz mal die WHERE-bedingung durch
Alternativ kannst du auch JOIN verwenden:
http://www.mysql.com/doc/en/JOIN.html
Code: Alles auswählen
SELECT ...
FROM " . EDKLIST_TABLE . " b LEFT JOIN " . USERS_TABLE . " u ON u.user_id=b.user_id
...
Verfasst: 21.09.2002 15:17
von JLoop©
Hab ich auch schon probiert aber die msnm wird net angezeigt!Scheinbar kann die net ausgelesen werden

Auch der msnm Button lässt sich net anzeigen.....
Gruß JLoop©
Verfasst: 21.09.2002 15:23
von JLoop©
Hier nochmal der ganze abschnitt:
Code: Alles auswählen
$sql = "SELECT b.edk_name, b.edk_id, b.user_id, b.added, u.user_id, u.user_msnm
FROM " . EDKLIST_TABLE . " b
LEFT JOIN " . USERS_TABLE . " u ON b.user_id = u.user_id
WHERE b.user_id = $user_id
ORDER BY b.added";
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Error getting edk listing', '', __LINE__, __FILE__, $sql);
}
$numrows = $db->sql_numrows($result);
if ( $db->sql_numrows($result) > 0)
{
$i = 0;
while ( $row = $db->sql_fetchrow($result) )
{
$i++;
$edk_id = $row['edk_id'];
$edk_name = $row['edk_name'];
$msn_img = ( $row['user_msnm'] ) ? '<a href=javascript:DoInstantMessage("'.$row['user_msnm'].'","'.$edk_name.'")><img src="' . $images['icon_msnm'] . '" alt="' . $lang['MSN'] . '" title="' . $lang['MSN'] . '" border="0" /></a>': ' ';
$msn = $msn_img;
$email_url = ( $board_config['board_email_form'] ) ? append_sid("profile.$phpEx?mode=email&" . POST_USERS_URL .'=' . $edk_id) : 'mailto:' . $user_email;
$del_url = append_sid("edklist.$phpEx?mode=delete&edk_id=$edk_id&user_id=$user_id");
$del_image = '<a href="' . $del_url . '"><img src="' . $images['icon_delpost'] . '" alt="' .$lang['Delete'] . '" border="0" /></a>';
$template->assign_block_vars('userrow', array(
'USERNAME' => $row['edk_name'],
'ROW_NUMBER' => $i + ( $HTTP_GET_VARS['start'] ),
'U_PROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$edk_id"),
'U_PM' => '<a href="privmsg.'.$phpEx.'?mode=post&u='. $edk_id .'"><img src="' . $images['icon_pm'] . '" alt="' . $lang['Send_private_message_first'] . ' '. $edk_name .' ' . $lang['Send_private_message_sec'] . '" title="' . $lang['Send_private_message_first'] . ' '. $edk_name .' ' . $lang['Send_private_message_sec'] . '" border="0" /></a>',
'U_EMAIL' => '<a href="' . $email_url . '"><img src="' . $images['icon_email'] . '" alt="' . $lang['Send_email_first'] . ' '. $edk_name .' ' . $lang['Send_email_sec'] . '" title="' . $lang['Send_email_first'] . ' '. $edk_name .' ' . $lang['Send_email_sec'] . '" border="0" /></a>',
'U_MSN' => $msn,
'DELETE_IMAGE' => $del_image)
);
}
}
else
{
$row_color = $theme['td_color1'];
$row_class = $theme['td_class1'];
$no_username = "No Users in Ignore List";
$uprofile = "";
$del_image = "";
$template->assign_block_vars('userrow', array(
'ROW_COLOR' => '#' . $row_color,
'ROW_CLASS' => $row_class,
'USERNAME' => $no_username,
'U_PROFILE' => $uprofile,
'DELETE_IMAGE' => $del_image)
);
}
Vieleicht hat ja noch wer ne idee
Grüße JLoop©
Verfasst: 21.09.2002 15:36
von Pyramide
JLoop© hat geschrieben:Hab ich auch schon probiert aber die msnm wird net angezeigt!Scheinbar kann die net ausgelesen werden

Auch der msnm Button lässt sich net anzeigen.....
Gib doch die Abfrage mal in phpMyAdmin ein, dann siehst du ob der Fehler im PHP- oder SQLcode liegt.