Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]Problem z zapytaniem - CI
Forum PHP.pl > Forum > Przedszkole
jacobson
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
nospor
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.
jacobson
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 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. }
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.