首先,如果之前提到过这个问题,我很抱歉,但我找不到合适的答案。 我尝试使用图片进行在线测验,但上传的图片无法正常使用。按下按钮提交后,问题会在我的数据库中发布,但图片不是。 在我的数据库中,我有一个包含id列,question_id,问题,类型,图像和名称的表。
我不明白到底发生了什么......我需要你的建议/指示。
我是php的新手,很抱歉我的代码最终出现了重大错误。
提前感谢您的帮助!
<?php
if(isset($_POST['desc'])){
if(!isset($_POST['iscorrect']) || $_POST['iscorrect'] == ""){
echo "Sorry, important data to submit your question is missing. Please press back in your browser and try again and make sure you select a correct answer for the question.";
exit();
}
if(!isset($_POST['type']) || $_POST['type'] == ""){
echo "Sorry, there was an error parsing the form. Please press back in your browser and try again";
exit();
}
require_once("scripts/connect_db.php");
$question = $_POST['desc'];
$answer1 = $_POST['answer1'];
$answer2 = $_POST['answer2'];
$answer3 = $_POST['answer3'];
$answer4 = $_POST['answer4'];
$type = $_POST['type'];
$type = preg_replace('/[^a-z]/', "", $type);
$isCorrect = preg_replace('/[^0-9a-z]/', "", $_POST['iscorrect']);
$answer1 = strip_tags($answer1);
$answer1 = mysqli_real_escape_string($connection,$answer1);
$answer2 = strip_tags($answer2);
$answer2 = mysqli_real_escape_string($connection,$answer2);
$answer3 = strip_tags($answer3);
$answer3 = mysqli_real_escape_string($connection,$answer3);
$answer4 = strip_tags($answer4);
$answer4 = mysqli_real_escape_string($connection,$answer4);
$question = strip_tags($question);
$question = mysqli_real_escape_string($connection,$question);
require("scripts/connect_db.php");
if(isset($_FILES['image'])){
echo $_FILES['image']['tmp_name'];
$image= base64_encode($image);
}
if($image == TRUE){
$result=mysqli_query($connection, "insert into questions (name,image) values ('$name','$image')") or die(mysqli_error($connection));
}
if($type == 'tf'){
if((!$question) || (!$answer1) || (!$answer2) || (!$isCorrect)){
echo "Sorry, All fields must be filled in to add a new question to the quiz. Please press back in your browser and try again.";
exit();
}
}
if($type == 'mc'){
if((!$question) || (!$answer1) || (!$answer2) || (!$answer3) || (!$answer4) || (!$isCorrect)){
echo "Sorry, All fields must be filled in to add a new question to the quiz. Please press back in your browser and try again.";
exit();
}
}
$sql = mysqli_query($connection,"INSERT INTO questions (question, type) VALUES ('$question', '$type')")or die(mysqli_error($connection));
$lastId = mysqli_insert_id($connection);
mysqli_query($connection,"UPDATE questions SET question_id='$lastId' WHERE id='$lastId' LIMIT 1")or die(mysqli_error($connection));
//// Update answers based on which is correct //////////
if($type == 'tf'){
if($isCorrect == "answer1"){
$sql2 = mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '1')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '0')")or die(mysqli_error($connection));;
$msg = 'Thanks, your question has been added';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
if($isCorrect == "answer2"){
$sql2 = mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '1')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '0')")or die(mysqli_error($connection));
$msg = 'Thanks, your question has been added';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
}
if($type == 'mc'){
if($isCorrect == "answer1"){
$sql2 = mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '1')")or die (mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '0')")or die (mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', '0')")or die (mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', '0')")or die (mysqli_error($connection));
$msg = 'Thanks, your question has been added';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
if($isCorrect == "answer2"){
$sql2 = mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '1')")or die (mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '0')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', '0')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', '0')")or die(mysqli_error($connection));
$msg = 'Thanks, your question has been added';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
if($isCorrect == "answer3"){
$sql2 = mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', '1')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '0')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '0')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', '0')")or die(mysqli_error($connection));
$msg = 'Thanks, your question has been added';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
if($isCorrect == "answer4"){
$sql2 = mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', '1')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '0')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '0')")or die(mysqli_error($connection));
mysqli_query($connection,"INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', '0')")or die(mysqli_error($connection));
$msg = 'Thanks, your question has been added';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
}
}
?>
<?php
$msg = "";
if(isset($_GET['msg'])){
$msg = $_GET['msg'];
}
?>
<?php
if(isset($_POST['reset']) && $_POST['reset'] != ""){
$reset = preg_replace('/^[a-z]/', "", $_POST['reset']);
require_once("scripts/connect_db.php");
mysqli_query($connection,"TRUNCATE TABLE questions")or die(mysqli_error($connection));
mysqli_query($connection,"TRUNCATE TABLE answers")or die(mysqli_error($connection));
$sql1 = mysqli_query($connection,"SELECT id FROM questions LIMIT 1")or die(mysqli_error($connection));
$sql2 = mysqli_query($connection,"SELECT id FROM answers LIMIT 1")or die(mysqli_error($connection));
$numQuestions = mysqli_num_rows($sql1);
$numAnswers = mysqli_num_rows($sql2);
if($numQuestions > 0 || $numAnswers > 0){
echo "Sorry, there was a problem reseting the quiz. Please try again later.";
exit();
}else{
echo "Thanks! The quiz has now been reset back to 0 questions.";
exit();
}
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Create A Quiz</title>
<script>
function showDiv(el1,el2){
document.getElementById(el1).style.display = 'block';
document.getElementById(el2).style.display = 'none';
}
</script>
<script>
function resetQuiz(){
var x = new XMLHttpRequest();
var url = "addQuestions.php";
var vars = 'reset=yes';
x.open("POST", url, true);
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
x.onreadystatechange = function() {
if(x.readyState == 4 && x.status == 200) {
document.getElementById("resetBtn").innerHTML = x.responseText;
}
}
x.send(vars);
document.getElementById("resetBtn").innerHTML = "processing...";
}
</script>
<style type="text/css">
.content{
margin-top:48px;
margin-left:auto;
margin-right:auto;
width:780px;
border:#333 1px solid;
border-radius:12px;
-moz-border-radius:12px;
padding:12px;
display:none;
}
</style>
</head>
<body>
<div style="width:700px;margin-left:auto;margin-right:auto;text-align:center;">
<p style="color:#06F;"><?php echo $msg; ?></p>
<h2>What type of question would you like to create?</h2>
<button onClick="showDiv('tf', 'mc')">True/False</button> <button onClick="showDiv('mc', 'tf')">Multiple Choice</button>
<span id="resetBtn"><button onclick="resetQuiz()">Reset quiz to zero</button></span>
</div>
<div class="content" id="tf">
<h3>True or false</h3>
<form action="addQuestions.php" name="addQuestion" method="post">
<strong>Please type your new question here</strong>
<br />
<textarea id="tfDesc" name="desc" style="width:400px;height:95px;"></textarea>
<br />
<br />
<strong>Please select whether true or false is the correct answer</strong>
<br />
<input type="text" id="answer1" name="answer1" value="True" readonly>
<label style="cursor:pointer; color:#06F;">
<input type="radio" name="iscorrect" value="answer1">Correct Answer?</label>
<br />
<br />
<input type="text" id="answer2" name="answer2" value="False" readonly>
<label style="cursor:pointer; color:#06F;">
<input type="radio" name="iscorrect" value="answer2">Correct Answer?
</label>
<br />
<br />
<input type="hidden" value="tf" name="type">
<input type="submit" value="Add To Quiz">
</form>
</div>
<div class="content" id="mc">
<h3>Multiple Choice</h3>
<form action="addQuestions.php" name="addMcQuestion" method="post">
<strong>Please type your new question here</strong>
<br />
<textarea id="mcdesc" name="desc" style="width:400px;height:95px;"></textarea>
<br />
<br />
<strong>If you want to upload image, please upload here:</strong>
<br />
<br/>
<input type="file" name="submit" />
<br />
<br />
<strong>Please create the first answer for the question</strong>
<br />
<input type="text" id="mcanswer1" name="answer1">
<label style="cursor:pointer; color:#06F;">
<input type="radio" name="iscorrect" value="answer1">Correct Answer?
</label>
<br />
<br />
<strong>Please create the second answer for the question</strong>
<br />
<input type="text" id="mcanswer2" name="answer2">
<label style="cursor:pointer; color:#06F;">
<input type="radio" name="iscorrect" value="answer2">Correct Answer?
</label>
<br />
<br />
<strong>Please create the third answer for the question</strong>
<br />
<input type="text" id="mcanswer3" name="answer3">
<label style="cursor:pointer; color:#06F;">
<input type="radio" name="iscorrect" value="answer3">Correct Answer?
</label>
<br />
<br />
<strong>Please create the fourth answer for the question</strong>
<br />
<input type="text" id="mcanswer4" name="answer4">
<label style="cursor:pointer; color:#06F;">
<input type="radio" name="iscorrect" value="answer4">Correct Answer?
</label>
<br />
<br />
<input type="hidden" value="mc" name="type">
<input type="submit" name="submit" value="Add To Quiz">
</form>
</div>
</body>
</html>
答案 0 :(得分:0)
使用此:
<form action="addQuestions.php" name="addQuestion" method="post" enctype="multipart/form-data">
.....................
.....................
</form>
答案 1 :(得分:0)
从您的代码中看起来$image
未设置。我可以看到你将变量设置为$image= base64_encode($image);
但在此之前尚未设置。
请确保$image
变量设置为您尝试执行以下操作:
$image = base64_encode(
file_get_contents(
$_FILES['image']['tmp_name']
)
);
P.S。如前所述,表单必须使用multipart/form-data
的enctype,如@73badf2...的回答所示。
编辑:
我已经在本地测试了这段代码,但它运行正常。 (使用string
代替longblob
。)
$connection = mysqli_connect('127.0.0.1', 'root', '', 'test');
if (isset($_FILES['image'])) {
$name = $_FILES['image']['tmp_name'];
$image = base64_encode(
file_get_contents(
$_FILES['image']['tmp_name']
)
);
if (!empty($image)) {
$result = mysqli_query($connection, "insert into questions (name,image) values ('$name','$image')");
}
}
您是否设置了tmp
文件夹的权限?
答案 2 :(得分:0)
我解决了问题。 :)她来自:
cin.ignore(200,'\n');
getline(cin,name);
我替换了&#34;提交&#34;,用&#34;图像&#34;现在工作正常。
感谢您的指导!
现在我有另一个问题,图片发布在数据库中,另一个ID ...我研究了原因,但我找不到答案。如果有想法,请告诉我。
度过美好的一天!