Codice PHP:
$query = 'SELECT * FROM prenotazione
LEFT JOIN prodotto ON prodotto.id_prodotto = prenotazione.id_prodotto
WHERE (SELECT max(prenotazione.id_prodotto)
FROM prenotazione WHERE user = '. $_SESSION['login'] . ')
&& prenotazione.ora_prenotazione > prodotto.date_start && prenotazione.ora_prenotazione < prodotto.date_end;';
Simile alla precedente ma le tabelle e i campi hanno nomi differenti.
Se id_chat è diverso per utente a che serve verificare l'uguaglianza? Inoltre è uguale implicitamente a id_chat se tabella chat_on campo user con tabella chat campo mittente. Invece tabella chat_on campo date_start e tabella chat_on campo date_end si riferiscono al prodotto se tabella chat campo tipo e valore P?
Codice PHP:
$query = 'SELECT * FROM chat
LEFT JOIN chat_on ON chat_on.id_chat = chat.id_chat
WHERE (SELECT max(chat.id_chat)
FROM chat WHERE mittente = \''. $_SESSION['login'] . '\')
&& chat.tipo = \'P\'
&& chat.ora > chat_on.date_start && chat.ora < chat_on.date_end;';
In realtà crei la tabella prodotto con i dati, poi l'utente effetua la prenotazione previa verifica che il tempo è valido e solo dopo lo memorizzi dentro al database, Non dovrebbe esistere user con id_prodotto dentro la tabella prenotazione se il tempo non è valido (quella validazione ti serve appunto per inserirlo nella tabella prenotazione). Te lo mostro come una domanda, id_prodotto uguale 1 e user domenico quante volte è presente nella tabella prenotazione? Da nessuna a almeno una volta per il prodotto 1 (poiché la struttura dei campi sono: id_prodotto, ora_prenotazione e user è specifica del id_prodotto 1 e user domenico, non una prenotazione generica o comunque non possiedi altri dati utili in quella tabella prenotazione) se fa due ordini a più tempi ovviamente da almeno una volta diventa a due volte per il prodotto id 1 e user domenico (che comunque previa validazione uno a uno) sono due ordini validi.
Quindi previa validazione se è loggato crei DateTime in php
Codice PHP:
<?php
session_start();
if(empty($_SESSION['login'])) {
// Inserire codice redirect al login
} else {
$prodotto = '1234';
$timezone = new \DateTimeZone('Europe/Rome');
$date1 = new \DateTime('now', $timezone);
$format1 = $date1->format('Y-m-d H:i:s.u');
$query = 'Select * FROM prodotto WHERE id_prodotto = ' . $prodotto . ';';
$variabile_contenitore = gdrcd_query($query, 'result');
$date2 = new \DateTime($variabile_contenitore['date_start'], $timezone);
$date2 = new \DateTime($variabile_contenitore['date_end'], $timezone);
if($date1 >= $date2 && $date1 <= $date3) {
// Istruzione SQL per inserimento id_prodotto, ergo memorizzare id_prodotto 1234 e user dentro la tabella prenotazione
}
}
?>
Se poi gentilmente chiarisci cosa significa la tabella chat_on, quasi certamente ti indico come modificare la struttura