PHP如何使用另一个if语句中的变量?
问题描述:
我有一点问题。PHP如何使用另一个if语句中的变量?
我正在制作提交简单的文章到数据库,然后显示在admin.php页面上的表单。
一切工作正常,除了图像。 首先我将它上传到我的服务器,然后尝试将字符串(此图像的路径)添加到数据库。
但是我不能在第二个if语句中使用变量$ filepath。 我可以在图片上传后回显,但不能在其他情况下使用。
你能帮助我吗? 在此先感谢。
这里是代码:
<?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>
答
btn_upload是相互排斥的补充,所以if语句,其执行的btn_upload不还运行附加。
如果你想要它是一个两阶段的过程(上传图片,然后添加),那么你必须设置一个隐藏的输入,其值是文件路径。
但是,理想情况下,用户将填写姓名并提供图像,然后将它们一起提交。为了做到这一点,将所有输入放在同一个表单元素中,并远程“添加”按钮。
答
由于您的两个表单都是独立工作的(彼此之间有任何关联关系),所以$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
}
}
谢谢你的男人。 我试了一下,它的工作原理。 我永远不会认为它会如此简单。 –