Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Usunięcie danego elementu z tablicy
Forum PHP.pl > Forum > Przedszkole
kaszanka
Hi,

Mam w bazie mysql kolumnę 'dane' w które znajdują się adresy IP w postaci:
1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4
czyli każdy adres oddzielony przecinkiem

Wyciągam je z bazy:
  1. <?php
  2. $ip_dane = explode(",", $row[dane]);
  3. $ile_dane = count($ip_dane);
  4.  
  5. for($i=0; $i<$ile_dane; $i++){ echo "$ip_dane[$i]<BR>"; } // i listujemy wszystkie IP.
  6. ?>


I teraz problemu z dodaniem nowego IP do bazy nie mam problemu, tylko jak zrobić usunięcie danego IP który będzie w zmiennej $del_ip z tej wyżej listy (z bazy)?
pyro
Dlaczego je wszystkie trzymasz w jednej kolumnie po przecinku, zamiast w kazdym wierszu kolejne adresy? Ułatw sobie życie...
piotrooo89
pyro ma 100% racji. po co komplikować sprawe? zrobisz sobie to lajtowo jak umiescisz kazdy ip w innej kolumnie.
kaszanka
Zrobiłbym tak oczywiście tylko problem w tym, że już na początku tworzenia skryptu i bazy danych utrudniłem sobie życie gdyż są tam również inne kolumny i nie widzę obecnie możliwości umieszcza każdy adres w oddzielnej kolumnie sad.gif
piotrooo89
my nie mówimy o kolumnach tylko wierszach. kolumny robisz takie:

id | adres_ip

i wpisujesz:

1 | 1111.1111.1111.1111
2 | 2222.2222.2222.2222

i pozniej oddwołujesz się do adresu za pomoca unikatowego id i kasujesz edytujesz etc.
kaszanka
Bo nie wiem czy dobrze rozumiem winksmiley.jpg

tabela wygląda tak:
id | user | wiek | data | rodzaj | styl | ilosc | dane
dane - nowa kolumna z adresami ip

i każdy wiersz zawiera innego usera, wiec skoro każdy ip mam zapisać w osobnym wierszu to musiałbym dublować każdego usera tyle razy i mam adresów ip w 'dane'?
nospor
musisz stworzyc drugą tablice na IP i wiazac ją z pierwszą:

user:
id | user | wiek | data | rodzaj | styl | ilosc

ip:
id_user | ip
kaszanka
Na prawdę nie da się tego zrobić jak przedstawiłem w pierwszym poście?
Wyciągam adresy i listu je za pomocą 'for' a może jest możliwość by jakoś przy wyciągnięciu tych adresów za pomocą for porównać który jest do usunięcia i bez tego zapisuje w bazie.

Każdy user będzie miał maksymalnie 5 ip i ten który ma zostać usunięty będzie istniał w danym użytkowniku, a nie że szukał czy w ogóle taki jest.
nospor
oczywiscie ze mozna

Iterujesz jak do tej pory, tylko sprawdzasz czy ip zgadza się z twoim do usuniecia. Jak tak to usuwasz z tablicy - unset().
Nastepnie robisz implode() na zmodyfikowanej tablicy - otrzymasz ip oddzielone przecinkiem - i ten ciag ip wpisujesz spowrotem do bazy - update
pbierni
Witam

Rozwiązanie problemu za pomocą dodatkowej tabeli na IP jak zaproponował nospor jest bardziej eleganckie i będzie działało szybciej niż niepotrzebny kod w php.

Pozdrawiam
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.