每次选择下拉列表时,我都会尝试选择个别教师的时间表显示在完整日历上。
这是我写的jquery:
<script>
$(document).ready(function() {
$("#teachermale").change(function(){
var str = "";
$("#teachermale option:selected").each(function(){
str += $(this).text() + "";
});
//$("#val").text(str);
console.log(str);
changeDisplay(str);
}).change();
});
function changeDisplay(str){
console.log(str);
$.ajax({
url:'find_event.php',
type:'POST',
data : '&str='+encodeURIComponent(str),
dataType:'text',
success: function(json) {
alert('The string has been passed');
},
error: function(xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
}
</script>
选择框的HTML:
<select id="teachermale" name="teachermale">
<option selected disabled>Male Teachers</option>
<option value="Mohamed Adil">Mohamed Adil</option>
<option value="Sherif Reda">Sherif Reda</option>
<option value="Mohamed Shahban">Mohamed Shahban</option>
<option value="Abdullah al Haiti">Abdullah al Haiti</option>
<option value="Salah">Salah</option>
<option value="Ahmed Nabil">Ahmed Nabil</option>
<option value="Abdul Tawab">Abdul Tawab</option>
<option value="Mahmoud Mahmoud">Mahmoud Mahmoud</option>
<option value="Ahmed Ghanim">Ahmed Ghanim</option>
</select>
这是php for find_event.php
<?php
// List of events
$json_array["title"]=$_POST["str"];
$title =$json_array["title"];
// connection to the database
try{
$pdo = new PDO('mysql:host=localhost;dbname=******', '*****', '*******');
} catch(Exception $e) {
exit('Unable to connect to database.');
}
// Query that retrieves events
$requete = "SELECT * FROM `evenement` WHERE `title`=?";
// Execute the query
$resultat = $pdo->query($requete) or die(print_r($pdo->errorInfo()));
// sending the encoded result to success page
$resultat->execute($title);
$events = array();
$dbEvents = $resultat->fetchAll(PDO::FETCH_ASSOC);
foreach ($dbEvents as $event) {
$event['allDay'] = false;
$events[] = $event;
}
echo json_encode($events);
?>
由于select jquery函数中的console.log语句以及changeDisplay()函数,控制台会将教师名称写入两次。但是,似乎查询不会执行。有人可以在这帮助我。
答案 0 :(得分:0)
首先,您正在混合功能 - query
和execute
这两个功能都相同 - 执行查询。在这里你使用?
占位符,但不要为它设置值。
所以,你的正确代码应该是:
// Query that retrieves events
$requete = "SELECT * FROM `evenement` WHERE `title`=?";
// Prepare your query
$stmt = $pdo->prepare($requete);
if ($stmt) {
// argument of execute is array, not single value
if ($stmt->execute(array($title))) {
$events = array();
$dbEvents = $stmt->fetchAll(PDO::FETCH_ASSOC);
// more codes
// ...
} else {
// check for error
print_r($stmt->errorInfo());
}
}