4images Forum & Community

General / Allgemeines => Programming => Topic started by: Sunny C. on April 25, 2011, 07:56:19 PM

Title: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 25, 2011, 07:56:19 PM
Hi,
I would like to spend the written contributions from the Forum in the 4images user profile.
The users in the Forum and 4images always the same ID

--
Hallo,
ich würde gerne die geschrieben Beiträge aus dem Forum in dem 4images-User-Profil ausgeben.
Die User haben in 4images als auch im Forum immer die gleiche ID

member.php
//-----------------------------------------------------
//--- Show Profile ------------------------------------
//-----------------------------------------------------

// WBB Datenbank auslesen
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = c.user_id)
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE c.user_id = $user_id
          ORDER BY c.user_name ASC";
  $result = $site_db->query($sql);

and
      "lang_icq" => $lang['icq'],
 "wbb_post" => $result['posts'],

in member_profile.html
{wbb_post}

But that does not work. Did I miss something?
Aber das funktioniert nicht. Habe ich etwas übersehen?

Code: [Select]
DB Error: Bad SQL Query: SELECT a.userID, a.posts FROM 4images_users u ON (u.user_id = c.user_id) LEFT JOIN wbb1_1_user a ON (a.userID = u.user_id) WHERE c.user_id = ORDER BY c.user_name ASC
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 'ON (u.user_id = c.user_id) LEFT JOIN wbb1_1_user a ON (a.userID = u.us' at line 2

This Works:
  $sql = "SELECT posts
          FROM (wbb1_1_user w, ".USERS_TABLE." u)
          WHERE w.userID = u.user_id";
  $wbb_row = $site_db->query_firstrow($sql);
But is this Correct?

Edit 2:
All dont work, and this dont work too
  $sql = "SELECT w.posts, u.user_id
          FROM ".USERS_TABLE." u
 LEFT JOIN wbb1_1_user w ON (w.userID = ".get_user_table_field("u.", "user_id").")
          WHERE u.user_id = $user_id";
  $wbb_row = $site_db->query_firstrow($sql);
With this code, I spent every user the same ...
  $sql = "SELECT posts
          FROM (wbb1_1_user w, ".USERS_TABLE." u)
          WHERE w.userID = u.user_id";
  $wbb_row = $site_db->query_firstrow($sql);
As I said, that is USER ID in the Forum and 4images the same.

Dont work:
$sql = "SELECT posts
        FROM wbb1_1_user
WHERE userID = '".get_user_info($user_id)."'";
$wbb_row = $site_db->query_firstrow($sql);

Dont work
$sql = "SELECT posts
        FROM wbb1_1_user
WHERE userID = '$user_id'";
$wbb_row = $site_db->query_firstrow($sql);

Dont work
  $sql = "SELECT posts
          FROM (wbb1_1_user w, ".USERS_TABLE." u)
          WHERE ".$user_table_fields['user_id']." = w.userID";
  $wbb_row = $site_db->query_firstrow($sql);

  $sql = "SELECT posts
          FROM (wbb1_1_user w, ".USERS_TABLE." u)
          WHERE w.userID = ".$user_table_fields['user_id']."";
  $wbb_row = $site_db->query_firstrow($sql);

  $sql = "SELECT posts
          FROM (wbb1_1_user w, ".USERS_TABLE." u)
          WHERE w.userID = ".$user_row['user_id']."";
  $wbb_row = $site_db->query_firstrow($sql);

  $sql = "SELECT posts
          FROM (wbb1_1_user w, ".USERS_TABLE." u)
          WHERE w.userID = '$user_id'";
  $wbb_row = $site_db->query_firstrow($sql);

.... i dont no ...
Title: Re: WBB User Post´s in 4images User Profile
Post by: V@no on April 27, 2011, 05:24:20 AM
A little lesson about MySQL query.

when you are dealing with multiple tables in the same query, you must either use full table name or you can create short aliases.
In your first code:
//-----------------------------------------------------
//--- Show Profile ------------------------------------
//-----------------------------------------------------

// WBB Datenbank auslesen
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = c.user_id)
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE c.user_id = $user_id
          ORDER BY c.user_name ASC";
  $result = $site_db->query($sql);
you are using two tables: USERS_TABLE and wbb1_1_user
For USERS_TABLE you chosen an alias "u" and for wbb1_1_user an alias "a", it's all good, but then all of sudden there is an unknown alias "c" comes into play:  c.user_id and c.user_name
But that is not actual error that mysql is complaining but the structure of the whole line is incorrect:
FROM ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = c.user_id)

Try something like this:
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE u.user_id = $user_id
          ORDER BY u.user_name ASC";
  $result = $site_db->query($sql);
Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 27, 2011, 07:01:29 PM
Hi Vano,

Thank you for your information. I have tried the following:

search in member.php
//-----------------------------------------------------
//--- Show Profile ------------------------------------
//-----------------------------------------------------
if ($action == "showprofile") {
Below I have inserted the
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE u.user_id = $user_id";
  $wbb_row = $site_db->query($sql);
"lang_icq" => $lang['icq']
with
"lang_icq" => $lang['icq'],
"wbb_post" => $wbb_row['posts']
result: live (http://germananimanga.de/media/member.php?action=showprofile&user_id=1)
Code: [Select]
DB Error: Bad SQL Query: SELECT a.userID, a.posts FROM 4images_users u LEFT JOIN wbb1_1_user a ON (a.userID = u.user_id) WHERE u.user_id =
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 '' at line 4

So 4images and WoltLab Burning board are installed in the same database.
It should output from the WBB, the number of written forum posts. Similar to this:    Extern Avatar from WBB in 4images Comment  (http://www.4homepages.de/forum/index.php?topic=27520.0)
Title: Re: WBB User Post´s in 4images User Profile
Post by: Rembrandt on April 27, 2011, 07:16:28 PM
Code: [Select]
DB Error: "....right syntax to use near '' at line 4"line 4 in your code:
 WHERE u.user_id =

"$user_id" is empty..
Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 27, 2011, 07:24:18 PM
Jetzt habe ich das auf das geändert
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE userID = $user_id";
  $wbb_row = $site_db->query($sql);

und auch das geht nicht, im anhang ist ein screen wo man sehen kann was ausgelesen werden soll.

Wie gesagt. 4images und das wbb sind in einer Datenbank. Man muss ja dann nur auf die Tabelle zugreifen und anhand der ID das Feld "posts" auslesen oder nicht!?
Title: Re: WBB User Post´s in 4images User Profile
Post by: Rembrandt on April 27, 2011, 07:26:34 PM
na ist jetzt die "$user_id" auf einmal nicht mehr leer?
Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 27, 2011, 07:31:22 PM
Wie meinst du das jetzt?
In 4images als auch im wbb gibt es die ID "1"
Leer kann das nicht sein
Title: Re: WBB User Post´s in 4images User Profile
Post by: Rembrandt on April 27, 2011, 07:33:20 PM
na bitte die fehlermeldung hast du doch gepostet:
http://www.4homepages.de/forum/index.php?topic=29527.msg157116#msg157116
und meine antwort darauf hast du dann ja nicht gelesen, oder?
Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 27, 2011, 07:40:28 PM
Ja und du sagtest mir:
Code: [Select]
DB Error: "....right syntax to use near '' at line 4"line 4 in your code:
 WHERE u.user_id =

"$user_id" is empty..
Und $user_id ist doch von 4images selber. Ich weis nur nicht was genau damit gemeint ist, dass etwas leer ist.
Der Code funktioniert nicht
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE u.user_id = $user_id";
  $wbb_row = $site_db->query($sql);
Da habe ich gedacht, dass aus dem u.user_id das a.userID werden muss
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE a.userID = $user_id";
  $wbb_row = $site_db->query($sql);
Aber das kommt das gleiche
Code: [Select]
DB Error: Bad SQL Query: SELECT a.userID, a.posts FROM 4images_users u LEFT JOIN wbb1_1_user a ON (a.userID = u.user_id) WHERE a.userID =
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 '' at line 4
Jetzt weis ich ja nicht woran das liegt.
Aus der Tabelle wbb1_1_user soll das Feld posts ausgelesen werden. Damit auch bei jedem User die richtige Zahl steht, ist es ja wichtig, dass die ID gleich ist.
bei den ersten Versuchen habe ich das versucht
  $sql = "SELECT posts
          FROM (wbb1_1_user w, ".USERS_TABLE." u)
          WHERE w.userID = u.user_id";
  $wbb_row = $site_db->query_firstrow($sql);
Er gibt mir zwar auch die Beiträge aus, aber nur von einem User. Also in jedem Profil wird die gleiche Anzahl angezeigt wie für den User mit der ID "1"
Title: Re: WBB User Post´s in 4images User Profile
Post by: Rembrandt on April 27, 2011, 08:13:08 PM
tja da kann ich dir nicht weiterhelfen, deine fehlermeldung sagt es doch eindeutig:
Code: [Select]
DB Error: "....right syntax to use near '' at line 4"in deiner SQL zeile 4 steht:
WHERE u.user_id = $user_id";


und wenn du deinen code, nach:
//--- Show Profile ------------------------------------
//-----------------------------------------------------

einfügst, ist deine variabe "$user_id" leer, du verwendest für deine SQL WHERE abfrage ein leere variable und dadurch bekommst du die fehlermeldung.
verwende doch "$userinfo['user_id']".
Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 27, 2011, 08:33:22 PM
Wie? Dann geht das nicht?
Oder besser gefragt, wenn Du beispielsweise diese Tabellen auslesen willst, wo würdest du denn dann diesen Code hinpacken? Und wie würde deine Abfrage dazu aussehen?

So geht das auch nicht
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE a.userID = ".$userinfo['user_id']."";
  $wbb_row = $site_db->query($sql);

Damit das im Profil ausgegeben wird, muss das doch in diesem Bereich oder nicht?
//-----------------------------------------------------
//--- Show Profile ------------------------------------
//-----------------------------------------------------

Wenn ich das hier
  $sql = "SELECT a.userID, a.posts
          FROM ".USERS_TABLE." u
          LEFT JOIN wbb1_1_user a ON (a.userID = ".get_user_table_field("u.", "user_id").")
          WHERE u.user_id = $user_id";
  $wbb_row = $site_db->query($sql);

über das hier einfüge
    $site_template->register_vars(array(
      "user_id" => $user_row['user_id'],
      "user_name" => (isset($user_row['user_name'])) ? format_text($user_row['user_name'], 2) : REPLACE_EMPTY,
      "user_email" => $user_email,
      "user_email_save" => $user_email_save,
      "user_mailform_link" => $user_mailform_link,
      "user_email_button" => $user_email_button,

Dann bekomme ich keine Fehlermeldung, aber mir wird auch nichts angezeigt
Title: Re: WBB User Post´s in 4images User Profile
Post by: Rembrandt on April 27, 2011, 09:54:17 PM
wenn du das dort einbaust dann hat die var " $user_id" die ID des profilbesitzers, ich denke das möchtest du ja.
und mit der folgenden SQL abfrage sollte das dann auch funktionieren.

   $sql = "SELECT userID, posts
          FROM wbb1_1_user
          WHERE userID = $user_id
          ";
$wbb_row = $site_db->query($sql);

Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 28, 2011, 04:53:19 PM
Bin ich doof oder was?
Es wird nichts ausgegeben.......
Auszug
    else {
      $user_email = REPLACE_EMPTY;
      $user_email_save = REPLACE_EMPTY;
      $user_mailform_link = REPLACE_EMPTY;
      $user_email_button = REPLACE_EMPTY;
    }

   $sql = "SELECT userID, posts
          FROM wbb1_1_user
          WHERE userID = $user_id";
   $wbb_row = $site_db->query($sql);

    $site_template->register_vars(array(
      "user_id" => $user_row['user_id'],
      "user_name" => (isset($user_row['user_name'])) ? format_text($user_row['user_name'], 2) : REPLACE_EMPTY,
      "user_email" => $user_email,
      "user_email_save" => $user_email_save,
      "user_mailform_link" => $user_mailform_link,
      "user_email_button" => $user_email_button,
      "user_join_date" => (isset($user_row['user_joindate'])) ? format_date($config['date_format'], $user_row['user_joindate']) : REPLACE_EMPTY,
      "user_last_action" => (isset($user_row['user_lastaction'])) ? format_date($config['date_format']." ".$config['time_format'], $user_row['user_lastaction']) : REPLACE_EMPTY,
      "user_homepage" => $user_homepage,
      "user_homepage_button" => $user_homepage_button,
      "user_icq" => $user_icq,
      "user_icq_button" => $user_icq_button,
      "user_icq_status" => (isset($user_row['user_icq'])) ? get_icq_status($user_row['user_icq']) : REPLACE_EMPTY,
      "user_comments" => (isset($user_row['user_comments'])) ? $user_row['user_comments'] : REPLACE_EMPTY,
      "lang_profile_of" => $lang['profile_of'],
      "lang_show_user_images" => preg_replace("/".$site_template->start."user_name".$site_template->end."/siU", format_text($user_row['user_name'], 2), $lang['show_user_images']),
      "url_show_user_images" => $site_sess->url(ROOT_PATH."search.php?search_user=".urlencode($user_row['user_name'])),
      "lang_join_date" => $lang['join_date'],
      "lang_last_action" => $lang['last_action'],
      "lang_comments" => $lang['comments'],
      "lang_email" => $lang['email'],
      "lang_homepage" => $lang['homepage'],
      "lang_icq" => $lang['icq'],
  "wbb_post" => $wbb_row['posts']
    ));

Was mache ich denn da falsch? Eine Fehlermeldung bekomme ich auch nicht

In der member_profile.html
Code: [Select]
        <tr>
          <td class="row2"><b>Forenbeiträge</b></td>
          <td class="row2">{wbb_post}</td>
        </tr>
Title: Re: WBB User Post´s in 4images User Profile
Post by: Rembrandt on April 28, 2011, 07:42:39 PM
du mußt statt:
Code: [Select]
$wbb_row = $site_db->query($sql);
es so schreiben:
Code: [Select]
$wbb_row = $site_db->firstrow($sql);
Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 28, 2011, 10:00:35 PM
Danke, ich werde es testen.
Was genau ist denn der Unterschied?
Title: Re: WBB User Post´s in 4images User Profile
Post by: Rembrandt on April 29, 2011, 07:36:28 AM
Danke, ich werde es testen.
Was genau ist denn der Unterschied?
mit "$site_db->query($sql);" sendest du deine anfrage an die datenbank und es werden alle ergebnisse zurückgeliefert.
die du dann mit einer "foreach" od. "while schleife" durchlaufen müßtest um sie zeilenweise auszugeben.
mit "firstrow" wird das erste vorhandene ergebniss zurückgeliefert.
Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on April 30, 2011, 11:10:46 PM
Wenn ich das verwende, bekomme ich aber folgende Fehlermeldung
Quote
Fatal error: Call to undefined method Db::firstrow() in /www/htdocs/w00b2576/gnv2/media/member.php on line 953
Title: Re: WBB User Post´s in 4images User Profile
Post by: Rembrandt on May 01, 2011, 04:14:40 AM
schau mal in deinen eingangspost, dort hast du es auch so geschrieben wie es funktioniert.

Code: [Select]
$wbb_row = $site_db->query_firstrow($sql);

Title: Re: WBB User Post´s in 4images User Profile
Post by: Sunny C. on May 01, 2011, 12:24:08 PM
Hi Rembrandt,

danke das habe ich gestern auch gesehen. Danke für deine Hilfe. Bisher scheint es zu funktionieren. Danke!!!!!!!!!!!!!!