Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inne][PHP]Problem z zapytaniem - CI
jacobson
post
Post #1





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


Witam, mam taki problem... mam w bazie artykuly... kazdy z nich ma swoj numer id (1,2,3,4.....) teraz na stronie admina wszystkie te artykuly sa wypisywane jeden pod drugim... (taka obsluga artykulow) dodalem do nich strzalki do gory i do dolu zeby mozna bylo zmieniac id (bo to od id zalezy pozycja, wedlug id jest sortowane).
Pracuje w CI i zrobilem to tak, ze strzalka do gory i do dolu wywoluja ta sama metode w kontrolerze, z dodatkowym segmentem w URL (localhost/zmiana_id/2-1) gdzie 2 to id elementu zmienianego a 1 to id elementu na ktory ma byc zmieniony (zrobilem tak zeby nie tworzyc 2 metod zmiana_id_w_gore i zmiana_id_w_dol)... wszystko dziala poprawnie tzn jezeli chodzi o przekazanie zmiennych az dochodzi do modelu

  1. function change_id($data){
  2. $temp = explode('-', $data);
  3. $update_data = array('id' => $temp[0]);
  4. $q = $this->db->where('id', $temp[1])->update('site_content', $update_data);
  5. $update_data = array('id' => $temp[1]);
  6. $q = $this->db->where('id', $temp[0])->update('site_content', $update_data);
  7. }


W tym przypadku $temp[0] to jest 2 a $temp[1] to 1.

nie wiem co nie gra w tym zapytaniu poniewaz w efekcie zmieniaja sie wszystkie id dopoki nie bedzie samych 1 albo samych najwyzszych id...
z gory dziekuje za pomoc,
pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czemu nie zastanowisz się chwilkę nad tym czymś co napisałeś, tak krok po kroku co to robi...

2 - ten element zmieniamy
1 - na ten zmieniamy


No i lecim z Twoim kodem:
Stan przed odpaleniem kodu:
rekord o id 2 ma id 2
rekord o id 1 ma id 1

Odpalamy Twoj kod:
$update_data = array('id' => $temp[0]);
$q = $this->db->where('id', $temp[1])->update('site_content', $update_data);

Rekord o id 2 ma id 2
Rekord o id 1 ma id 2

Dalszy kod:
$update_data = array('id' => $temp[1]);
$q = $this->db->where('id', $temp[0])->update('site_content', $update_data);

Rekord o id 2 ma id 1
Rekord o id 1 ma id 1

Totalna bzdura. Patrz co robisz, myśl troszkę.

Kolejna sprawa:
ID to ID. ID nie ma prawa służyć jako pole do sortowania. Chcesz mieć pole do sortowania to utwórz nowe pole w tabeli.
Go to the top of the page
+Quote Post
jacobson
post
Post #3





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


hmmm no w sumie racja ... a w jaki sposob moge to zrobic "jednoczesnie" bo wtedy powinno zadzialac poprawnie... to id to przyklad...

ok, poradzilem sobie z tym problemem, zmienilem troche konstrukcje moze nie ladnie wyglada ale dziala (IMG:style_emoticons/default/tongue.gif)

  1. function change_id($data){
  2. $temp = explode('-', $data);
  3. $q = $this->db->select('id')->where('name', $temp[0])->get('site_content');
  4. $id;
  5. foreach($q->result() as $row){
  6. $id = $row->id;
  7. }
  8. $update_data = array('id' => $id);
  9. $this->db->where('id', $temp[1])->update('site_content', $update_data);
  10. $update_data = array('id' => $temp[1]);
  11. $this->db->where('name', $temp[0])->update('site_content', $update_data);
  12. }


Ten post edytował jacobson 8.08.2011, 09:49:39
Go to the top of the page
+Quote Post

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: 24.08.2025 - 10:21