Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] "Niezwykły" update mysql, niezwykły - tzn nie taki standardowy :-)
mefjiu
post 20.03.2009, 23:24:24
Post #1





Grupa: Zarejestrowani
Postów: 313
Pomógł: 5
Dołączył: 22.03.2005

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


Witam, mam dwie funkcje, jedna do dodawania lokalizacji druga do kasowania lokalizacji.

Lokalizacja - jest to liczba. a tabela w której jest to umieszczone to "text" i wartość wygląda np tak 1,3,6,12,33,4 - czyli oddzielone przecinkiem.

Aby pokazać jak najepiej problem przedstawię na początku funkcję do dodawania lokalizacji:
  1. <?php
  2. function add_location($array){
  3.        $id_site = $array['site'];
  4.        $location = $array['location'];
  5.  
  6.        $sql ="    UPDATE ".DB_PREFIX."site
  7.                SET id_location=IF(id_location='','$location', CONCAT(id_location,',$location'))
  8.                WHERE id='$id_site'
  9.                AND NOT FIND_IN_SET('$location', id_location)";
  10.        $res =& $this->_db->query($sql);
  11.    }
  12. ?>


Zapytanie sprawdza czy dany rekord istnieje, jeżeli nie istnieje to dodaje po przecinku.

A teraz potrzebuję funkcję która będzie usuwać daną lokalizację z bazy danych.

Aktualnie mam to rozwiązane na zasadzie:

  1. <?php
  2. function remove_location($array){
  3.        $id_site = $array['site'];
  4.        $location = $array['location'];
  5.        
  6.    $sql ="SELECT id_location FROM ".DB_PREFIX."site WHERE id = '$id_site' ";
  7.                $res =& $this->_db->query($sql);
  8.                $row = $res->fetchRow(MDB2_FETCHMODE_ASSOC);
  9.    
  10.        $id_array = explode(',',$row['id_location']);
  11.        $kay_delete = array_search($location,  $id_array);
  12.        unset($id_array[$kay_delete]);
  13.        
  14.        foreach ($id_array as $id){
  15.            $id_sql .= $id.",";
  16.        }
  17.        $id_sql = substr($id_sql,0,-1);
  18.        
  19.        $sql ="    UPDATE ".DB_PREFIX."site
  20.                SET id_location='$id_sql'
  21.                WHERE id='$id_site'";
  22.        $res =& $this->_db->query($sql);
  23.    }
  24. ?>


Czyli najpierw pobieram dane na temat lokalizacji następnie obrabiam dane i dopiero robię update.


Czy jest możliwość jakoś to poprawić tzn na takim samym rozwiązaniu jak przy dodawaniu aby nie używać funkcji php a wszystko zrobić po stronie mysql ?

Ten post edytował mefjiu 21.03.2009, 00:12:01
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 16:34