我正在做的是,当表单数据提交时,我显示最后插入的数据,表单是多部分/表单数据。我使用jquery获得此表单数据,在这里我使用Ajax POST将此数据发送到php文件。在那个php文件中,我将数据插入到db表中。在那里我获得插入数据的id。在Ajax调用成功后,我将该id发送到另一个php文件。使用该id,我将显示最后插入的数据…
我的表单是:
<form method="post" enctype="multipart/form-data" name="upload_form" id="data">
<select id="sel">
<option>Select the Project Stream</option>
<option value="1">Computer Science</option>
<option value="2">Mechanical</option>
<option value="3">IT</option>
<option value="4">Web Development</option>
<option value="5">MCA</option>
<option value="6">Civil</option>
</select><br />
<input type="text" id="title" placeholder="Project Title"/><br />
<input type="text" id="vurl" placeholder="If You have any video about project write your video url path here" style="width:435px;"/><br />
<textarea id="prjdesc" name="prjdesc" rows="20" cols="80" style="border-style:groove;box-shadow: 10px 10px 10px 10px #888888;"placeholder="Please describe Your Project"></textarea>
<label for="file">Filename:</label>
<input type="file" name="file" id="file"/><br />
<button>Submit</button>
</form>
My js file:
$("form#data").submit(function() {
alert("update");
var sid=$("#sel").val();
alert(sid);
var ttle = $("#title").val();
alert(ttle);
var text = $("#prjdesc").val();
var vurl = $("#vurl").val();
/*var dataString = 'param='+text+'¶m1='+vurl+'¶m2='+ttle+'¶m3='+id;*/
var formData = new FormData($(this)[0]);
formData.append('param',text);
formData.append('param1',vurl);
formData.append('param2',ttle );
formData.append('param3',sid );
$.ajax({
type:'POST',
data:formData,
url:'insert.php',
success:function(id) {
alert(id);
window.location ="another.php?id="+id;
},
cache: false,
contentType: false,
processData: false
});
return false;
});
insert.php:
<?php
print_r($_FILES);
$desc = $_POST['param'];
echo $desc;
$video = $_POST['param1'];
echo $video ;
$title = $_POST['param2'];
echo $title;
$tech_id=$_POST['param3'];
echo $tech_id;
$host="localhost";
$username="root";
$password="";
$db_name="geny";
$tbl_name="project_details";
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
$url_dir = "C:/wamp/www/WebsiteTemplate4/upload/";
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 50000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
if (file_exists($url_dir . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],$url_dir. $_FILES["file"]["name"]);
// echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
$tmp = "C:/wamp/www/WebsiteTemplate4/upload/" . $_FILES["file"]["name"];
$sql="INSERT INTO $tbl_name (title, content, img_path, video_url, project_tech_Id) VALUES ('$title','$desc','$tmp','$video','$tech_id')";
if(mysql_query($sql)) {
echo mysql_insert_id();
} else {
echo "Cannot Insert";
}
}
}
}
else
{
echo "Invalid file";
}
?>
another.php:
<?php
$temp=$_GET['id'];
echo $temp;
$host="localhost";
$username="root";
$password="";
$db_name="geny";
$tbl_name="project_details";
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$query = mysql_query("SELECT content FROM project_details WHERE id=". $temp);
if (!$query)
{
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($query);
echo "<div id='uprjct' style='background:#336699;'>
<p>$row[0]</p>
</div>";
?>
但是我在insert.php中返回的ID包含元素数组…我不想要所有这些东西,我只想要ID(也就是号码)…
mysql_*已弃用,请使用mysqli_*或pdo代替。
在mysqli_*你得到的id通过mysqli_insert_id($link);
。mysqli_insert_id
in pdo via $database->lastInsertId();
pdo lastInsertId
在insert.php文件中有
<?php
print_r($_FILES);
$desc = $_POST['param'];
echo $desc;
....
echo $video;
....
echo mysql_insert_id();
你有很多'echo'在你的脚本打印$desc和$video的值和print_r函数打印整个数组$_FILES之前插入的id。删除除echo mysql_insert_id ();
顺便说一下,尝试使用mysqli_*方法,mysql_方法是不赞成的。
编辑:删除print_r($_FILES);
语句,以从insert.php中删除无用的打印,因此只打印id。
要显示图像,只需使用从查询中检索到的img_path创建一个:
<?php
$temp=$_GET['id'];
$host="localhost";
$username="root";
$password="";
$db_name="geny";
$tbl_name="project_details";
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$query = mysql_query("SELECT content, img_path FROM project_details WHERE id=". $temp);
if (!$query)
{
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($query);
echo "<div id='uprjct' style='background:#336699;'>".
"<img src='".$row['img_path']."' alt='myimg' />".
"<p>".$row['content']."</p></div>";
?>