Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql] Usunięcie danego elementu z tablicy
kaszanka
post 18.11.2008, 12:39:20
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


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)?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
pyro
post 18.11.2008, 12:55:31
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Dlaczego je wszystkie trzymasz w jednej kolumnie po przecinku, zamiast w kazdym wierszu kolejne adresy? Ułatw sobie życie...


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
piotrooo89
post 18.11.2008, 13:17:45
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




pyro ma 100% racji. po co komplikować sprawe? zrobisz sobie to lajtowo jak umiescisz kazdy ip w innej kolumnie.


--------------------
Go to the top of the page
+Quote Post
kaszanka
post 18.11.2008, 13:29:15
Post #4





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


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
Go to the top of the page
+Quote Post
piotrooo89
post 18.11.2008, 13:32:43
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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.


--------------------
Go to the top of the page
+Quote Post
kaszanka
post 18.11.2008, 13:43:15
Post #6





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


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'?

Ten post edytował kaszanka 18.11.2008, 13:45:21
Go to the top of the page
+Quote Post
nospor
post 18.11.2008, 13:44:35
Post #7





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




musisz stworzyc drugą tablice na IP i wiazac ją z pierwszą:

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

ip:
id_user | ip


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kaszanka
post 18.11.2008, 13:51:57
Post #8





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

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


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.
Go to the top of the page
+Quote Post
nospor
post 18.11.2008, 13:55:50
Post #9





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




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
pbierni
post 19.11.2008, 12:47:43
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 1
Dołączył: 30.06.2008

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


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
Go to the top of the page
+Quote Post

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 - 09:30