Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql] Blokada pola w bazie na czas edycji
Forum PHP.pl > Forum > Przedszkole
kozioł
Witam , walczę od jakiegoś czasu z nielada problemem , i nie mam juz pomysłów

więc tak:


mam formularz dzieki któremu uzytkownik uzupełnia bazę , w bazie sql wcześniej są zapisane "NUMER" , oraz numer "HDW".

Formularz składa się z dwóch części , uzytkownik wybiera "HDW" klika szukaj, co powiduje że w jednym z pól formularza wyświetla sie "NUMER" potem uzytkownik dopisuje jakieś tam dane , klika wyślij , i dane lecą do skryptu który robi update danego pola należącego do "NUMER". Ale jest problem , bo może się zdażyć że dwóch użytkowników zaloguje się i w tym samym czasie wybierze ten sam numer "HDW" , i zostanie wyświetlone to samo na dwóch różnych komputerach. Pomyślałem że zrobię dodatkową kolumnę "MARK" (tak ją nazwałem) , i podaczs (klknięciu szukaj) "HDW" jednocześnie dopiszę się w polu "MARK" jedynka należąc a do pola "NUMER" któr ma się wyświetlić i juz było by ok , bo w warunku podczas wyświetlania danych dodał bym że to pole musi byc puste.

ale jest problem bo w skrypcie mojego formularza nigdzie nie ma tej wartości "NUMER" jest tylko numer "HDW" , a tylko po wartości "NUMER" mogę zamarkować polę w bazię , bo inaczej bez żadnego warunku zaznaczaja mi sie wszystkie pola w bazie w kolumnie MRK.


Czy macie jakiś pomysł na rozwiązanie tego problemu / , będę ogromnie wdzięczny


ps.

tak pobieram numer z bazy który wyświetla się w formularzu ,

  1. <?php
  2. $q = "SELECT * FROM baza WHERE rezultat =''AND HDW = '$HDW' GROUP BY numer LIMIT 1 ";
  3. $wynik = mysql_query($q);
  4. while ($wiersz = mysql_fetch_array($wynik)) {
  5. echo '' . $wiersz['numer'] .'';
  6. ?>



pozdrawiam
srwsio
podaj kod to ci go zmienię
ale zasada taka :
1) dodajesz kolumnę mark ( pole będzie przyjmowało wartość 1 lub 0 )
2) modyfikujesz zapytanie pobierające pole numer wg hdw - czyli pobierasz NUMER jeśli pole mark będzie miało wartośc 0 , jeśli przyjmie jedynkę wyświetl odpowiedni komunikat
3) dodajesz do zapytania równiez cos takiego jak : jeśli pobieram pole HDW nr 2 to pole mark update na 1
4) przy zapisie zwolnij pole mark update na 0
i to wszystko - najprostszy moim zdaniem sposób
  1. <?php
  2. $q = "SELECT * FROM baza WHERE rezultat ='' AND HDW = '$HDW' AND MARK='0' GROUP BY numer LIMIT 1 ";
  3. // jeśli pole mark jest pełne wartość 1 wtedy pojawi ci się błąd
  4. $wynik = mysql_query($q) or die(mysql_error());;
  5.  
  6. //dodajemy zapytanie zmieniające kolumne MARK
  7. $r = "UPDATE baza SET mark=1 [WHERE HDW='$HDW']";
  8. $markujemy = mysql_query($r) or die(mysql_error());
  9.  
  10. while ($wiersz = mysql_fetch_array($wynik)) {
  11. echo '' . $wiersz['numer'] .'';
  12.  
  13. //przy zapisie daj , ustawi ci pole mark znów na 0 czyli można edytować
  14. $r = "UPDATE baza SET mark=0 [WHERE HDW='$HDW']";
  15. $wynik = mysql_query($r) or die(mysql_error());
  16. ?>
kozioł
dzięki ,

tylko brakuje mi jednego,

bo numerów HDW , w bazie jest takich samych wiele , to jest taka paczka , gdzie każdy numer jest inny , ale HDW jest takie samo dla jakiejś ilości numerów , gdybym mogł jakoś w tym samym czasie co wyświetlam numer pobrac go jako zmienną , to było by ok ,

bo zrobił bym, tak

  1. <?php
  2. $r = "UPDATE baza SET mark=1 [WHERE HDW='$HDW' AND numer ='$numer']";
  3. $markujemy = mysql_query($r) or die(mysql_error());
  4. ?>




to mój cały kod ,

brakuje w nim właśnie markowania wiersza z któego aktualnie wyświetla sie numer

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>FTP</title>
  5. <link rel="stylesheet" type="text/css" href="style.css" />
  6. </head>
  7.  
  8. <body style="background-image: url(img/tlo.png); background-repeat: repeat-x;">
  9.  
  10.  
  11. <a href="baza.php">Strona główna</a> -<a href="wyloguj.php">Wyloguj się</a><br /><br /><br /><br />
  12.  
  13.  
  14. <form enctype="multipart/form-data" action="upload3.php" method="POST"
  15. <?php
  16.  
  17. $data= date(' Y-m-d') ; 
  18. echo "<input type=\"hidden\" name=\"data\" value=\"".$data."\">";
  19.  
  20. ?>
  21.  
  22. <?php
  23. $conn = mysql_connect("localhost", "root", "vertrigo") or die(mysql_error());
  24. mysql_select_db("bazy",$conn) or die ("nie mogę połączyć z bazą");
  25.  
  26.  
  27. ?>
  28.  
  29. <?php
  30. $conn = mysql_connect("localhost", "root", "vertrigo") or die(mysql_error());
  31. mysql_select_db("bazy",$conn) or die ("nie mogę połączyć z bazą");
  32. $login=$_SESSION['user_logged'];
  33. $query = "SELECT * FROM login where login ='$login'";
  34.  
  35. $results = mysql_query($query) or die("Wykonanie zapytania nie powiodło się: ".mysql_error());
  36. while($row=mysql_fetch_array($results))
  37. {
  38. extract($row);
  39.  
  40. }
  41.  
  42.  
  43. echo "<input type=\"hidden\" name=\"imie\" value=\"".$imie."\">";
  44. echo "<input type=\"hidden\" name=\"data\" value=\"".$data."\">";
  45. echo "<input type=\"hidden\" name=\"nazwisko\" value=\"".$Nazwisko."\">";
  46. echo('</b><br /><br></br>');
  47.  
  48. ?>
  49.  
  50. <br></br>
  51.  
  52. <table border="2" cellspacing="1" cellspacing="3"
  53. bgcolor="#353535" align="center">
  54. <tr>
  55. <td bgcolor="#CFCFFF" width="50%"><b>NR telefonu</b></td>
  56. <td bgcolor="#FFFFFF" width="50%">
  57.  
  58. <?php
  59. $HDW=$_POST['HDW'];
  60.  
  61. $conn = mysql_connect("localhost", "root", "vertrigo") or die(mysql_error());
  62. mysql_select_db("bazy",$conn) or die ("nie mogę połączyć z bazą");
  63. ?>
  64. <?php
  65. $q = "SELECT * FROM baza WHERE rezultat =''AND HDW = '$HDW' GROUP BY numer LIMIT 1 ";
  66. $wynik = mysql_query($q);
  67. while ($wiersz = mysql_fetch_array($wynik)) {
  68. echo '' . $wiersz['numer'] .'';
  69.  
  70. echo "<input type=\"hidden\" name=\"numer\" value=\"$wiersz[numer]\">";
  71. echo "<input type=\"hidden\" name=\"rodzaj\" value=\"$wiersz[rodzaj]\">";
  72. echo "<input type=\"hidden\" name=\"HDW\" value=\"$wiersz[HDW]\">";
  73. echo "<input type=\"hidden\" name=\"HDW\" value=\"$wiersz[HDW]\">";
  74. };
  75.  
  76.  
  77. ?>
  78.  
  79. </td>
  80. </tr>
  81. <tr>
  82. <td bgcolor="#FAFFFFF"><b>Rezultat </b></td>
  83. <td bgcolor="#FFAFFFF">
  84. <input type ="radio" name="type" value="Pozytywny" checked>
  85. pozytywna<br>
  86. <input type ="radio" name="type" value="Negatywny" checked>
  87. negatywna<br>
  88. <input type ="radio" name="type" value="Nieskuteczny" checked>
  89. nieskuteczna<br>
  90. </td>
  91. </tr>
  92.  
  93. <td bgcolor="#FAFFFFFA"><b>UWAGI</b></td>
  94. <td><textarea rows="3" cols="30" wrap="physical" name="uwagi"></textarea></td> 
  95.  
  96. </td>
  97. </tr>
  98.  
  99. <TR>
  100. <td bgcolor="#FCAFFFAFA" colspan="2" align="center">
  101. <input type="submit" name="SUBMIT" value="DODAJ">
  102. </TD>
  103. <TR>
  104. <br></br><br></br>
  105.  
  106.  
  107. </form>
  108. <br></br><br></br>
  109.  
  110. <table border="1" cellspacing="1" 
  111. bgcolor="#1535155555" align="center">
  112. <tr>
  113. <td bgcolor="GRAY" width="50%"><b>TYP</b></td>
  114. <td bgcolor="WHITE" width="50%">
  115.  
  116.  
  117.  
  118. <?php
  119.  
  120.  
  121. $q3 = "SELECT * FROM baza WHERE rezultat ='' AND HDW = '$HDW' GROUP BY numer LIMIT 1 ";
  122. $wynik3 = mysql_query($q3);
  123. while ($wiersz = mysql_fetch_array($wynik3)) 
  124.  echo '' . $wiersz['rodzaj'] .'';
  125.  
  126.  
  127. ?>
  128.  
  129.  
  130. <TR>
  131. <br><br><br><br><br></br></br></br></br></br>
  132.  
  133. <table border="1" cellspacing="1" 
  134. bgcolor="FFFFFFFF" align="center">
  135. <tr>
  136. <td bgcolor="GRAY" width="50%"><b>nr HDW</b></td>
  137. <td bgcolor="WHITE" width="50%">
  138.  
  139. <?php
  140.  
  141.  
  142. $q2 = "SELECT * FROM baza WHERE rezultat ='' AND HDW = '$HDW' GROUP BY numer LIMIT 1 ";
  143. $wynik2 = mysql_query($q2);
  144. while ($wiersz = mysql_fetch_array($wynik2)) 
  145.  echo '' . $wiersz['HDW'] .'';
  146.  
  147. ?>
  148. </TR>
  149.  
  150. <form enctype="multipart/form-data" action="rozliczenie.php" method="POST"
  151. <TR>
  152. <table border="0" cellspacing="1" cellspacing="3"
  153. bgcolor="#353535" align="center">
  154. <tr>
  155. <td bgcolor="#AFFFFFF" width="50%"><b>HDW</b></td>
  156. <td bgcolor="#FFFFFF" width="50%">
  157. <select name= "HDW" >
  158.  
  159. <option value=""selected> Wybierz HDW...</option>
  160.  
  161. ?>
  162.  
  163. <?php
  164. $q3 = "SELECT * FROM baza GROUP BY HDW ";
  165. $wynik3 = mysql_query($q3);
  166. while ($wiersz = mysql_fetch_array($wynik3)) {
  167.  echo '<OPTION value="' . $wiersz['HDW'] .
  168.  '">'. $wiersz['HDW'] . '</OPTION>';
  169.  
  170. };
  171.  
  172.  
  173. ?>
  174.  
  175.  
  176. </TR>
  177. <TR>
  178. <td bgcolor="#FCAFFFAFA" colspan="2" align="center">
  179. <input type="submit" name="SUBMIT" value="szukaj">
  180. </TD>
  181. <TR>
  182. <br></br><br></br>
  183.  
  184.  
  185.  
  186.  
  187.  
  188. </form>
  189. </body>
  190. </html>


Witam ,

ni nic mi nie wychodzi :-(

czemu nie mogę zaznaczyć wiersza w bazie , które dotyczy pola które pobieram ,

czy to wogóle jest mozliwe? , aby za jednym razem pobrać rekord z bazy i jednocześnie zrobić wpis w innej kolumnie przypisanej do tego pola ?


kurcze nie mam juz pomysłu , utknąłem , a to jest bardzo wazna spraw dla mnie , bo wykluczała by sytuację pracy na tym samym rekordzie za bazy , wielu uzytkowników.


pozdrawiam , i liczę na Waszą pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.