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%)
-----


Niestety, na takie cos to nawet bym nie zaśmiecał forum (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Zapewne zasegurowales sie tym:

  1. <?php
  2. $sql = &#092;"UPDATE $co SET (nazwa_cechy = $nowe WHERE nazwa_cechy = $stare AND id_cn = $id\";
  3. ?>


ale to jest proste...

mi chodzi o raczej cos takiego (napewno zle ale to przyklad (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )

  1. <?php
  2.  
  3. switch ($co)
  4. {
  5.  case 'producenci':
  6. {
  7.  $zapytanie = &#092;" 
  8. (WHERE id_producent=$stare SET id_producent=$nowe) OR
  9. (WHERE nazwa=$stare SET nazwa=$nowe) OR
  10. (WHERE www=$stare SET www=$nowe) OR
  11. (WHERE foto=$stare SET foto=$nowe)&#092;"; 
  12. }
  13.  breakl
  14.  
  15.  case 'cechy':
  16.  {
  17. $zapytanie =&#092;"
  18. (WHERE id_cn = $stare SET id_cn = $nowe) OR
  19. (WHERE nazwa_cechy = $stare SET nazwa_cechy = $nowe)&#092;";
  20.  }
  21.  break;
  22.  
  23.  case (....)
  24.  i tak dalej...
  25.  
  26. }
  27.  
  28.  
  29.  
  30. $sql = &#092;"UPDATE $co SET $zapytanie\";
  31.  
  32. ?>


mam nadzieje ze na tym przykladzie widac o co mi chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozdro
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: 10.10.2025 - 21:49