我有点问题。
我正在制作将简单文章提交到数据库的表单,然后将其显示在admin.php页面上。
除了图像,一切正常。 首先我将它上传到我的服务器,然后我尝试将字符串(此图像的路径)添加到数据库。
但是我不能在第二个if语句中使用变量$ filepath。 我可以在图片上传后回复它,但不能在其他if。
中使用 你帮我吗? 提前谢谢。这是代码:
<?php session_start();
if (!isset($_SESSION['logged-in']))
{
header('Location: index.php');
exit();
}
?>
<?php
include('db_connect.php');
if(isset($_POST['btn_upload'])) {
$filetmp = $_FILES["file_img"]["tmp_name"];
$filename = $_FILES["file_img"]["name"];
$filetype = $_FILES["file_img"]["type"];
$filepath = "photo/".$filename;
move_uploaded_file($filetmp,$filepath);
$result = mysqli_query($mysqli, "INSERT INTO upload_img (img_name,img_path,img_type) VALUES ('$filename','$filepath','$filetype')");
echo '<img src="' . $filepath . '" alt="">';
echo $filepath;
}
if ( isset($_POST['add']) ) {
$title = strip_tags($_POST['title']);
$content = strip_tags($_POST['content']);
$image = strip_tags($filepath);
$statement = $mysqli->prepare("INSERT bikes (title,image,content) VALUES (?,?,?)");
$statement->bind_param("sss",$title,$image,$content);
$statement->execute();
$statement->close();
header('Location: admin.php');
}
?>
<form method="post" action="" class="ui form">
<div class="required field">
<label>Title</label>
<input type="text" name="title" id="title">
</div>
<div class="required field">
<label>Content</label>
<textarea name="content" id="content" cols="30" rows="10"></textarea>
</div>
<div class="required field">
<label>Image</label>
<input type="text" name="image" id="image">
</div>
<input type="submit" class="ui primary button" id="add" name="add" value="Add article"></input>
</form>
<form action="addbike.php" method="post" enctype="multipart/form-data">
<input type="file" name="file_img" />
<input type="submit" name="btn_upload" value="Upload">
</form>
答案 0 :(得分:1)
由于您的两个表单都是独立工作的(彼此之间存在相互关联),因此$filepath
变量无法在第二个if
块中访问。但是,您可以将两个表单合并在一起,以便只需一个提交按钮即可访问所有表单的文本数据和图像。
<强> HTML:强>
<form method="post" action="" class="ui form" enctype="multipart/form-data">
<div class="required field">
<label>Title</label>
<input type="text" name="title" id="title">
</div>
<div class="required field">
<label>Content</label>
<textarea name="content" id="content" cols="30" rows="10"></textarea>
</div>
<div class="required field">
<label>Image</label>
<input type="text" name="image" id="image">
</div>
<input type="file" name="file_img" />
<input type="submit" class="ui primary button" id="add" name="add" value="Add article"></input>
</form>
<强> PHP:强>
if (isset($_POST['add']) && is_uploaded_file($_FILES["file_img"]["tmp_name"])) {
$filetmp = $_FILES["file_img"]["tmp_name"];
$filename = $_FILES["file_img"]["name"];
$filetype = $_FILES["file_img"]["type"];
$filepath = "photo/".$filename;
if(move_uploaded_file($filetmp, $filepath)){
$result = mysqli_query($mysqli, "INSERT INTO upload_img (img_name,img_path,img_type) VALUES ('$filename','$filepath','$filetype')");
if($result){
$title = strip_tags($_POST['title']);
$content = strip_tags($_POST['content']);
$image = strip_tags($filepath);
$statement = $mysqli->prepare("INSERT bikes (title,image,content) VALUES (?,?,?)");
$statement->bind_param("sss",$title,$image,$content);
$statement->execute();
$statement->close();
header('Location: admin.php');
exit();
}else{
// error handling
}
}else{
// error handling
}
}
答案 1 :(得分:0)
btn_upload是互斥的,因此为btn_upload执行的if语句也不会为add运行。
如果您希望它是一个两阶段的过程(上传图像,然后添加),那么您必须设置一个隐藏的输入,其值为文件路径。
但是,理想情况下,用户会填写姓名并提供图像,然后将它们一起提交。为此,将所有输入放在同一表单元素中并远程“添加”按钮。