4images Forum & Community
General / Allgemeines => Programming => Topic started 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?
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 ...
-
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);
-
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)
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)
-
DB Error: "....right syntax to use near '' at line 4"
line 4 in your code:
WHERE u.user_id =
"$user_id" is empty..
-
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!?
-
na ist jetzt die "$user_id" auf einmal nicht mehr leer?
-
Wie meinst du das jetzt?
In 4images als auch im wbb gibt es die ID "1"
Leer kann das nicht sein
-
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?
-
Ja und du sagtest mir:
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
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"
-
tja da kann ich dir nicht weiterhelfen, deine fehlermeldung sagt es doch eindeutig:
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']".
-
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
-
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);
-
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
<tr>
<td class="row2"><b>Forenbeiträge</b></td>
<td class="row2">{wbb_post}</td>
</tr>
-
du mußt statt:
$wbb_row = $site_db->query($sql);
es so schreiben:
$wbb_row = $site_db->firstrow($sql);
-
Danke, ich werde es testen.
Was genau ist denn der Unterschied?
-
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.
-
Wenn ich das verwende, bekomme ich aber folgende Fehlermeldung
Fatal error: Call to undefined method Db::firstrow() in /www/htdocs/w00b2576/gnv2/media/member.php on line 953
-
schau mal in deinen eingangspost, dort hast du es auch so geschrieben wie es funktioniert.
$wbb_row = $site_db->query_firstrow($sql);
-
Hi Rembrandt,
danke das habe ich gestern auch gesehen. Danke für deine Hilfe. Bisher scheint es zu funktionieren. Danke!!!!!!!!!!!!!!