PDA

View Full Version : New Hacker Help?


Bill Thebert
03-14-2004, 10:46 PM
Let me start by saying I'm really new at this, and I'm working on my very first [tiny] hack of my own -- not just applying someone else's hack by means of the cookbook instructions.

I want to write an additional piece of information (from a custom profile field) to the 'thread' table when a new thread is created.

I've created the new column in the 'thread' table; it's present and has the same properties as the source field (field9) in the 'userfield' table.

I've located the following code in /includes/functions_newpost.php :


INSERT INTO " . TABLE_PREFIX . "thread(title, lastpost, forumid, open, replycount, postusername, postuserid, lastposter, dateline,
iconid, visible, attach, similar)
VALUES
('" . addslashes($post['title']) . "', " . TIMENOW . ", " . intval($foruminfo['forumid']) . ",
1, 0, '" . addslashes($post['postusername']) . "', $bbuserinfo[userid],
'" . addslashes($post['postusername']) . "', " . TIMENOW . ", $post[iconid], $post[visible],
$totalattachments, '" . addslashes($similarthreads) . "')


and I've changed it to:


INSERT INTO " . TABLE_PREFIX . "thread(title, lastpost, forumid, open, replycount, postusername, postuserid, lastposter, dateline,
iconid, visible, attach, similar, field9)
VALUES
('" . addslashes($post['title']) . "', " . TIMENOW . ", " . intval($foruminfo['forumid']) . ",
1, 0, '" . addslashes($post['postusername']) . "', $bbuserinfo[userid],
'" . addslashes($post['postusername']) . "', " . TIMENOW . ", $post[iconid], $post[visible],
$totalattachments, '" . addslashes($similarthreads) . "', $bbuserinfo[field9])


All I've done is added the new field name to be filled in, and the new source field from which the data is to be grabbed.

When I execute the code by submitting a new post (creating a new thread), this is the SQL error message I see:


Invalid SQL:
INSERT INTO thread(title, lastpost, forumid, open, replycount, postusername, postuserid, lastposter, dateline,
iconid, visible, attach, similar, field9)
VALUES
('Test', 1079310282, 2,
1, 0, 'Bill Thebert', 1,
'Bill Thebert', 1079310282, 0, 1,
0, '', AK)

mysql error: Unknown column 'AK' in 'field list'

mysql error number: 2000

Date: Sunday 14th of March 2004 06:24:42 PM
Username: Bill Thebert


Can someone please spare a moment to explain to me what this error message is trying to tell me?

The data in 'field9' of my user profile *is* the two-character string "AK"; so it appears that the $bbuserinfo[field9] variable is correct, and the data is being retrieved properly.

The new column in the 'thread' table *is* entitled 'field9'.

I just can't figure out what Unknown column 'AK' in 'field list' is trying to tell me.

Thanks,

Bill

Link14716
03-15-2004, 12:56 AM
Change$bbuserinfo[field9]to'$bbuserinfo[field9]'

The value needs to be surrounded by quotes or else it will think you are telling it to put the contents of the AK column of the thread table into the field9 column of the thread table, and since there is no AK column in the thread table it fails.

Bill Thebert
03-15-2004, 01:30 AM
Change$bbuserinfo[field9]to'$bbuserinfo[field9]'

The value needs to be surrounded by quotes or else it will think you are telling it to put the contents of the AK column of the thread table into the field9 column of the thread table, and since there is no AK column in the thread table it fails.

Thank you. That sure did the trick -- though I'm not sure I understand it fully.

$bbuserinfo[userid] is NOT in single quotes, and appears in the very same statement. Can you help me to understand the difference?

$bbuserinfo[userid] needs to be plucked from the 'users' table and written to the userid column of the threads table, right? Just like 'field9'?

Why the quotes in one case, but not in the other?

Bill

P.S. -- Thanks for being gentle.

Link14716
03-15-2004, 02:55 AM
It's probably since the field that the userid is being inserted into is an INT (SMALLINT, INT, BIGINT, etc.). ;)

Bill Thebert
03-15-2004, 04:30 AM
OK, I'm still plugging along here.

This must be really kindergarten stuff for most of y'all.

Now that I've got the new column in the 'thread' table,

and now that newthread.php is poking the right value into place whenever a new thread is created,

I'd like to start pulling that data back out & start using $thread[field9] as a variable in my threadbit template.

I've put that into the template in the proper place, but it's still coming up blank.

That's probably because forumdisplay.php (or some function called by forumdisplay.php) is not READING this value from the 'thread' table -- along with all of the rest of the factoids about each thread, right?

Where should I be looking to get this column READ from the database table along with all of the other stuff about each thread? I should be looking for some sort of SELECT statement -- followed by all the other particulars about each thread?

Bill