Autor Zpráva
Kcko
Profil
Zdravim nocni ptaky,

hraju si trosku s transakcemi a vypotil sem tento kus kodu a zajimalo by mne zda-li jsem spravne umistil COMMIT , potazmo ROLLBACK. Prosim zkusenejsi aby se na to jukli, diky


 /**
  * Ulozi ticket
  */   
 function ticketSave()
 {
   global $login_id;
   
   $posledniZapas = current(array_keys($_POST["zapasHidden"]));
     
    // ulozime tiket
    $data = array (
                    "vlozil" => "$login_id",
                    "datum" => "NOW()",
                    "soutezID" => "$_GET[soutez]",
                    "kurz" => "$_POST[celkovyKurz]",
                    "sazka" => "$_POST[sazka]",
                    "vyhra" => "$_POST[vyhra]",
                    "posledni_zapas" => "$posledniZapas"
                    
                  );
    
   try
   {
      // zalozeni transakce
      db::query("START TRANSACTION");
     
      // ulozeni tiketu
      db::insert("kurzy_tikety", $data);
      if (mysql_error())
        Throw new exception('Tiket se neuložil - ' . mysql_error());
   
      // ziskani cisla tiketu
      $tiketID = db::lastID();
      if (!$tiketID)
        Throw new exception('Nepodařilo se vygenerovat číslo tiketu');
   
     
     // uložení tipů
     foreach ($_POST["zapasHidden"] as $zapasID => $volba)
     {
       $data = array (
                       "tiketID" => "$tiketID",
                       "zapasID" => "$zapasID",
                       "volba" => "'$volba'"
                     );
       db::insert("kurzy_tipy", $data); 
       if (mysql_error())
         Throw new exception('Tipy se neuložily - ' . mysql_error());             
     }
   
     
     // odečtení kreditu
     //odecti($cena, $kredit = false, $update = false, $userID, $soutezID)
     Credit::odecti($_POST["sazka"], Credit::status($login_id, $_GET["soutez"]), true, $login_id, $_GET["soutez"]);
     if (mysql_error())
        Throw new exception("Nepodařilo se odečíst kredit - " . mysql_error());
   
     // došlo to až sem tak potvrdime transakci
     db::query("COMMIT");
     
     // presmerujeme na hlášku o uspesnem potvrzeni
     Redirect::url("?ok=1");
   } 
  
                  
  catch (Exception $e)
  {
    echo "<p><strong>Uložení tiketu selhalo - chyba: <span style='color: red;'>" .$e->getMessage() . "</span></strong>"; 
    db::query("ROLLBACK");
  }
 
 }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: