Я пишу некоторый код, который позволит пользователю вводить там местоположение и месяц года и получать звездочки, которые можно увидеть в этом месяце с их местоположения. Моя база данных завершена, и запрос работает на mySQl, но я пытаюсь реализовать его на веб-странице и столкнулся с некоторыми трудностями, у меня есть два ввода, которые может сделать пользователь, и программа ниже, которая запускает функцию. Если кто-то может обнаружить какие-либо ошибки, Функция не будет выводить какие-либо данные, когда введены местоположение и месяц, но когда ничего не введено и нажата кнопка «Отправить», она выводит события, но не может понять, почему.
Функция поиска находится ниже, а затем событие. php ниже этого
<?php
/**
* Performs a search
*
* This class is used to perform search functions in a MySQL database
*
*
*
*/
class search {
/**
* MySQLi connection
* @access private
* @var object
*/
private $mysqli;
/**
* Constructor
*
* This sets up the class
*/
public function __construct() {
// Connect to our database and store in $mysqli property
$this->connect();
}
/**
* Database connection
*
* This connects to our database
*/
private function connect() {
$this->mysqli = new mysqli( 'localhost', 'conor', 'trevor29', 'site_db' );
}
/**
* Search routine
*
* Performs a search
*
* @param string $search_term The search term
*
* @return array/boolen $search_results Array of search results or false
*/
public function search($search_term, $search_term1) {
// Sanitize the search term to prevent injection attacks
$sanitized = $this->mysqli->real_escape_string($search_term);
$sanitized1 = $this->mysqli->real_escape_string($search_term1);// Run this Query
$query =$this ->mysqli->query("SELECT event_name FROM event
INNER JOIN event_month
ON event.event_id = event_month.event_id
INNER JOIN month
ON event_month.month_id = month.month_id
INNER JOIN location
ON location.hemisphere = event.hemisphere
WHERE month_name LIKE '%{$sanitized}%'
AND city LIKE '%{$sanitized1}%'
");
// Run the query
//$query = $this->mysqli->query("//SELECT *
//FROM event inner join location
//ON event.event_id = location.event_id
//WHERE city LIKE'%{$sanitized}%'
//");
// Check results
if ( ! $query->num_rows ) {
return false;
}
// Loop and fetch objects
while( $row = $query->fetch_object() ) {
$rows[] = $row;
}
// Build our return result
$search_results = array(
'count' => $query->num_rows,
'results' => $rows,
);
return $search_results;
}
}
этот код ниже является страницей событий, которая вызывает функцию поиска выше
? PHP
//getname
session_start();
//Check if search data was submitted
$search_results="";
if (isset( $_GET['s'])){
// Include the search class
require_once( dirname( __FILE__ ) . '/class-search.php' );
// Instantiate a new instance of the search class
$search = new search();
// Store search term into a variable
$search_term =($_GET['s']);
$search_term1 =($_GET['m']);// Send the search term to our search class and store the result
$search_results = $search->search($search_term, $search_term1);}
?>
Это ниже, где пользователь вводит свое местоположение и месяц
Поиск
«>
<form action= "" method = "get">
<div class= "form-field">
<label for="search-field">Search</label>
<input type = "type" name ="m" placeholder = "Enter the month" results="5" value = "<?php $search_term1; ?>">
<input type ="submit" value = "Search">
</div>
Если кто-то может увидеть какие-либо ошибки или ошибки, было бы здорово помочь, чем больше я работаю над этим, тем дальше я получаю
Ну, самая простая ошибка, которую я могу видеть из ограниченного снимка, как это, вы проходите через месяц $search_term1
ОДНАКО вы ищете city
с $sanitized1
что заставляет меня верить, что в запросе месяц и город поменялись местами.
Других решений пока нет …