Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Usuwanie z bazy rekordów, wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
ewaslawek5
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ę !
-Amedos-
  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.
basstone
  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
melkorm
  1. DELETE FROM `tapety` WHERE `adres` REGEXP '^[0-9]'

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.