2012-03-06 46 views
0

我正在創建一個用戶面板,用戶可以在其中註冊並上傳圖像。一旦他們登錄,他們可能決定編輯該圖像,因此我想執行更新查詢以將新圖像添加到位置並將新圖像附加到他們的mysql數據。使用UPDATE查詢更新用戶圖像(不工作)

所以發生了什麼,當我提交代碼:我得到一個錯誤說::抱歉,上傳您的文件有問題。

希望有人能讓我知道爲什麼這給了我一個錯誤。 PS我在第一次註冊上傳文件時已經在使用此位置。但肯定這不應該有任何問題。我發現的另一個問題是沒有任何內容成功插入到照片的MYSQL表中。

所以這裏是代碼:

表:管理

CREATE TABLE IF NOT EXISTS `admin` (
     `id` int(3) NOT NULL auto_increment, 
     `UserName` varchar(30) default NULL, 
     `PassWord` varchar(30) default NULL, 
     `name` varchar(30) default NULL, 
     `mainContent` varchar(2000) default NULL COMMENT 'maincontent test', 
     `photo` varchar(400) NOT NULL COMMENT 'Picture1', 
     PRIMARY KEY (`id`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=64 ; 

所以,讓我們想象中的用戶登錄到他們的用戶面板:他們單擊編輯按鈕鏈接到自己的ID。

因此,他們出現在編輯頁面:

EDIT.PHP

<?php 
session_start(); 
$UserName = $_SESSION['UserName']; 
require("checkLoginSession.php"); 
$adminid = $_GET['id']; 


// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 


echo("Logged In As: $UserName"); 
echo "<br />"; 
echo("We are editing Data for ID: $adminid"); 
echo "<br />"; 
echo "<a href=test.php>Go back to panel</a>"; 

$id=$_GET['id']; 
// Retrieve data from database 
$sql="SELECT * FROM admin WHERE id='$id'"; 
$result=mysql_query($sql) or die(mysql_error()); 

$rows=mysql_fetch_array($result); 
?> 
<table width="400" border="0" cellspacing="1" cellpadding="0"> 
<tr> 
<form name="form1" method="post" action="update_ac.php"> 
<td> 
<table width="100%" border="0" cellspacing="1" cellpadding="0"> 
<tr> 
<td>&nbsp;</td> 
<td colspan="3"><strong>Update data in mysql</strong> </td> 
</tr> 
<tr> 
<td align="center">&nbsp;</td> 
<td align="center">&nbsp;</td> 
<td align="center">&nbsp;</td> 
<td align="center">&nbsp;</td> 
</tr> 
<tr> 
<td align="center">&nbsp;</td> 
<td align="center"><strong>Name</strong></td> 
<td align="center"><strong>Main Content</strong></td> 
<td align="center"><strong>Image Locatoin</strong></td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td align="center"><input name="name" type="text" id="name" value="<? echo $rows['name']; ?>"></td> 
<td align="center"><input name="mainContent" type="text" id="mainContent" value="<? echo $rows['mainContent']; ?>" size="15"></td> 
<td align="center"><input name="photo" type="file" id="photo"> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td><input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"></td> 
<td align="center"><input type="submit" name="Submit" value="Submit"></td> 
<td>&nbsp;</td> 
</tr> 
</table> 
</td> 
</form> 
</tr> 
</table> 

<? 
mysql_close(); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Edit Page</title> 
</head> 

<body> 
<h2>Edit Page (<?php echo ("$adminid"); ?>)</h2> 
<a href="test.php"><img src="backtopanel.jpg" alt="back to panel" width="454" height="85" border="0" longdesc="back to panel" /></a> 
</body> 
</html> 

update_ac.php

<?php 
session_start(); 
$UserName = $_SESSION['UserName']; 
require("checkLoginSession.php"); 
include "common.php"; 
DBConnect(); 
$Link = mysql_connect($Host, $User, $Password); 

$id = $_POST['id']; 

$target = "images/"; 
$target = $target . basename($_FILES['photo']['name']); 
// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// update data in mysql database 
$_POST = array_map("mysql_real_escape_string", $_POST); 
$firstName = $_POST["name"]; 
$mainText = $_POST["mainContent"]; 
$pic=($_FILES['photo']['name']); 


// 



$sql="UPDATE admin SET name='$firstName', mainContent='$mainText', photo='$pic' WHERE id='$id'"; 

echo $sql; 

// 

if (mysql_db_query ($DBName, $sql, $Link)){ 
print ("A record was created <br><a href=index.php> return to index </a>\n"); 


//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 

//Tells you if its all ok 
echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 


} else { 

print ("Record not created"); 
} 

mysql_close($Link); 
?> 
+0

聽起來權限問題。 – dotoree 2012-03-06 11:05:34

回答

0

有幾件事情:

如果沒有在未來通過$_FILES那麼你可能已經錯過了enctype="multipart/form-data"的形式標籤中的提交正在指定圖像的頁面。

在處理上傳的文件,你需要使用$_FILES['inputName']['tmp_name']來獲取文件的臨時位置然後將這種使用move_uploaded_file($_FILES['inputName']['tmp_name'], 'destination');並存儲在數據庫中記錄的目標值。

在希望顯示圖像的編輯頁面上,您需要顯示圖像本身(使用和img標籤)以及文件input,以便根據需要更改圖像。

我可以繼續下去,但我真的覺得你需要去閱讀形式/文件中的一些教程PHP處理爲將最這就是爲什麼你還沒有收到任何回覆......

+0

明天我會檢查這個ASAP隊友,想想你的權利與多上傳的第一個評論..想想我之前做過。問候jon – 2012-03-06 23:43:19

+0

完美的感謝隊友這完美的工作。我有代碼躺在我仍然不知道爲什麼我需要這個可以擴展嗎?問候,喬恩 – 2012-03-08 13:17:01

+0

爲什麼需要它的一些答案:http://stackoverflow.com/questions/4526273/what-does-enctype-multipart-form-data-mean – Ing 2012-03-08 13:20:42