Ajax – PHP – rezerwacje

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ń"; } 

Dodaj komentarz