2015-02-08 4 views
-1

Я делаю систему бронирования с использованием php и mysql. Система будет включать в себя получение записей о бронировании разных пользователей из mysql. В настоящее время у меня возникают трудности с выбором заказов, сделанных разными пользователями. Я хочу выбрать записи на основе зарегистрированного пользователя. Я использовал приведенный ниже код, где он должен выбирать записи из табличных заказов, а также сеанс пользователя. Но этот код не отображает никаких заказов.Выбор и отображение записей из двух разных таблиц

$sqlquery = "SELECT * FROM bookings,users where users.id= ".$_SESSION['loggedInUser'].""; 

$results = $mysqli->query($sqlquery); 

Я столкнулся с этой проблемой некоторое время, и я действительно хочу выбрать заказы, сделанные пользователями для входа.

+0

Вы должны использовать LEFT JOIN между этими двумя таблицами: http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php – valicu2000

+0

Вы могли бы привести мне пример, пожалуйста, и как я могу его использовать – r93

+0

Выполняет ли вход у пользователя есть одно бронирование или у пользователя может быть более одного? – junkystu

ответ

-1

Чтобы выбрать заказы, сделанные вошедшего пользователя: Вы должны попробовать INNER JOIN:

$sqlquery = "SELECT b.* FROM bookings b 
INNER JOIN users u ON u.id_user = b.user_id 
WHERE u.id_user= ".$_SESSION['loggedInUser']; 
+0

Ваше условие WHERE отрицает ваш выбор JOIN. – Strawberry

+0

Вы уверены в этом или просто говорите, что сначала можете написать ответ. –

+0

Я уверен. 'EXPLAIN EXTENDED ...'за ним следует' SHOW WARNINGS; 'будет доказывать точку – Strawberry

0

Вы должны сводную таблицу, чтобы связать пользователей бронирований:

CREATE TABLE user_bookings (id int PRIMARY KEY AUTO_INCREMENT, booking_id int, user_id int); 

я обычно в конечном итоге с помощью двух запросов поскольку это позволяет лучше структурировать данные. В зависимости от размера вашего сайта/приложения вы можете использовать Map Relation Mapper, поскольку он может обрабатывать отображение данных внутри вас.

Если вам нужны только заказы, вы можете просто выбрать из сводной таблицы и присоединиться заказы как этот

$bookingsql = "SELECT * FROM user_bookings JOIN bookings on bookings.id = user_bookings.booking_id where user_bookings.user_id =" . $_SESSION['loggedInUser']; 

Если вам нужны пользовательские данные тоже, вы можете выбрать пользователя, а затем запустить $bookingsql запрос чтобы получить информацию о бронировании.

$usersql = "SELECT * FROM users where id= " . $_SESSION['loggedInUser']; 

И затем, в зависимости от драйвера базы/базы данных, которую вы используете, преобразование результата $usersql запроса в массив, называемый $user и назначить заказы на него с результатом от $bookingsql запроса.

Это также может быть достигнуто с помощью подзапросов, см. Пример this question, но мы рассматриваем продукты как ваши пользователи и категории как ваши заказы.

+0

Я пробовал этот путь. $ sqlquery = "SELECT * FROM заказы, пользователи, где users.username =". $ _SESSION [ 'loggedInUser'] "". но я все еще не могу получить какие-либо записи – r93

+0

Я пробовал, и он не смог ничего показать – r93

+0

К сожалению, я обновил запрос. Идея заключается в том, что вы получаете своего пользователя с '$ usersql', а затем получаете заказы для этого пользователя с' $ bookingsql'. Для этого вам, конечно же, необходимо сохранить идентификатор пользователя в '$ _SESSION ['loggedInUser']', если вы сохранили имя пользователя или что-то еще. – junkystu

Смежные вопросы