Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Problem z transakcjami
slawek3422
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


Witam.
Mam pewien problem z transakcjami w MySQL. Mam skrypt, w którym robię zapis do bazy. Zapis ten odbywa się w pętli. Dane zapisują się do różnych tabel. Nie wiem jak zrobić żeby transakcja działała dla wywołania skryptu. Działa mi dla pojedynczej iteracji i jak napotka na problem np w piątej iteracji to te zmiany mi anuluje ale poprzednich nie wycofuje no i robi pozostałe (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
slawek3422
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


trochę to będzie skomplikowane (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

dodaj.php <-- formularz
  1. <html>
  2. <link rel="stylesheet" href="styl.css" type="text/css">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. <form action="zapis.php" method="post" name="zapis">
  5.  
  6.    <table align="center" border="1">
  7.    
  8.    
  9. <!-- NAZWA -->
  10.        <tr><td class="lewa">
  11.        &nbsp;Nazwa monitora&nbsp;&nbsp;:</td>
  12.        <td colspan="2"><input class="nazwa" name="nazwa" type="text"></td>
  13.        </tr>    
  14.    
  15. <!-- PARAMETRY-->
  16.  
  17.        
  18.        
  19.        <?php
  20.        include('polacz.php');
  21.        $kategorie = mysql_query("SELECT * FROM kategorie ORDER BY kolejnosc ASC ");
  22.            while($row = mysql_fetch_array($kategorie)){
  23.                $id_kategorii = $row['id_kategorii'];
  24.                $kategoria = $row['kategoria'];
  25.                    echo '<tr><td class="lewa">';
  26.                    echo '&nbsp;'.$kategoria.'&nbsp;&nbsp;:</td>';
  27.                    
  28.                            
  29.                            $zapytanie1 = mysql_query("SELECT * FROM parametry WHERE id_kategorii = $id_kategorii order by parametr asc;");
  30.                                   echo '<td class="up">';
  31.                                echo "<select name='$id_kategorii'>
  32.                                        <option value=\"0\">-- nie wybrano --</option>";
  33.                                        while($wynik1 = mysql_fetch_array($zapytanie1)){
  34.                                            $id = $wynik1['id_parametru'];
  35.                                            $parametr = $wynik1['parametr'];    
  36.                                            echo "<option value=\"$id\">";
  37.                                            echo $parametr;
  38.                                            echo "</option>r\t\t\t\t\t\t\t";
  39.                                }
  40.                                echo '</select></td>
  41.        <td align="center"><input class="text" name="'.$id_kategorii.'_input" type="text"></td></tr>';    
  42.                            }
  43.                                
  44.        echo "<tr><td colspan=\"3\">&nbsp;</td></tr>";
  45.        echo "<tr><td colspan=\"3\" align=\"center\"><input type=\"submit\" value=\"Zapisz\">&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"reset\" value=\"Reset\"></td></tr></table>";
  46.                        
  47.                    
  48.        
  49.            ?>


zapis.php
  1. <?php
  2.  
  3.  
  4.    include('polacz.php');
  5.    $nazwa = $_POST['nazwa'];
  6. mysql_query("START TRANSACTION");    
  7.            $query = mysql_query("SELECT nazwa FROM monitor WHERE nazwa = '$nazwa'");
  8.                if(mysql_num_rows($query) == 0){
  9.                $query = mysql_query("INSERT INTO monitor (id_monitora, nazwa, id_sklep) VALUES (NULL, '$nazwa', 0)");
  10.                $query = mysql_query("SELECT id_monitora FROM monitor WHERE nazwa = '$nazwa'");
  11.                    while($row = mysql_fetch_array($query)){
  12.                $id_monitora = $row['id_monitora'];
  13.                
  14.                }
  15.    $kategorie = mysql_query("SELECT * FROM kategorie ORDER BY kolejnosc ASC ");
  16.            while($row = mysql_fetch_array($kategorie)){
  17.                $id = $row['id_kategorii'];
  18.                $kategoria = $row['kategoria'];
  19.                    
  20.        if($_POST["$id"] != 0 && $_POST["$id"."_input"] != null){
  21.            $error = True;
  22.            echo "Wybrano wartość z listy i wpisano do selecta";
  23.            
  24.        }
  25.        if($_POST["$id"] == 0 && $_POST["$id"."_input"] != null){
  26.            $error = 0;
  27.            $parametr = $_POST["$id"."_input"];
  28.            $query = mysql_query("SELECT parametr FROM parametry WHERE parametr = '$parametr' AND id_kategorii = $id");
  29.                if(mysql_num_rows($query) == 0){
  30.            $query = mysql_query("INSERT INTO parametry (id_parametru, id_kategorii, parametr) VALUES (NULL, $id, '$parametr')");
  31.            $query = mysql_query("SELECT id_parametru FROM parametry WHERE parametr = '$parametr' AND id_kategorii = $id");
  32.                    while($row = mysql_fetch_array($query)){
  33.                    $id_parametru = $row['id_parametru'];
  34.                    $query = mysql_query("INSERT INTO parametry_monitora (id_parametru_monitora, id_monitora, id_parametru) VALUES (NULL, $id_monitora, $id_parametru)");
  35.                    
  36.                    }
  37.                    IF(mysql_errno()) $error = True;
  38.                }    else    {
  39.                    
  40.                    $query1 = mysql_query("SELECT id_parametru FROM parametry WHERE parametr = '$parametr' AND id_kategorii = $id");
  41.                    while($row = mysql_fetch_array($query1)){
  42.                    $id_parametru = $row['id_parametru'];
  43.                    $query = mysql_query("INSERT INTO parametry_monitora (id_parametru_monitora, id_monitora, id_parametru) VALUES (NULL, $id_monitora, $id_parametru)");
  44.                    
  45.                    
  46.                }IF(mysql_errno()) $error = True;
  47.            }
  48.        }
  49.        if($_POST["$id"] != 0 && $_POST["$id"."_input"] == null){
  50.            
  51.            echo $_POST["$id"]."<br>";
  52.        }
  53.                    
  54.  
  55. }
  56. if($error){
  57.        @mysql_query("ROLLBACK");
  58.        echo '<div class="err_body">Modyfikacja bazy zakończona niepowodzeniem.</div>';
  59.    } else {
  60.        @mysql_query("COMMIT");
  61.      header("Location: index.php");
  62.    }
  63. }    else echo "Błąd w nazwie monitora";
  64. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 09:24