2011-02-12 106 views
0

我有以下问题。基本上我有一个表单可以提交最多3个图像。现在,每次提交后,它会为专辑表创建3条记录,为图像创建3条记录。我需要它成为专辑的一个记录和图像的三个记录,以及将图像链接到相册。我希望这一切都有道理......多对一的关系mysql,提交

这是我的结构。

TABLE `albums` (
    `id` int(11) NOT NULL auto_increment, 
    `title` varchar(50) NOT NULL, 
    `fullname` varchar(40) NOT NULL, 
    `email` varchar(100) NOT NULL, 
    `created_at` datetime NOT NULL, 
    `theme_id` int(11) NOT NULL, 
    `description` int(11) NOT NULL, 
    `vote_cache` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ; 

TABLE `images` (
    `id` int(11) NOT NULL auto_increment, 
    `album_id` int(11) NOT NULL, 
    `name` varchar(30) NOT NULL, 

和我的代码

function create_album($params) 
    { 
     db_connect(); 

     $query = sprintf("INSERT INTO albums set 
             albums.title = '%s', 
                    albums.email = '%s', 
                    albums.discuss_url = '%s', 
                    albums.theme_id = '%s', 
                    albums.fullname = '%s', 
                    albums.description = '%s', 
                    created_at = NOW()", 
                    mysql_real_escape_string($params['title']), 
                    mysql_real_escape_string($params['email']), 
                               mysql_real_escape_string($params['theme_id']), 
                    mysql_real_escape_string($params['fullname']), 
                    mysql_real_escape_string($params['description']) 
                    ); 

     $result = mysql_query($query); 
     if(!$result) 
     { 
       return false; 
     } 

     $album_id = mysql_insert_id(); 

     return $album_id; 
    } 

    if(!is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) 
{ 
$warning = 'No file uploaded'; 
} 
elseif is_valid_file_size($_FILES['userfile']['size'][$i])) { 
$_POST['album']['theme_id'] = $theme['id']; 
create_album($_POST['album']); mysql_query("INSERT INTO images(name) VALUES('$newName')"); 
copy($_FILES['userfile']['tmp_name'][$i], './photos/'.$original_dir.'/' .$newName.'.jpg'); 

回答

0

我必须失去了一些东西。您插入图片的查询不会插入相册ID,而该字段在images中为必填字段。所以这个查询应该会失败。

我猜这不是你所有的代码,你实际上执行不同的查询来插入图像。如果是的话,那大概声明看起来是这样的:

$query = " 
    INSERT INTO images (name, album_id) 
    VALUES ('albumname', " . create_album($params); 

如果是这样,您要创建每次保存图像的相册。您应该将生成的相册ID保存在变量中,并在创建图像记录的三个语句中使用该变量。

+0

如果这使得它更容易 - 见下文。如果(!is_uploaded_file($ _ FILES ['userfile'] ['tmp_name'] [$ i])) { $ warning ='没有文件上传'; } ELSEIF is_valid_file_size($ _ FILES [ 'userfile的'] [ '尺寸'] [$ i]于)) \t \t \t { \t \t \t $ _POST [ '专辑'] [ 'theme_id'] = $主题['ID']; \t \t \t \t create_album($ _ POST ['album']); mysql_query(“INSERT INTO`images`(name)VALUES('$ newName')”); copy($ _ FILES ['userfile'] ['tmp_name'] [$ i],'./photos/'.$original_dir.'/'。$ newName。'。jpg'); – Yulia 2011-02-12 21:45:02