Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pobieranie url z bazy danych jak LIKE tylko odwrotnie
Forum PHP.pl > Forum > Przedszkole
Octobus
Mam baze danych z adresami sklepu internetowego i muszę pobierać adresy tak że jezeli adres który chce pobrać wyglada tak: sklep.pl/kategoria-3/produkt-2/index.php to musi mi pobrac:
a) rekord z dokladnie takim adresem (to mam)
b) jezeli nie ma takiego to, rekord z adresem ktory jest bardziej ogolny czyli rozne warianty az natrafi na ktorys (jezeli w ogole jest) czyli:
sklep.pl/kategoria-3/produkt-2/
sklep.pl/kategoria-3/
sklep.pl/
w tej dokładnie kolejności. Problem w tym ze adresy są do 3 sklepów a ja nie mam listy jak one wyglądają, podałem tylko przyklad. Gdyby odwrocic to o co sie pytam i to co chce dostac, wystarczyloby LIKE ale tutaj trzeba odwrotnie, pytanie tylko jak ... najlepiej jakby bylo to w jednym zapytaniu, bo polaczen do bazy danych bedzie naprawde duzo ...
in5ane
Zrób sobie właśnie z LIKE, np.:
  1. WHERE url LIKE 'sklep.pl%'
I w PHP bierz najdłuższy pobrany string.
Octobus
Bardzo fajne rozwiazanie, ale jezeli bede chcial pobrac rekord dla adresu
sklep.pl/kategoria-3/produkt-2/index.php
a najdluzszy bedzie
sklep.pl/kategoria-13/produkt-1312/index.php
to tez lipa, to bedzie ze zupelnie innej galezi adresu a musi byc z tej samej
in5ane
No to zrób to wszystko w PHP (nie chce mi się pisać w tym momencie dłuższego zapytania). Czyli tak, pobierasz wszystkie rekordy i robisz na niech each'a, instrukcje warunkową z preg'ami, np.
  1. preg_match_all('/sklep.pl\/kategoria-[0-9]\/produkt-[0-9](.*)/', $record['url'], $firstCheck);
  2. preg_match_all('/sklep.pl\/kategoria-[0-9](.*)/', $record['url'], $secondCheck);
  3. preg_match_all('/sklep.pl(.*)/', $record['url'], $thirdCheck);
  4. foreach ($records as $record)
  5. {
  6. if ($firstCheck || $secondCheck || $thirdCheck)
  7. {
  8. $foundLink = $record;
  9. }
  10. }
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.