Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Usuwanie z bazy rekordów, wyrażenia regularne
ewaslawek5
post 23.02.2012, 06:36:36
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 5.11.2007

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


Witam,

Proszę mnie naprowadzić posiadam tabelę "tapety" o dwóch kolumnach 'id' i 'adres':

Chciałbym usunąć te rekordy które w kolumnie 'adres' nie mają żadnej cyfry.

Zwykle żeby usunąć piszemy:
  1. $zapytanie = "DELETE FROM tapety WHERE id=cos_tam;";
  2. $r = mysql_query ($zapytanie); //WYKONANIE ZAPYTANIA


Struktura danych w kolumnie 'adres' jest następująca: 123456_nazwazdjecia.jpg

A co trzeba napisać żeby osiągnąć to o co proszę ?

PS. Jestem słaby z wyrażeń regularnych, z góry dziękuję !

Ten post edytował ewaslawek5 23.02.2012, 06:55:10


--------------------
Dobro popłaca - zawsze !
Go to the top of the page
+Quote Post
--Amedos--
post 23.02.2012, 08:11:40
Post #2





Goście







  1. $zapytanie = "DELETE FROM tapety WHERE id=cos_tam;";
  2.  
  3. $r = mysql_query ($zapytanie); //WYKONANIE ZAPYTANIA

Kolumna ID powinna być wypełniona polem auto_increment (jakos tak ) i być kluczem podstawowym. Czyli będzie dodawać "1" do każdego nowego rekordu automatycznie.
Musisz zrobić system sprawdzania czy znajduje się liczba w polu adres,potem za pomocą IF usuwasz lub zostawiasz.
Nie jestem pewien czy dobrze napisałem.
Go to the top of the page
+Quote Post
basstone
post 24.02.2012, 00:27:17
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 6
Dołączył: 20.12.2011

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


  1. $zapytanie = "SELECT * FROM `tapety`"; //pobieramy wszystkie id i adresy
  2. $idzapytania = mysql_query($zapytanie);
  3.  
  4. while($wynik = mysql_fetch_assoc($idzapytania)) { // przeglądamy je w pętli
  5.  
  6. if(!preg_match('/^[0-9]+\_[a-zA-Z0-9]+\.[a-z]+$/D', $wynik['adres'])) { // jeżeli adres nie pasuje do wyrażenia
  7. $zapytanie2 = "DELETE FROM `tapety` WHERE `id` = '".$wynik['id']."'"; // usuwamy go
  8. $idzapytania2 = mysql_query($zapytanie2);
  9. }
  10.  
  11. }


Do tego wyrażenia regularnego będą pasowały adres:
123456_nazwa.jpg
1_jakasnazwa.gif
234_jakas231nazwa.jpg

A nie będą pasować (czyli taki usunie):
nazwa.jpg
123_nazwa.JPG
_costam.jpg
_costamjpg
_costam.

Krok po kroku wyrażenie regularne spowoduje, że usuniesz wpisy które nie pasują do wzorca:
1. [0-9]+ - mają 1 lub więcej znaków z przedziału 0 - 9
2. \_ - po czym występuje znak _
3. [a-zA-Z0-9]+ - po czym występuje 1 lub więcej znaków z przedziału a-z, A-Z, 0-9
4. \. - po czym występuje znak .
5. [a-z]+ - po czym występuje 1 lub więcej znaków z przedziału a-z

Ten post edytował basstone 24.02.2012, 01:28:10
Go to the top of the page
+Quote Post
melkorm
post 24.02.2012, 04:17:39
Post #4





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


  1. DELETE FROM `tapety` WHERE `adres` REGEXP '^[0-9]'



--------------------
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: 10.07.2025 - 05:19