Przykład obsługi rezerwacji po obu stronach – klient serwer
Javascript
// Po rezerwacji - zapianiu w bazie - zaznacza komórkę jako zarezerwoaną
var renderRezerwacja = function( obj, result ) {
if( result.error ) {
alert(result.error);
} else {
$( obj.box ).addClass('reserved').addClass('z' + obj.z_id );
$( obj.box ).attr('data-id', result.id);
var user = $('#user-id option:selected').text();
var cel = $('#cel').val();
$( obj.box ).attr('title', user + " - " + cel);
}
};
// Rezerwuje termin - zapytanie AJAX do bazy
var setRezerwacja = function( obj ){
var url = '/ajax/set-rezerwacja.php';
var data_obj = {
tz : obj.tz,
user_id : obj.user_id,
};
var data = JSON.stringify(data_obj); //alert(data); exit;
$.ajax({
url : url,
type : 'post',
dataType : 'json',
data : data,
success : function(result){
renderRezerwacja( obj, result )
},
error : function(e){ alert("Błąd połączenia AJAX"); }
});
};
// Przygotowanie danych i wywołanie funkcji
var onClickDay = function(){
if( $(this).hasClass("cell") ) {
var obj = {};
obj.tz = $(this).attr('data-tz');
obj.user_id = $('#user-id option:selected').val();
obj.box = this;
setRezerwacja(obj);
}
return false;
};
// Przechwycenie kliknięcia
$('.day').on('click', onClickDay );
PHP – set-rezerwacja.php
header("Content-Type: text/html; charset=utf-8");
session_start();
date_default_timezone_set("Europe/Warsaw");
error_reporting(E_ALL);
ini_set("display_errors", 0);
if($_SESSION['uid'])
{
$DB = new mysqli(DB_HOST, DB_USER, DB_PASSWD, DB_NAME);
if(mysqli_connect_error($DB)) {
throw new exception("Błąd połączenia z bazą");
}
// Połączenie AJAX
if( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' )
{
$input = json_decode( file_get_contents("php://input") );
$tz = $input->tz ? (int) $input->tz : null ;
$user_id = $input->user_id ? (int) $input->user_id : null ;
$cel = $input->cel ? htmlspecialchars($input->cel) : null ;
// Wymagane dane
if( $tz && $user_id )
{
require_once(CLASS_DIR."Rezerwacje.class.php") ;
$data = date("Y-m-d", $tz);
$u = new Rezerwacje();
$u->tz = $tz;
$u->user_id = $user_id ;
$u->cel = $cel ;
$u->data = $data ;
$u->inserted_by = $_SESSION['uid'];
if($u->save() == 1) {
result = $u->id;
} else {
$result['error'] = "Nie można zapisać rezerwacji";
}
}
}
else { $result['error'] = "Błędne połączenie"; }
echo json_encode( $result );
exit;
}
else { echo $result['error'] = "Brak uprawnień"; }