Почему форма извлекает все данные, когда я не даю никакой информации?

Это index.php. когда я даю ввод, он выбирает конкретное имя и год. это нормально . но когда я отправляю форму, без какого-либо ввода она дает все название фильма и годы, но я не хочу этого, пользователь не может показать все данные, сохраненные в базе данных. Я дал метод priventdefault (), но он не работает. Как я могу решить эту проблему ?

<!DOCTYPE html>
<html>
<head>
<title>ajax</title>
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="crossorigin="anonymous"></script>
<script type="text/javascript">$(function() // this function excited if the jquery is ready i mean after jquery successfully loaded
{
function loaddata()
{

var moviename= $("#moviename").val(); // read moviename value and assign;

$.ajax({
type: "GET",
url: "query.php",
data: {
name:moviename // there is no variable name so you have to assign the moveiname to name vairable ;
},
success: function (data) {
$("#result").html(data);

}

});

}$("#submit").click(function(event) // Click Event Listener.
{
event.preventDefault();
loaddata()
});
});</script>
</head>
<body><p>Enter movie name </p>
<form action="" method="POST">
<input type="text" name="moviename" id="moviename" placeholder="Enter Movie Name" required autocomplete="off">
<input type="submit" name="submit" id="submit" value="Search"/>
<!-- if you want ot use jquery you have to use event listener. like $("#submit").click(function(event){}); code from line 31 to 35 -->
</form>
<br>

<div id="result">

</div>

</body>
</html

/// это query.php

<?php

include 'dbcon.php';

$name =isset($_GET['name'])?$_GET['name']:'';$query = mysqli_query( $conn,"SELECT * FROM movie WHERE name like '%$name%'");

while($row = mysqli_fetch_array($query))
{
echo "<p>".$row['name']."</p>";
echo "<p>".$row['year']."</p>";
}

?>

2

Решение

Выполните запрос, только если $ name не равно NULL.

if(!empty($name)) {
$query = mysqli_query( $conn,"SELECT * FROM movie WHERE name like '%$name%'");
while($row = mysqli_fetch_array($query)){
echo "<p>".$row['name']."</p>";
echo "<p>".$row['year']."</p>";
}
}
3

Другие решения

$name =isset($_GET['name'])?$_GET['name']:'';

if(!empty($name)){
$query = mysqli_query( $conn,"SELECT * FROM movie WHERE name like '%$name%'");

while($row = mysqli_fetch_array($query))
{
echo "<p>".$row['name']."</p>";
echo "<p>".$row['year']."</p>";
}
}

в JavaScript

     var moviename= $("#moviename").val(); // read moviename value and assign;
if(moviename){
$.ajax({
type: "GET",
url: "query.php",
data: {
name:moviename // there is no variable name so you have to assign the moveiname to name vairable ;
},
success: function (data) {
$("#result").html(data);

}

});
}
1

В query.php вы всегда назначаете пустую строку $name в строке, если пустое значение ‘name’ передано в query.php

$name =isset($_GET['name'])?$_GET['name']:'';.

Таким образом, запрос вернет вам все результаты в дБ как $name является пустой строкой и соответствует всем данным в БД.

Вы можете проверить, если $ name пусто, чтобы не запускать запрос.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector