Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Operacje na tabliacach + MySQL, Pytanie o poprawność kodu
-lukasamd-
post
Post #1





Goście







Witam,
mam kod, który spełnia swoje zadanie, jednak nie jestem pewien, czy oby na pewno jest do końca poprawny i optymalny.

W bazie danych w tabeli z użytkownikami mam tekstowe pole user_ulubione, zawierające informacje o ulubionych grach użytkownika (id łączone kropką np. 1.5.21.32). Operacja kodu sprowadza się do usunięcia jednej z gry, dla testu przyjąłem id usera 1 i id gry 1.

Najpierw pobieram wartości z bazy, następnie tworzę z nich tablicę dzieląc wartości znakiem kropki.
Później szukam w tabeli określonej wartości (id gry), w wyniku otrzymuję klucz.
Usuwam z tabeli wartość o podanym kluczu.
Sortuję tablicę wg. wartości.
Tworzę zmienną typu string, do której wrzucam pierwszy element tablicy a zarazem usuwam go z niej.
W pętli while doklejam do zmiennej pozostałe wartości i znaki kropek je oddzielające.
Uaktualniam pole w bazie danych.


  1. <?php
  2. $user_id = 1;
  3.  $gra_id = 1;
  4.  
  5.  $ulubione = mysql_fetch_array(mysql_query("SELECT user_ulubione FROM ".DB_USERS." WHERE user_id = '".$user_id."'"));
  6.  $ulubione = explode('.' , $ulubione['user_ulubione']);
  7.  
  8.  $id = array_search($gra_id, $ulubione);
  9.  unset($ulubione[$id]);
  10.  asort($ulubione);
  11.  
  12.  $nowa = array_shift($ulubione);
  13.  while($krok = array_shift($ulubione)) {
  14.    $nowa .= '.'.$krok;
  15.  }
  16.  
  17.  mysql_query("UPDATE ".DB_USERS." SET user_ulubione = '".$nowa."' WHERE user_id = '".$user_id."'");
  18. ?>



Czy dobrze to zrobiłem, czy da się lepiej? Zależy mi na wydajności, sposób zapisywania informacji o ulubionych w bazie musi pozostać taki jaki jest.
Go to the top of the page
+Quote Post

Posty w temacie
- lukasamd   Operacje na tabliacach + MySQL   23.06.2009, 11:16:03
- - blooregard   Ja bym to rozdzielił: tabela 'Ulubione', ...   23.06.2009, 11:23:59
- - lukasamd   Tyle raczej nie będzie, max. 100? Oprócz doda...   23.06.2009, 11:33:18
- - trionet   Ja bym wybrał więcej zapytań. Podział na kilka tab...   23.06.2009, 11:59:25
- - lukasamd   W sumie już zauważyłem, że mogę dodać np. datę kie...   23.06.2009, 13:13:29
- - blooregard   No i o to chodziło.   23.06.2009, 19:41:29


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: 25.08.2025 - 01:36