Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.21 KB | None | 0 0
  1. function newReservation($conn, $user, $from, $to, $npass) {
  2.     //transazione
  3.     $from = mysqli_real_escape_string($conn, $from);
  4.     $to = mysqli_real_escape_string($conn, $to);
  5.     $npass = mysqli_real_escape_string($conn, $npass);
  6.     $presFrom = false;
  7.     $presTo = false;
  8.  
  9.     global $msg;
  10.  
  11.     try {
  12.         mysqli_autocommit($conn, false);
  13.  
  14.  
  15.         $sql = "SELECT username FROM prenotazioni WHERE username='".$user."'";
  16.         if (!($res = mysqli_query($conn, $sql))){
  17.             throw new Exception("Errore Database. Riprovare");
  18.         }
  19.         if (mysqli_num_rows($res)>0) {
  20.             mysqli_free_result($res);
  21.             throw new Exception("Prenotazione gia effettuata. Prima occorre cancellare la precedente.");
  22.         }
  23.         mysqli_free_result($res);
  24.  
  25.         $sql="SELECT * FROM fermate WHERE fermata>='".$from."' AND fermata<='".$to."' FOR UPDATE";
  26.         if (!($res = mysqli_query($conn, $sql))){
  27.             throw new Exception("Errore Database. Riprovare");
  28.         } else {
  29.             $stops = array();
  30.             $i = 0;
  31.             while (($row = mysqli_fetch_array($res)) != NULL) {
  32.                 $stops[$i] = $row;
  33.                 $i++;
  34.                 if ($stops[0] == $from)
  35.                     $presFrom = true;
  36.                 if ($stops[0] == $to)
  37.                     $presTo = true;
  38.             }
  39.             mysqli_free_result($res);
  40.         }
  41.  
  42.         sleep(6);
  43.  
  44.         if (!$presFrom) {
  45.             $sql="SELECT SUM(passeggeri) FROM prenotazioni WHERE partenza<='".$from."' and destinazione>'".$from."'";
  46.             if (!($res = mysqli_query($conn, $sql))){
  47.                 throw new Exception("Errore Database. Riprovare");
  48.             }
  49.             if ( ($sum = mysqli_fetch_array($res)) == NULL)
  50.                 $sum = 0;
  51.             else
  52.                 $sum = intval($sum[0]);
  53.             mysqli_free_result($res);
  54.             $sql="INSERT INTO fermate (fermata, passeggeri) VALUES ('".$from."', ".$sum.")";
  55.             if (!mysqli_query($conn, $sql)){
  56.                 throw new Exception($sql);
  57.             }
  58.         }
  59.  
  60.         if (!$presTo) {
  61.             $sql="SELECT SUM(passeggeri) FROM prenotazioni WHERE partenza<='" . $to . "' and destinazione>'" . $to . "'";
  62.             if (!($res = mysqli_query($conn, $sql))) {
  63.                 throw new Exception("Errore Database. Riprovare");
  64.             }
  65.             if (($sum = mysqli_fetch_array($res)) == NULL)
  66.                 $sum = 0;
  67.             else
  68.                 $sum = intval($sum[0]);
  69.  
  70.             mysqli_free_result($res);
  71.             $sql = "INSERT INTO fermate (fermata, passeggeri) VALUES ('" . $to . "', " . $sum . ")";
  72.             if (!mysqli_query($conn, $sql)) {
  73.                 throw new Exception("Errore Database. Riprovare");
  74.             }
  75.         }
  76.  
  77.  
  78.         $sql="UPDATE fermate SET passeggeri=passeggeri+".$npass." WHERE fermata>='".$from."' and fermata<'".$to."'";
  79.         if (!mysqli_query($conn, $sql)){
  80.             throw new Exception("Errore Database. Riprovare");
  81.         }
  82.  
  83.         $sql = "UPDATE fermate SET prenotazioni=prenotazioni+1 WHERE fermata>='".$from."' and fermata<='".$to."'";
  84.         if (!mysqli_query($conn, $sql)){
  85.             throw new Exception("3Errore Database. Riprovare");
  86.         }
  87.  
  88.  
  89.         $sql="SELECT * FROM fermate WHERE fermata>='".$from."' AND fermata<'".$to."' AND passeggeri>".N;
  90.         if (!($res = mysqli_query($conn, $sql))){
  91.             throw new Exception("Errore Database. Riprovare");
  92.         }
  93.         if (mysqli_num_rows($res) > 0) {
  94.             mysqli_free_result($res);
  95.             throw new Exception("Troppi passeggeri nella tratta.");
  96.         }
  97.         mysqli_free_result($res);
  98.  
  99.         $sql = "INSERT INTO prenotazioni (username, passeggeri, partenza, destinazione) VALUES ('" . $user . "', '" . $npass . "', '" . $from . "', '" . $to . "')";
  100.         if (!mysqli_query($conn, $sql)){
  101.             throw new Exception("Errore Database. Riprovare");
  102.         }
  103.  
  104.  
  105.         mysqli_commit($conn);
  106.  
  107.     } catch (Exception $e) {
  108.         $msg = $e->getMessage();
  109.         mysqli_rollback($conn);
  110.         mysqli_autocommit($conn ,true);
  111.         return false;
  112.     }
  113.  
  114.     mysqli_autocommit($conn, true);
  115.     return true;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement