2011-06-24 7 views
0

私は数日間、私のサイトの管理セクションにアップロード作業を苦労していました。 私のデータベースに、id(int)、title(varchar)、desc(varchar)、photo(varchar)の4つのフィールドを持つテーブルがあります。photoフィールドはサーバー上のイメージのソースを表します。 私のコードは次のとおりです。行がテーブルのように見えるので、重複する空の行が挿入されているmysqlのに入力されたいくつかの理由ファイルのアップロード時にmysqlに重複した空白行が入力されました

<?php include 'dbc.php'; page_protect(); 

if(!checkAdmin()) {header("Location: login.php"); 
exit(); 
} 

$host = $_SERVER['HTTP_HOST']; 
$host_upper = strtoupper($host); 
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF'])); 
$path = rtrim($login_path, '/\\'); 

foreach($_GET as $key => $value) { 
    $get[$key] = filter($value); 
} 

foreach($_POST as $key => $value) { 
    $post[$key] = filter($value); 
} 
?> 

<?php 

$target = "images/test/"; 
$target = $target . basename($_FILES['photo']['name']); 

$title = mysql_real_escape_string($_POST['title']); 
$desc = mysql_real_escape_string($_POST['desc']); 
$pic = "images/test/" .(mysql_real_escape_string($_FILES['photo']['name'])); 

mysql_query("INSERT INTO `test` (`title`, `desc`, `photo`) VALUES ('$title', '$desc', '$pic')") ; 

if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 

echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 
echo "Sorry, there was a problem uploading your file."; 
} 
?> 

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
Title: <input type="text" name="title"><br> 
Description: <input type="text" name = "desc"><br> 
Photo: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form> 

ID    Title    Desc     Photo 
15               images/test/ 
16    test title   test description  images/test/test1.jpg 

これはから起こっているいずれかの理由があります上記のコード - それはかなり初歩的ですが、この作業をするために取られた苦痛と苦闘を与えられました。

ご協力いただきありがとうございます。フォームが初めてロードされたときに

JD

答えて

1

限り私が見るように、データベースのコードが実行されますが、何のファイルがまだアップロードされません。だから、

if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 

全体のコード内でデータベース関連のコードを移動する必要がyo'll:

<?php include 'dbc.php'; page_protect(); 

if(!checkAdmin()) {header("Location: login.php"); 
exit(); 
} 

$host = $_SERVER['HTTP_HOST']; 
$host_upper = strtoupper($host); 
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF'])); 
$path = rtrim($login_path, '/\\'); 

foreach($_GET as $key => $value) { 
    $get[$key] = filter($value); 
} 

foreach($_POST as $key => $value) { 
    $post[$key] = filter($value); 
} 
?> 

<?php 
if($_FILES['photo']) //check if we uploading a file 
{ 
    $target = "images/test/"; 
    $target = $target . basename($_FILES['photo']['name']); 

    $title = mysql_real_escape_string($_POST['title']); 
    $desc = mysql_real_escape_string($_POST['desc']); 
    $pic = "images/test/" .(mysql_real_escape_string($_FILES['photo']['name'])); 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
    mysql_query("INSERT INTO `test` (`title`, `desc`, `photo`) VALUES ('$title', '$desc', '$pic')") ;  

    echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else 
{ 
    echo "Sorry, there was a problem uploading your file."; 
    var_dump($_FILES); //for debug purposes 
} 
} 
?> 

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
Title: <input type="text" name="title"><br> 
Description: <input type="text" name = "desc"><br> 
Photo: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form> 
+0

こんにちは - それを試してみましたが、今では全く何もしていないようだ - のいずれかがファイルを投稿したりdbテーブルに入る......? – JD2011

+0

私の悪い場合は、エラーメッセージが表示されないようにファイルがアップロードされているかどうかを確認する必要があります。ファイルがアップロードされていない場合は、デバッグ情報を追加しました。このコードがうまく動作しない場合は、出力plsを表示してください。どこに問題があるのか​​を突き止めようとします。 – Greenisha

+0

こんにちは、私に戻ってくれてありがとう。出力は です。file.array(1){["photo"] => array(5){["name"] => string(12) "IMG_0161.jpg" ["type ( "size"] => int( ")"> = "文字列(14)"> = "文字列(10)"画像とjpeg "[" tmp_name "] =>文字列(14)"/tmp/phpM9Qa9k " 35516)}} – JD2011

関連する問題