Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Konstrukcja zapytania do bazy MySQL, z dynamicznymi zmiennymi
Fallout
post
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


Witam,

Nie jestem pewien czy ten post nadaje sie do php czy do MySql ale w sumie obydwa są powiązane ze soba nierozlacznie wiec nie krzyczec jakby co (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

mam taka funkcje:

  1. <?php
  2.  
  3. function _zmien()
  4. {
  5. $co = func_get_arg(0);
  6.  $id = func_get_arg(1);
  7.  $stare = func_get_arg(2);
  8.  $nowe = func_get_arg(3);
  9.  
  10. switch ($co)
  11. {
  12.  case 'cechy':
  13.  $sql = &#092;"UPDATE $co SET (nazwa_cechy = $nowe WHERE nazwa_cechy = $stare AND id_cn = $id\";
  14.  break;
  15.  
  16.  case 'producenci':
  17.  break;
  18. }
  19.  
  20.  include 'config.inc.php';
  21.  $p = mysql_connect($host,$user,$pass)   or Die($blad['E_BASE']);
  22.  $db = mysql_select_db($baza,$p)  or Die($blad['E_DB']);
  23.  $wynik = mysql_query($sql,$p)  or Die($blad['E_QUERY_UPD']);
  24. }
  25.  
  26. ?>


Do tej funkcji jest np takie odwolanie:

  1. <?php
  2.  
  3. (...)
  4.  case 'upd':
  5.  {
  6. $tab_nazwy = $_POST['nazwy'];
  7. $tab_dane = $_POST['dane'];
  8. $tab_idx = $_POST['idx'];
  9. foreach ($tab_nazwy as $index => $wartosc)
  10. {
  11. $oryg = $tab_dane[$index];
  12. $id = $tab_idx[$index];
  13. if ($oryg!=$wartosc) _zmien($co,$id,$oryg,$wartosc);
  14. //echo \"ID: $id, Było: $oryg , Jest: $wartosc\".\"n\";
  15. }
  16.  }
  17.  break;
  18. (...)
  19.  
  20. ?>


Dodam ze:
- zmienna $co zwraca nazwe tabeli do ktorej maja byc zaktualizowane dane
- zmienna $id daje nam numer wiersza w tabeli
- zmienna $stare zwraca stara wartosc danego pola w bazie (w niej jedyna nadzieja)
- zmienna $nowe zwraca nowa wartosc tego pola (moze byc takze jako nowe id)

Szkopul tkwi w tym, ze nie wiem jak zadac/sformulowac zapytanie do bazy aby aktualizowalo mi te pola ktore maja wartosc $stare o nowa wartosc $nowe. Problem w tym ze np tabela cechy (id_cn, nazwa_cechy) to wiadomo co gdzie bedzie ale juz
np w tabeli producenci (id_producent, nazwa, www, foto) nie wszystkie dane moga byc aktualizowane...

Mam nadzieje ze zrozumiale nakreśliłem mój problem, jeśli jakies watpliwości, lub potrzebne wycinki kodu to wrzuce (nie chcialem tutaj wrzucac prawie 600 lini kodu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )

Z gory dziekuje za (p)odpowiedzi..
Marcin
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Fallout
post
Post #2





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

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


Cytat(kszychu @ 2005-02-24 16:41:25)
A przekazuj sobie jeszcze zmienną $nazwa_kolumny i po kłopocie.

no taki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) normalnie na to nie wpadlem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

jakbym mogl to bym sobie przekazywal chyba ze pomozecie mi tak zmodyfikowac inny kod z ktorego sa te zmienne (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

oto on:

funckja rysujaca tabelke:

  1. <?php
  2.  
  3. function upd_form($co)
  4. {
  5. echo &#092;"<table border=\"1\"><tr align=\"center\"><td><form action=\"tabele.php?co=$co&akcja=upd\" method=\"POST\">\"; include 'config.inc.php';
  6. require 'config.inc.php';
  7. $p = mysql_connect($host,$user,$pass)  or Die ($blad['E_BASE']);
  8. $db  = mysql_select_db($baza,$p)  or Die ($blad['E_DB']);
  9. $sql  = &#092;"SELECT * FROM $co\";
  10. $wynik  = mysql_query($sql,$p)  or Die ($blad['E_QUERY_GET']);
  11. require 'tabs.inc.php';
  12. echo (get_tab_start($co,2));
  13. switch ($co)
  14. {
  15. case 'cechy':
  16. {
  17. while ($wiersz = mysql_fetch_array($wynik))
  18. {
  19. $id_cn = $wiersz['id_cn'];
  20.  $nazwa_cechy = $wiersz['nazwa_cechy'];
  21. echo (get_tab_end($co,2,$id_cn,$nazwa_cechy));
  22. }
  23. }
  24.  break;
  25.  
  26. case 'producenci':
  27. {
  28. while ($wiersz = mysql_fetch_array($wynik))
  29. {
  30. $id_producent = $wiersz['id_producent'];
  31.  $nazwa = $wiersz['nazwa'];
  32. $www = $wiersz['www'];
  33. $foto = $wiersz['foto'];
  34. echo (get_tab_end($co,2,$id_producent,$nazwa,$www,$foto));
  35. }
  36. }
  37. break;
  38. }
  39. echo &#092;"</table>\";
  40. echo &#092;"<table border=\"1\" width=\"100%\"><tr align=\"center\"><td><input type=\"submit\" value=\"Zapisz zmiany\"></td></tr></table></td></tr></table></form>\";
  41.  
  42. ?>


a to funckje je wypelniajace :

  1. <?php
  2. function get_tab_end()
  3. {
  4. include 'config.inc.php';
  5.  
  6. $co  = func_get_arg(0);
  7. $opcja = func_get_arg(1); // 1- kasowanie 2- aktualizacja
  8. $wiersz_id = func_get_arg(2);
  9. $td  = '';
  10. $del_td = &#092;"<td align=center><input type=checkbox name=del[] value=$wiersz_id></td>\";
  11. $end_tr = &#092;"</tr>\";
  12. // input do aktualizacji
  13. $nazwa_pola  = '';
  14. $wartosc_pola  = '';
  15.  
  16. switch ($co)
  17. {
  18. case 'cechy':
  19. case 'jm':
  20. case 'vat':
  21. {
  22. switch ($opcja)
  23. {
  24. case 0:
  25. case 1:
  26.  {
  27.  $td =  &#092;"<tr align=center>
  28.  <td>&#092;".func_get_arg(2).\"</td>
  29.  <td>&#092;".func_get_arg(3).\"</td>\";
  30.  }
  31. break;
  32.  
  33. case 2:
  34. {
  35.  $td = &#092;"<tr align=\"center\">\";
  36. $id_pola = func_get_arg(2);
  37. for ($i=2; $i<func_num_args(); $i++)
  38. {
  39.  $nazwa_pola  = func_get_arg($i);
  40.  $wartosc_pola  = func_get_arg($i);
  41. $input = &#092;"<td><input type=\"text\"  name=\"nazwy[]\" value=\"$wartosc_pola\"></td>\";
  42. $input .= &#092;"<input type=\"hidden\"  name=\"dane[]\" value=\"$nazwa_pola\">\";
  43. $input .= &#092;"<input type=\"hidden\"  name=\"idx[]\"  value=\"$id_pola\">\";
  44.  $td .= $input;
  45. $td .= &#092;"n\";
  46. }
  47. }
  48. break;
  49. }
  50. }
  51. break;
  52.  
  53. case 'producenci':
  54. {
  55. switch ($opcja)
  56. {
  57.  
  58.  case 0:
  59.  case 1:
  60.  {
  61.  $td =  &#092;"<tr align=\"center\">
  62.    <td>&#092;".func_get_arg(2).\"</td>
  63. <td>&#092;".func_get_arg(3).\"</td>
  64. <td>&#092;".func_get_arg(4).\"</td>
  65. <td><img src=&#092;"$img_prod_root\".func_get_arg(5).\"\"></td>\";
  66.  }
  67.  break;
  68.  
  69.  case 2:
  70.  {
  71.  $td = &#092;"<tr align=\"center\">\";
  72. $id_pola = func_get_arg(2);
  73. for ($i=2; $i<func_num_args(); $i++)
  74. {
  75.  $nazwa_pola  = func_get_arg($i);
  76.  $wartosc_pola  = func_get_arg($i);
  77. $input = &#092;"<td><input type=\"text\"  name=\"nazwy[]\" value=\"$wartosc_pola\"></td>\";
  78. $input .= &#092;"<input type=\"hidden\"  name=\"dane[]\" value=\"$nazwa_pola\">\";
  79. $input .= &#092;"<input type=\"hidden\"  name=\"idx[]\"  value=\"$id_pola\">\";
  80.  $td .= $input;
  81. $td .= &#092;"n\";
  82. }
  83.  }
  84.  break;
  85. }
  86.  
  87. }
  88. break;
  89. }
  90. switch ($opcja)
  91. {
  92. // bez zmian
  93. case 0:
  94. {
  95. $td .= $end_tr;
  96. }
  97. break;
  98. // skasowac
  99. case 1:
  100. {
  101. $td .= $del_td;
  102. $td .= $end_tr;
  103. }
  104. break;
  105.  
  106. }
  107. return $td;
  108. }
  109.  
  110. function get_tab_start()
  111. {
  112. $th = '';
  113. $del_th  = &#092;"<th>Skasować?</th>\";
  114. $end_th  = &#092;"</tr>\";
  115. $co  = func_get_arg(0);
  116. $opcja  = func_get_arg(1);
  117. switch ($co)
  118. {
  119. case 'cechy':
  120.  $th = &#092;"<table border=\"1\">
  121. <tr>
  122. <th><a href=&#092;"tabele.php?co=cechy&akcja=pokaz&jak=id_cn\">ID</a></th>
  123. <th><a href=&#092;"tabele.php?co=cechy&akcja=pokaz&jak=nazwa_cechy\">Nazwa Cechy</a></th>\";
  124.  
  125. break;
  126.  
  127. case 'producenci':
  128. $th = &#092;"<table border=\"1\">
  129. <tr>
  130. <th><a href=&#092;"tabele.php?co=producenci&akcja=pokaz&jak=id_producent\">ID</a></th>
  131. <th><a href=&#092;"tabele.php?co=producenci&akcja=pokaz&jak=nazwa\">Nazwa Producenta</a></th>
  132. <th><a href=&#092;"tabele.php?co=producenci&akcja=pokaz&jak=www\">Adres WWW</a></th>
  133. <th>Logo</th>&#092;";
  134. break;
  135.  
  136. case 'jm':
  137. $th = &#092;"<table border=\"1\">
  138. <tr>
  139. <th><a href=&#092;"tabele.php?co=jm&akcja=pokaz&jak=id_jm\">ID</a></th>
  140. <th><a href=&#092;"tabele.php?co=jm&akcja=pokaz&jak=jednostka\">Jednostka Miary</a></th>\";
  141. break;
  142.  
  143. case 'vat':
  144. $th = &#092;"<table border=\"1\">
  145. <tr>
  146. <th><a href=&#092;"tabele.php?co=vat&akcja=pokaz&jak=id_vat\">ID</a></th>
  147. <th><a href=&#092;"tabele.php?co=vat&akcja=pokaz&jak=stawka\">Stawka VAT</a></th>\";
  148. break;
  149.  
  150.  
  151.  
  152. }
  153. switch ($opcja)
  154. {
  155. // bez zmian
  156. case 0:
  157. {
  158. $th .= $end_th;
  159. }
  160. break;
  161. // skasowac
  162. case 1:
  163. {
  164. $th .= $del_th;
  165. $th .= $end_th;
  166. }
  167. break;
  168. }
  169. return $th;
  170. }
  171.  
  172.  
  173. ?>


czy teraz widac ze to nie takie proste?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
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: 11.10.2025 - 19:06