问题
I have the code below. When I try to run access post elements with these lines
$tempskill = ($_POST['skill']);
$temptopic = ($_POST['topic']);
I get an error because it is not able to access the chosen skill or topic element from drop down. The goal was to allow a user to select items from drop down menus that are dependent on the previous one. Then, the chosen items can be called by the post function and inserted into a database table.
Can someone help?
<?php
require("functions/convert_functions.php");
$connect = mysqli_connect("localhost", "root", "", "questionbank");
if(isset($_POST["insert"]))
{
session_start();
$email = $_SESSION['email'];
$question = ($_POST['question']);
$type = ($_POST['type']);
$tempskill = ($_POST['skill']);
$temptopic = ($_POST['topic']);
if (adjust_convert($type) == 0){
$skill = convert_math_skill($tempskill);
$topic = convert_math_topic($temptopic);
}
if (adjust_convert($type) == 1){
$skill = convert_writing_skill($tempskill);
$topic = convert_english_topic($temptopic);
}
if (adjust_convert($type) == 2){
$skill = convert_reading_skill($tempskill);
$topic = convert_english_topic($temptopic);
}
$answerA = ($_POST['answerA']);
$answerB = ($_POST['answerB']);
$answerC = ($_POST['answerC']);
$answerD = ($_POST['answerD']);
$correctanswer = ($_POST['correctanswer']);
$checksql = "SELECT Question FROM questionlist WHERE Question = '$question'";
$resultcheck = $connect->query($checksql);
if(($resultcheck->num_rows > 0)){
echo("Entry exists! Please try again!");
}
else {
if (empty($email)){
echo "Not logged in";
}
else {
if (empty($_FILES["image"]["tmp_name"])) {
$sql = "INSERT INTO questionlist (Question, Email, type, Topic, Skill, imagename, answerA, answerB, answerC, answerD, correctanswer) VALUES ('$question', '$email', '$type', '$topic', '$skill', '', '$answerA', '$answerB', '$answerC','$answerD','$correctanswer')";
if (mysqli_query($connect, $sql)) {
//echo '<script>alert("Image Inserted into Database")</script>';
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connect);
}
}
else {
$file = addslashes(file_get_contents($_FILES["image"]["tmp_name"]));
$sql = "INSERT INTO questionlist (Question, Email, type, Topic, Skill, imagename, answerA, answerB, answerC, answerD, correctanswer) VALUES ('$question', '$email', '$type', '$topic', '$skill', '$file', '$answerA', '$answerB', '$answerC','$answerD','$correctanswer')";
if (mysqli_query($connect, $sql)) {
//echo '<script>alert("Image Inserted into Database")</script>';
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connect);
}
}
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Ensemble Education</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.js"></script>
<script src="js/scripts.js"></script>
</head>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php">Ensemble Education</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<?php
require("functions/functions.php");
if(logged_in());
?>
<li><a href="index.php">Profile</a></li>
<li><a href="logout.php">Logout</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<br /><br />
<div class="container" style="width:500px;">
<div class="row justify-content-center">
<div class="col-lg-5">
<div class="main_title">
<h2 class="mb-3">Submit your question here!</h2>
<form method="post" enctype="multipart/form-data" onsubmit="return validate_with_js(this)">
<label for="question">Question:</label><br>
<input type="text" id="question" name="question" data-required><br>
<select name="type" id="type" data-required>
<option value="">-Select Your Category-</option>
<option value="mathcalc">SAT Math Calculator</option>
<option value="mathnocalc">SAT Math No Calculator</option>
<option value="reading">SAT Reading</option>
<option value="writing">SAT Writing</option>
</select>
<div class="container2">
<div class="writing">
<select class="second-level-select" name="topic" id="type2" data-required>
<option value="">-Select Your Topic-</option>
<option value="science">Science</option>
<option value="socialstudies">Social Studies</option>
<option value="literature">Literature</option>
</select>
</div>
<div class="reading">
<select class="second-level-select" name="topic" id="type2" data-required>
<option value="">-Select Your Topic-</option>
<option value="science">Science</option>
<option value="socialstudies">Social Studies</option>
<option value="literature">Literature</option>
</select>
</div>
<div class="mathcalc">
<select class="second-level-select" name="topic" id="type2" data-required>
<option value="">-Select Your Topic-</option>
<option value="basic">Basic Algebra</option>
<option value="advanced">Advanced Algebra</option>
<option value="problem">Problem Solving and Data Analysis</option>
<option value="additional">Additional Topics</option>
</select>
</div>
<div class="mathnocalc">
<select class="second-level-select" name="topic" id="type2" data-required>
<option value="">-Select Your Topic-</option>
<option value="basic">Basic Algebra</option>
<option value="advanced">Advanced Algebra</option>
<option value="problem">Problem Solving and Data Analysis</option>
<option value="additional">Additional Topics</option>
</select>
</div>
</div>
<div class="second-level-container">
<div class="science">
<select class="second-level-container" name="skill" id="type2" data-required>
<option value="">-Select Your Skill-</option>
<option value="Command of Evidence">Command of Evidence</option>
<option value="Words in Context">Words in Context</option>
<option value="Grammar Conventions">Grammar Conventions</option>
<option value=">Idea Expression">>Idea Expression</option>
</select>
</div>
<div class="socialstudies">
<select class="second-level-container" name="skill" id="type2" data-required>
<option value="">-Select Your Skill-</option>
<option value="Command of Evidence">Command of Evidence</option>
<option value="Words in Context">Words in Context</option>
<option value="Grammar Conventions">Grammar Conventions</option>
<option value=">Idea Expression">>Idea Expression</option>
</select>
</div>
<div class="literature">
<select class="second-level-container" name="skill" id="type2" data-required>
<option value="">-Select Your Skill-</option>
<option value="Command of Evidence">Command of Evidence</option>
<option value="Words in Context">Words in Context</option>
<option value="Grammar Conventions">Grammar Conventions</option>
<option value=">Idea Expression">>Idea Expression</option>
</select>
</div>
<div class="basic">
<select class="second-level-container" name="skill" id="type2" data-required>
<option value="">-Select Your Skill-</option>
<option value="Linear Functions">Linear Functions</option>
<option value="Single variable equations">Single variable equations</option>
<option value="Systems of linear equations">Systems of linear equations</option>
<option value="Absolute value">Absolute value</option>
</select>
</div>
<div class="advanced">
<select class="second-level-container" name="skill" id="type2" data-required>
<option value="">-Select Your Skill-</option>
<option value="Manipulating polynomials">Manipulating polynomials</option>
<option value="Dividing polynomials">Dividing polynomials</option>
<option value="Exponential functions">Exponential functions</option>
<option value="Function notation">Function notation</option>
<option value="Solving exponential equations">Solving exponential equations</option>
<option value="Systems of equations with nonlinear equations">Systems of equations with nonlinear equations</option>
</select>
</div>
<div class="problem">
<select class="second-level-container" name="skill" id="type2" data-required>
<option value="">-Select Your Skill-</option>
<option value="Ratios and proportions">Ratios and proportions</option>
<option value="Scatterplots and graphs">Scatterplots and graphs</option>
<option value="Categorical data and probabilities">Categorical data and probabilities</option>
<option value="Experimental interpretation">Experimental interpretation</option>
<option value="Mean, median, mode, standard deviation">Mean, median, mode, standard deviation</option>
</select>
</div>
<div class="additional">
<select class="second-level-container" name="skill" id="type2" data-required>
<option value="">-Select Your Skill-</option>
<option value="Coordinate geometry—lines and slopes">Coordinate geometry—lines and slopes</option>
<option value="Coordinate geometry—nonlinear functions">Coordinate geometry—nonlinear functions</option>
<option value="Geometry—circles">Geometry—circles</option>
<option value="Geometry—lines and angles">Geometry—lines and angles</option>
<option value="Geometry—solid geometry">Geometry—solid geometry</option>
<option value="Geometry—triangles and polygons">Geometry—triangles and polygons</option>
<option value="Trigonometry">Trigonometry</option>
<option value="Complex numbers">Complex numbers</option>
</select>
</div>
</div>
<label for="answer">Answer Choices</label><br>
<input type="text" id="answerA" name="answerA" data-required><br>
<input type="text" id="answerB" name="answerB" data-required><br>
<input type="text" id="answerC" name="answerC" data-required><br>
<input type="text" id="answerD" name="answerD" data-required><br>
<br>
<br>
<label for="correctanswer">Choose your correct answer</label><br>
<input type="radio" id="answerA" name="correctanswer" value="A" data-required>
<label for="answerA">A</label><br>
<input type="radio" id="answerB" name="correctanswer" value="B" >
<label for="answerB">B</label><br>
<input type="radio" id="answerC" name="correctanswer" value="C" >
<label for="answerC">C</label><br>
<input type="radio" id="answerD" name="correctanswer" value="D" >
<label for="answerA">D</label><br>
<input type="file" name="image" id="image" />
<br />
<input type="submit" name="insert" id="insert" value="Insert" class="btn btn-info" />
<br><br><br>
</form>
</div>
</div>
</div>
</body>
</html>
<script>
$(document).ready(function(){
$('#insert').click(function(){
var image_name = $('#image').val();
if(image_name == '')
{
return true;
}
else
{
var extension = $('#image').val().split('.').pop().toLowerCase();
if(jQuery.inArray(extension, ['gif','png','jpg','jpeg']) == -1)
{
alert('Invalid Image File');
$('#image').val('');
return false;
}
}
});
});
$(document).ready(function() {
$('#type').bind('change', function() {
var elements = $('div.container2').children().hide(); // hide all the elements
var value = $(this).val();
if (value.length) { // if somethings' selected
elements.filter('.' + value).show(); // show the ones we want
}
}).trigger('change');
$('.second-level-select').bind('change', function() {
var elements = $('div.second-level-container').children().hide(); // hide all the elements
var value = $(this).val();
if (value.length) { // if somethings' selected
elements.filter('.' + value).show(); // show the ones we want
}
}).trigger('change');
});
</script>
Here's the jsfiddle version
http://jsfiddle.net/mrzjywkp/
Thanks
来源:https://stackoverflow.com/questions/62507034/php-post-not-working-in-html-form-with-js-validation