Dummes Problem mit SQL-Abfrage im phpbb!

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.
JLoop©

Dummes Problem mit SQL-Abfrage im phpbb!

Beitrag 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©
Benutzeravatar
Mister_X
Ehemaliges Teammitglied
Beiträge: 7102
Registriert: 24.05.2001 02:00
Wohnort: Augsburg

Beitrag 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 ? :roll:
JLoop©

Beitrag 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©
JLoop©

Beitrag von JLoop© »

Niemand ne idee woran es liegen kann das alles 5 fach angezeigt wird?

JLoop© :cry:
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag 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?
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
JLoop

Beitrag 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©
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Ersetz mal die WHERE-bedingung durch

Code: Alles auswählen

WHERE b.user_id = $user_id AND u.user_id=b.user_id
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
...
JLoop©

Beitrag 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©
JLoop©

Beitrag 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>': '&nbsp;';
$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©
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“