Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function newReservation($conn, $user, $from, $to, $npass) {
- //transazione
- $from = mysqli_real_escape_string($conn, $from);
- $to = mysqli_real_escape_string($conn, $to);
- $npass = mysqli_real_escape_string($conn, $npass);
- $presFrom = false;
- $presTo = false;
- global $msg;
- try {
- mysqli_autocommit($conn, false);
- $sql = "SELECT username FROM prenotazioni WHERE username='".$user."'";
- if (!($res = mysqli_query($conn, $sql))){
- throw new Exception("Errore Database. Riprovare");
- }
- if (mysqli_num_rows($res)>0) {
- mysqli_free_result($res);
- throw new Exception("Prenotazione gia effettuata. Prima occorre cancellare la precedente.");
- }
- mysqli_free_result($res);
- $sql="SELECT * FROM fermate WHERE fermata>='".$from."' AND fermata<='".$to."' FOR UPDATE";
- if (!($res = mysqli_query($conn, $sql))){
- throw new Exception("Errore Database. Riprovare");
- } else {
- $stops = array();
- $i = 0;
- while (($row = mysqli_fetch_array($res)) != NULL) {
- $stops[$i] = $row;
- $i++;
- if ($stops[0] == $from)
- $presFrom = true;
- if ($stops[0] == $to)
- $presTo = true;
- }
- mysqli_free_result($res);
- }
- sleep(6);
- if (!$presFrom) {
- $sql="SELECT SUM(passeggeri) FROM prenotazioni WHERE partenza<='".$from."' and destinazione>'".$from."'";
- if (!($res = mysqli_query($conn, $sql))){
- throw new Exception("Errore Database. Riprovare");
- }
- if ( ($sum = mysqli_fetch_array($res)) == NULL)
- $sum = 0;
- else
- $sum = intval($sum[0]);
- mysqli_free_result($res);
- $sql="INSERT INTO fermate (fermata, passeggeri) VALUES ('".$from."', ".$sum.")";
- if (!mysqli_query($conn, $sql)){
- throw new Exception($sql);
- }
- }
- if (!$presTo) {
- $sql="SELECT SUM(passeggeri) FROM prenotazioni WHERE partenza<='" . $to . "' and destinazione>'" . $to . "'";
- if (!($res = mysqli_query($conn, $sql))) {
- throw new Exception("Errore Database. Riprovare");
- }
- if (($sum = mysqli_fetch_array($res)) == NULL)
- $sum = 0;
- else
- $sum = intval($sum[0]);
- mysqli_free_result($res);
- $sql = "INSERT INTO fermate (fermata, passeggeri) VALUES ('" . $to . "', " . $sum . ")";
- if (!mysqli_query($conn, $sql)) {
- throw new Exception("Errore Database. Riprovare");
- }
- }
- $sql="UPDATE fermate SET passeggeri=passeggeri+".$npass." WHERE fermata>='".$from."' and fermata<'".$to."'";
- if (!mysqli_query($conn, $sql)){
- throw new Exception("Errore Database. Riprovare");
- }
- $sql = "UPDATE fermate SET prenotazioni=prenotazioni+1 WHERE fermata>='".$from."' and fermata<='".$to."'";
- if (!mysqli_query($conn, $sql)){
- throw new Exception("3Errore Database. Riprovare");
- }
- $sql="SELECT * FROM fermate WHERE fermata>='".$from."' AND fermata<'".$to."' AND passeggeri>".N;
- if (!($res = mysqli_query($conn, $sql))){
- throw new Exception("Errore Database. Riprovare");
- }
- if (mysqli_num_rows($res) > 0) {
- mysqli_free_result($res);
- throw new Exception("Troppi passeggeri nella tratta.");
- }
- mysqli_free_result($res);
- $sql = "INSERT INTO prenotazioni (username, passeggeri, partenza, destinazione) VALUES ('" . $user . "', '" . $npass . "', '" . $from . "', '" . $to . "')";
- if (!mysqli_query($conn, $sql)){
- throw new Exception("Errore Database. Riprovare");
- }
- mysqli_commit($conn);
- } catch (Exception $e) {
- $msg = $e->getMessage();
- mysqli_rollback($conn);
- mysqli_autocommit($conn ,true);
- return false;
- }
- mysqli_autocommit($conn, true);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement