2011-02-17 3 views
1

나는 사용자가 이미지의 수를 부착의 옵션을 함께 느낄 필요가 다양한 분야와 형태가여러 파일 업로드, 사진 앨범, mysql을

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['discuss_url']), 
                   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; 
} 

"이미지"테이블로 이동하여 올바른 앨범에 연결하려면 파일을 사용하고 싶습니다.

$create_album = create_album($_POST['album']); 

        mysql_query("INSERT INTO images(`name`,`album_id`) VALUES('$newName', '$create_album')"); 

나는 문제가 그 여러 이미지를 첨부되는 데 하나의 앨범에 하나 개의 양식 제출에 (사용자가 하나 또는 2 또는 3 개의 파일을 제출하도록 선택할 수 있습니다). 현재 사용자가 3 개의 파일을 제출하면 모든 양식 제출시 3 개의 앨범이 만들어집니다.

CREATE TABLE `albums` (
    `id` int(11) NOT NULL auto_increment, 
    `title` varchar(50) NOT NULL, 
    `fullname` varchar(40) NOT NULL, 
    `discuss_url` varchar(150) 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 ; 



CREATE TABLE `images` (
    `id` int(11) NOT NULL auto_increment, 
    `album_id` int(11) NOT NULL, 
    `name` varchar(30) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ; 
+0

업로드 된 모든 파일에 대해 create_album() 코드가 한 번 실행된다고하니? create_album() –

+0

에 업로드 된 모든 파일마다 이미지 쿼리를 한 번만 실행하는 것이 좋겠지 만 그 방법을 정확히 모르겠습니다. / – Yulia

답변

1

난 그냥이 문제에 대한 빠른 업데이트를 실행하고 싶었 :

마지막으로,이 내 데이터베이스 구조입니다. 아마 문제를보기에 중요한 정보를 충분히주지 못했을 것입니다. 이 문서에서는 매우 well에 대해 설명합니다. 기본적으로 앨범은 파일이 제출 될 때마다 만들어 지지만 형식은 아닙니다. 내가이 사람을 도움이되기를 바랍니다

//If form was submitted 
    if (isset($_POST['btnSubmit'])) { 

    create_album($_POST['album']); 
    $find_album_id = mysql_insert_id(); 

     /*** check if a file has been submitted ***/ 
     if(isset($_FILES['userfile']['tmp_name'])) 
     { 
      /** loop through the array of files ***/ 
      for($i=0; $i < count($_FILES['userfile']['tmp_name']);$i++) 
      { 

       $ext = strrchr($imgName, "."); 

       // then create a new random name 
       $newName = md5(rand() * time()) . $ext; 

         if (is_image_types($_FILES['userfile']['type'][$i]) 
         and is_valid_file_size($_FILES['userfile']['size'][$i]) 
         and is_uploaded_file($_FILES['userfile']['tmp_name'][$i]) 
         and is_valid_width_height($_FILES['userfile']['tmp_name'][$i]) 
        ) 
        {  

         mysql_query("INSERT INTO images(name, album_id) VALUES('$newName', '$find_album_id')") ; 
         copy($_FILES['userfile']['tmp_name'][$i], './photos/'.$original_dir.'/' .$newName.'.jpg'); 

      } 

      else 
      { 
     $warning = "Click back error uploading file. 
          Please make sure your file is a JPEG and less than 1MB"; 
      } 
     } 
    } 

    } 

    break; 
} 

:

여기
<?php if (!isset($_POST['btnSubmit'])) { ?> 
<form action="index.php?view=create" method="post" enctype="multipart/form-data"> 
    <fieldset> 
    <div> 
      <label><b>Title:</b></label> 

      <input name="album[title]" size="40" type="text" value="" class="textfield" /> 
      </div> 

      <div> 
      <label><b>Fullname</b></label> 
      <input name="album[fullname]" size="40" type="text" value="" class="textfield" /> 
      </div> 

      <div> 

      <label><b>Attach Photo</b> </label> 
       <input type="hidden" name="" value="" /> 
<?php 
    $num = 0; 
    while($num < $num_uploads) 
    { 
     echo '<div><input name="userfile[]" type="file" /></div>'; 
     $num++; 
    } 
?> 

은 PHP (쉽게 그래서 나는 그것의 일부를 잘라)입니다 : 그래서 여기

은 (작업) 내 양식입니다 looking ...