"Mark" <[EMAIL PROTECTED]> wrote on 03/27/2006 09:45:57 AM:
> Hi i am emiling you hoping you can help me urgently, > I have a football tipping script which works fine now except i want > to update a field from one table to another. > > At the moment there is a table (leaderboard) which is updated weekly > via the updateleaderboard.php > It shows USERNAME ,SCORE ,and COMPETITON NAME (eg: George | 12 > points | harrys comp.) What i want to do is ad an avatar next to > each username. > > I have already worked out the form for users to choose avatar and > place the name of the image in an AVATAR field in the USERNAME table > and echo it. > > My problem is that each week the LEADERBOARD usernames change and so > do thier scores, comp name and of course their avatar.. i have made > an AVATAR field in the LEADERBOARD table as well, now i just need > some script which i will use as an i-nclude -on the > updateleaderboard script to take the avatar field data and carry it > over to the AVATAR field in the LEADERBOARD table as well. > > here is my script that doesnt work (also there is no session > involved, makes it harder) > below is my schema > > <title>update_avatars</title><?php > include("header.php"); > include("connect.php"); > > > //insert avatar into leaderboard > > > $sql = mysql_query SELECT users.avatar, leaderboard.username FROM > users, leaderboard > WHERE users.comp_id=leaderboard.comp_id; > > $result = @mysql_query($sql); > $avatars = "avatar"; > $username = "username"; > > $query = mysql_query("UPDATE leaderboard SET avatar = '$avatars' > WHERE username = '$username'"); > $query = mysql_query($sql); > > > ?> > > <?php > include("footer.html"); > ?> > > > > > > ************************************************* > > # > # Table structure for table `comps` > # > > CREATE TABLE `comps` ( > `id` int(11) NOT NULL auto_increment, > `name` varchar(255) NOT NULL default '', > `username` varchar(255) NOT NULL default '', > `password` varchar(255) NOT NULL default '', > `emailtipsuser` char(1) NOT NULL default '0', > `emailtipsall` char(1) NOT NULL default '0', > `latetips` text NOT NULL, > `winpoints` int(11) NOT NULL default '0', > `drawpoints` int(11) NOT NULL default '0', > `joinfee` float NOT NULL default '0', > `perfect8point` char(1) NOT NULL default '0', > `perfect8amt` float NOT NULL default '0', > `ranking` text NOT NULL, > `email` varchar(255) NOT NULL default '', > `signup_date` datetime NOT NULL default '0000-00-00 00:00:00', > `rules` text NOT NULL, > `status` text NOT NULL, > `pool` int(11) NOT NULL default '0', > PRIMARY KEY (`id`) > ) TYPE=MyISAM ; > > > # Table structure for table `leaderboard` > # > > CREATE TABLE `leaderboard` ( > `id` int(11) NOT NULL auto_increment, > `user_id` int(11) NOT NULL default '0', > `comp_id` int(11) NOT NULL default '0', > `username` text NOT NULL, > `points` int(11) NOT NULL default '0', > `amt` float NOT NULL default '0', > `margin` int(11) NOT NULL default '0', > `acc_margin` int(11) NOT NULL default '0', > `avatar` varchar(50) NOT NULL default '', > PRIMARY KEY (`id`) > ) TYPE=MyISAM ; > > > CREATE TABLE `tips` ( > `id` int(11) NOT NULL auto_increment, > `user_id` int(11) NOT NULL default '0', > `points` int(11) NOT NULL default '0', > `round` varchar(2) NOT NULL default '0', > `game` int(11) NOT NULL default '0', > `winner` text NOT NULL, > `comp_id` int(11) NOT NULL default '0', > `margin` int(11) NOT NULL default '0', > PRIMARY KEY (`id`) > ) TYPE=MyISAM ; > > # > # Table structure for table `users` > # > > CREATE TABLE `users` ( > `id` int(11) NOT NULL auto_increment, > `comp_id` int(11) NOT NULL default '0', > `username` varchar(255) NOT NULL default '', > `password` varchar(255) NOT NULL default '', > `phone` varchar(255) NOT NULL default '', > `email` varchar(255) NOT NULL default '', > `signup_date` datetime NOT NULL default '0000-00-00 00:00:00', > `last_login` datetime NOT NULL default '0000-00-00 00:00:00', > `activated` char(1) NOT NULL default '', > `first_name` varchar(50) NOT NULL default '', > `last_name` varchar(50) NOT NULL default '', > `avatar` varchar(50) NOT NULL default '', > PRIMARY KEY (`id`) > ) TYPE=MyISAM ; > > } > > ?> > > > ************************************************** > > Regards MArk Multi-table updates work just like multi-table selects. All you need to do is to swap things around a little. UPDATE leaderboard l INNER JOIN users u on u.comp_id = l.comp_id SET l.avatar = u.avatar; Because we are using an INNER JOIN, you will only be updating those records in leaderboard (because that what we said to do in our SET clause) with a valuefrom users (also from the SET clause) based on whether leaderboard.comp_id = users.comp_id (please look at the ON clause). Please RTFineM for more details: http://dev.mysql.com/doc/refman/4.1/en/update.html Shawn Green Database Administrator Unimin Corporation - Spruce Pine