2016-10-26 4 views
0

登録ユーザのDBにphp形式でメールを送信しています。そのうまく動作します。データベース内のフォルダ内に存在する画像の画像パスを保存する

フォーム

<form action="profile.php" method="POST" enctype="multipart/form-data"> 

Name : 
<input type="text" name="txtuname" value="<?php echo $row['userName'] ?>" /><br/> 
Email : 
<input type="text" name="txtemail" value="<?php echo $row['userEmail'] ?>" /><br> 
Image 
<input type="file" name="photo" id="fileSelect"><br> 

<input type="submit" name="submit" value="Save" /> 

</form> 

形デシベルで [profile.php]この後

$user_home = new USER(); 

if(!$user_home->is_logged_in()) 
{ 
    header("Location: index.php"); 
die(); 
} 

if (isset($_POST['submit'])) { 
// new data 
$uname = $_POST['txtuname']; 
$email = $_POST['txtemail']; 
$tax = trim($_POST['tax']); // image url path 

$uid = (isset($_SESSION['userSession']) ? intval($_SESSION['userSession']) : 0); 

if ($uid > 0 && $user_home->update($uname,$email, $tax, $uid)) 
{ 
    header("Location: profile1.php"); 
    die(); 
} 
} 

$stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid"); 
$stmt->execute(array(":uid"=>$_SESSION['userSession'])); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 

を保存するためのコードを関連する、今私は、同じPHPのフォームをフォルダに画像をアップロードしています以下のコードで正常に終了しました。

if(isset($_FILES["photo"]["error"])){ 
if($_FILES["photo"]["error"] > 0){ 
echo "Error: " . $_FILES["photo"]["error"] . "<br>"; 

} else{ 
$allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png"); 
$filename = $_FILES["photo"]["name"]; 
$filetype = $_FILES["photo"]["type"]; 
$filesize = $_FILES["photo"]["size"]; 

// Verify file extension 
$ext = pathinfo($filename, PATHINFO_EXTENSION); 
if(!array_key_exists($ext, $allowed)) die("Error: Please select a valid file format."); 

// Verify file size - 5MB maximum 
$maxsize = 5 * 1024 * 1024; 
if($filesize > $maxsize) die("Error: File size is larger than the allowed limit."); 

// Verify MYME type of the file 
if(in_array($filetype, $allowed)){ 
// Check whether file exists before uploading it 
if(file_exists("upload/" . $_FILES["photo"]["name"])){ 
echo $_FILES["photo"]["name"] . " is already exists."; 

} else{ 
move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $_FILES["photo"]["name"]); 

echo "Your file was uploaded successfully."; 
} 
} else{ 

echo "Error: There was a problem uploading your file - please try again."; 
} 

} 

} else{ 
echo ""; 
} 

は今の画像がちょうどフォルダに保存されている、私は必要なものを私はその画像のパスがデータベースに保存して、データベースにアップロードしたユーザーにその画像のパスを割り当てたいです。

iは、コードの下にしようとしたが、動作していない:

class.user.php

<?php 
    $dbConn = new Database(); 
    $dbConn->dbConnection(); 

    $user_home = new USER(); 

    function uploadUserPhoto($uid) { 
     global $dbConn; 
     if(isset($_FILES["photo"]["error"])) { 
      if($_FILES["photo"]["error"] > 0) { 
       echo "Error: " . $_FILES["photo"]["error"] . "<br>"; 

      } else { 
       $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png"); 
       $filename = $_FILES["photo"]["name"]; 
       $filetype = $_FILES["photo"]["type"]; 
       $filesize = $_FILES["photo"]["size"]; 

       $userDir = $uid; 

       // Verify file extension 
       $ext = pathinfo($filename, PATHINFO_EXTENSION); 
       if(!array_key_exists($ext, $allowed)) die("Error: Please select a valid file format."); 

       // Verify file size - 5MB maximum 
       $maxsize = 5 * 1024 * 1024; 
       if($filesize > $maxsize) die("Error: File size is larger than the allowed limit."); 

       // Verify MYME type of the file 
       if(in_array($filetype, $allowed)) { 
        if(!is_dir('upload/'.$uid)) { 
         mkdir('upload/'.$uid); 
        } 

        $photoname = time().$uid.'_photo'.'.'.$ext; 

        // delete all the files in this directory 
        $files = glob('upload/'.$uid.'/*'); // get all file names 
        foreach($files as $file){ // iterate files 
         if(is_file($file)) 
          unlink($file); // delete file 
        } 

        // Upload the photo 
        move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $uid . '/'. $photoname); 

        $updateData = array(':userID' => $uid, ':photo' => $photoname); 
        $stmt = $dbConn->conn->prepare("UPDATE tbl_users SET photo=:photo WHERE userID=:uid"); 
        $stmt->execute($updateData); 

        echo "Your file was uploaded successfully."; 
       } else { 
        echo "Error: There was a problem uploading your file - please try again."; 
       } 
      } 
     } else { 
      echo ""; 
     } 
    } 

profile.php

if ($uid > 0 && $user_home->update($uname,$email, $tax, $uid)) 
    { 
     uploadUserPhoto($uid); 
     header("Location: profile1.php"); 
     die(); 
    } 

私は最後の2から苦労しています日、私を助けてください。 完全なコード:class.user.php:http://pastebin.com/vh8FvHP2、profile.php:http://pastebin.com/s0zJuJik、DB接続:http://pastebin.com/rYLWBAHi

私は50ポイントを獲得たら、それは私のために働いていた場合、私は50個のバウンティポイントを提供します....

+0

_ _「に動作していないが、」非常に曖昧で非常に助けにならないエラーメッセージが表示され、記述するためにあなたの質問を更新してください:機能していませんか?どのようなエラーメッセージが表示されますか? – Epodax

+0

私はなぜdownvotesを知っているのかわからない理由を言うなら、私はあなたから学びます...... –

+0

@エポダックスおかげさまで、私は何のエラーメッセージも得ていません –

答えて

0

ファイル内:class.user.php;アップロードしたファイルを正常に移動した後で初めて、写真をデータベースに保存してください。ここでのスニペットは、その視点からそれを見しようとします。

<?php 

    // Verify MIME type of the file 
    if(in_array($filetype, $allowed)) { 
     if(!is_dir('upload/'.$uid)) { 
      mkdir('upload/'.$uid); 
     } 

     $photoname = time().$uid.'_photo'.'.'.$ext; 

     // delete all the files in this directory 
     $files = glob('upload/'.$uid.'/*'); // get all file names 
     foreach($files as $file){ // iterate files 
      if(is_file($file)) 
       unlink($file); // delete file 
     } 
     // SAVE THE PHOTO TO DATABASE 
     // ONLY IF THE PHOTO HAS BE SAVED ON THE FILE-SYSTEM 
     if(move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $uid . '/'. $photoname)){ 

      // NOTICE THERE'S NO COLONS (:) HERE - JUST KEY-VAL PAIRS  
      $updateData = array('uid' => $uid, 'pix' => "upload/" . $uid . "/" . $photoname); 
      $stmt = $dbConn->conn->prepare("UPDATE tbl_users SET photo=:pix WHERE userID=:uid"); 
      $stmt->execute($updateData);     
      echo "Your file was uploaded successfully.";     
     } 

    } else { 
     echo "Error: There was a problem uploading your file - please try again."; 
    } 
+0

'uploadUserPhoto'関数でコードを置き換えましたが、まだ画像が保存されていません。ここのコード:http://pastebin.com/U9wkytmr –

+0

@abcd写真はアップロードされますか? – Poiz

+0

はい、写真はフォルダ名 'upload' –

関連する問題