Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Wyszukiwarka - problem z wyciągnięciem części stringa
shpaque
post 22.10.2014, 09:55:05
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Witam, ja jak zwykle coś namieszam, ale wziąłem się w końcu za wyszukiwarkę (kiedyś trzeba), która oczywiście nie działa. Pomysłem moim było (nie wiem, czy dobrze), żeby dane do wyszukiwania czy filtrowania rekordów było w get - i mamy coś takiego w pasku adresu:
  1. http://www.eprzejazdy.pl/search.php?from=PL+P+Ostrzeszowski&to=CH++&day=WED


jest to pobierane oraz przemianowane pozniej skryptem:
  1. <?
  2. $1from = $_GET['from'];
  3. $1to = $_GET['to'];
  4. $1day = $_GET['day'];
  5.  
  6. list($1fromcountry, $1fromland, $1fromcity) = split(' ', $1from);
  7. list($1tocountry, $1toland, $1tocity) = split(' ', $1to);
  8.  
  9. if ($1fromcountry == 'PL') {$1fromcountry = 'Polska';}
  10. else if ($1fromcountry == 'DE') {$1fromcountry = 'Niemcy';}
  11. else if ($1fromcountry == 'BE') {$1fromcountry = 'Belgia';}
  12. else if ($1fromcountry == 'NL') {$1fromcountry = 'Holandia';}
  13. else if ($1fromcountry == 'DK') {$1fromcountry = 'Dania';}
  14. else if ($1fromcountry == 'CH') {$1fromcountry = 'Szwajcaria';}
  15.  
  16. if ($1tocountry == 'PL') {$1tocountry = 'Polska';}
  17. else if ($1tocountry == 'DE') {$1tocountry = 'Niemcy';}
  18. else if ($1tocountry == 'BE') {$1tocountry = 'Belgia';}
  19. else if ($1tocountry == 'NL') {$1tocountry = 'Holandia';}
  20. else if ($1tocountry == 'DK') {$1tocountry = 'Dania';}
  21. else if ($1tocountry == 'CH') {$1tocountry = 'Szwajcaria';}
  22.  
  23. if ($1fromland == 'D') {$1fromland = 'Dolnośląskie';}
  24. else if ($1fromland == 'C') {$1fromland = 'Kujawsko-Pomorskie';}
  25. else if ($1fromland == 'L') {$1fromland = 'Lubelskie';}
  26. else if ($1fromland == 'F') {$1fromland = 'Lubuskie';}
  27. else if ($1fromland == 'E') {$1fromland = 'Łódzkie';}
  28. else if ($1fromland == 'K') {$1fromland = 'Małopolskie';}
  29. else if ($1fromland == 'W') {$1fromland = 'Mazowieckie';}
  30. else if ($1fromland == 'O') {$1fromland = 'Opolskie';}
  31. else if ($1fromland == 'R') {$1fromland = 'Podkarpackie';}
  32. else if ($1fromland == 'B') {$1fromland = 'Podlaskie';}
  33. else if ($1fromland == 'G') {$1fromland = 'Pomorskie';}
  34. else if ($1fromland == 'S') {$1fromland = 'Śląskie';}
  35. else if ($1fromland == 'T') {$1fromland = 'Świętokrzyskie';}
  36. else if ($1fromland == 'N') {$1fromland = 'Warmińsko-Mazurskie';}
  37. else if ($1fromland == 'P') {$1fromland = 'Wielkopolskie';}
  38. else if ($1fromland == 'Z') {$1fromland = 'Zachodniopomorskie';}
  39.  
  40. if ($1toland == 'D') {$1toland = 'Dolnośląskie';}
  41. else if ($1toland == 'C') {$1toland = 'Kujawsko-Pomorskie';}
  42. else if ($1toland == 'L') {$1toland = 'Lubelskie';}
  43. else if ($1toland == 'F') {$1toland = 'Lubuskie';}
  44. else if ($1toland == 'E') {$1toland = 'Łódzkie';}
  45. else if ($1toland == 'K') {$1toland = 'Małopolskie';}
  46. else if ($1toland == 'W') {$1toland = 'Mazowieckie';}
  47. else if ($1toland == 'O') {$1toland = 'Opolskie';}
  48. else if ($1toland == 'R') {$1toland = 'Podkarpackie';}
  49. else if ($1toland == 'B') {$1toland = 'Podlaskie';}
  50. else if ($1toland == 'G') {$1toland = 'Pomorskie';}
  51. else if ($1toland == 'S') {$1toland = 'Śląskie';}
  52. else if ($1toland == 'T') {$1toland = 'Świętokrzyskie';}
  53. else if ($1toland == 'N') {$1toland = 'Warmińsko-Mazurskie';}
  54. else if ($1toland == 'P') {$1toland = 'Wielkopolskie';}
  55. else if ($1toland == 'Z') {$1toland = 'Zachodniopomorskie';}
  56.  
  57. if ($1day == 'MON') {$1day = 'poniedziałek';}
  58. else if ($1day == 'TUE') {$1day = 'wtorek';}
  59. else if ($1day == 'WED') {$1day = 'środa';}
  60. else if ($1day == 'THU') {$1day = 'czwartek';}
  61. else if ($1day == 'FRI') {$1day = 'piątek';}
  62. else if ($1day == 'SAT') {$1day = 'sobota';}
  63. else if ($1day == 'SUN') {$1day = 'niedziela';}
  64. ...


natomiast plik ma zapisane rekordy w postaci stringów np "poniedziałek,wtorek,środa,czwartek..." - i tak dalej. Jak teraz zrobić, żeby pokazało mi jedynie rekord w którym wszystkie warunki z GETa są spełnione - bo stanałem na czyms takim i nie wime co dalej:

  1. $i = 0;
  2. $database = './db/users.db';
  3. $items = file($database);
  4.  
  5. foreach($items as $line)
  6. {
  7. list($logtime, $firma, $photo, $folder, $email, $www, $phone, $phone2, $nip, $kraje, $zpolski, $dopolski, $D, $C, $L, $F, $E, $K, $W, $O, $R, $B, $G, $S, $T, $N, $P, $Z, $advertising, $score) = explode('|', trim($line));
  8.  
  9. $logtimes[$i] = $logtime;
  10. $firmas[$i] = $firma;
  11. $photos[$i] = $photo;
  12. $folders[$i] = $folder;
  13. $emails[$i] = $email;
  14. $wwws[$i] = $www;
  15. $phones[$i] = $phone;
  16. $phone2s[$i] = $phone2;
  17. $nips[$i] = $nip;
  18. $krajes[$i] = $kraje;
  19. $zpolskis[$i] = $zpolski;
  20. $dopolskis[$i] = $dopolski;
  21. $Ds[$i] = $D;
  22. $Cs[$i] = $C;
  23. $Ls[$i] = $L;
  24. $Fs[$i] = $F;
  25. $Es[$i] = $E;
  26. $Ks[$i] = $K;
  27. $Ws[$i] = $W;
  28. $Os[$i] = $O;
  29. $Rs[$i] = $R;
  30. $Bs[$i] = $B;
  31. $Gs[$i] = $G;
  32. $Ss[$i] = $S;
  33. $Ts[$i] = $T;
  34. $Ns[$i] = $N;
  35. $Ps[$i] = $P;
  36. $Zs[$i] = $Z;
  37. $advertisings[$i] = $advertising;
  38. $scores[$i] = $score;
  39.  
  40. if (($1fromcountry == $kraje) || ($1tocountry == $kraje))


nie mogę porównać jak powyżej, bo i tak zwróci false bo to cały string - jak to zrobic jakoś sprawnie?
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post 22.10.2014, 10:04:45
Post #2





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




Troszke nie na temat, ale nie mogę na to patrzec:
To Twój pomysł by baze robić na plikach a nie normalnie na bazie, czy może klient się upierał że tak ma być a Ty nie miałeś nic do gadania w tej kwestii?


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

"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
shpaque
post 22.10.2014, 10:17:47
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


po pierwsze klient chce miec lokalna w plikach baze, po drugie nie mam czasu nauczyc sie mysql'a
Go to the top of the page
+Quote Post
Turson
post 22.10.2014, 10:23:47
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Brać się za zlecenia nie znając PHP ani MySQL. Brawo. To przykład antyprogramowania.
Go to the top of the page
+Quote Post
nospor
post 22.10.2014, 10:36:00
Post #5





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




Ze strony którą robisz:
Cytat
ePrzejazdy.pl, to najnowocześniejsza wyszukiwarka busów oraz przejazdów pomiędzy Polską, Niemcami, Belgią, Holandią, Danią i
Szwajcarią (staramy się rozszerzać bazę danych o nowe firmy przewozowe jeżdżące w inne miejsca Europy).
Szybka rozbudowa bazy danych o kolejnych Przewoźników, pozwala nam być zawsze na pierwszym miejscu wśród wyszukiwarek
przejazdów w ww. krajach europejskich. Zachęcamy do bezpłatnego korzystania z niej oraz częste odwiedziny - u nas zawsze coś się dzieje!

Do najnowoczesniejszej jej daleko z takim kodem. I tak, na pewno zawsze coś tam będzie się działo - problem na problemie.

Dobra, nie ma co walic tu Offtopa. Powodzenia w realizacji. Pozostaje mieć tylko na dzieję, że inwestor eprzejazdy wie, ze firma, ktora robi jego zlecenie dopiero zaczyna zabawe z programowaniem a co za tym idzie dostał 90% rabatu na tworzone dzielo.


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

"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
shpaque
post 22.10.2014, 10:57:49
Post #6





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


nospor - pomijając Twoją personalną niechęć do mnie, zauważ, że coraz mniej pomagasz, a coraz więcej drwisz...

więc pomijając również błędy w kodowaniu zapytam po pierwsze:

jak zrobić wyrażenie:

"jeżeli $fromcountry1 lub $tocountry1 przyjmie wartość "Polska", wtedy sprawdz jakie wojewodztwo przyjmie zmienna $fromland1 lub $toland1. Policz ile rekordów ma to wojewodztwo i następnie sprawdz powiat z GETa - czyli $fromcity1 lub $tocity1 - sprawdz ile z rekordów ma ten powiat w swoim wpisie"

jak zrobić to co powyzej?
Go to the top of the page
+Quote Post
nospor
post 22.10.2014, 11:01:20
Post #7





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




Nie mam do Ciebie personalnej niechęci.
Mam niechęc do osób, które biorą się za kasę za robote, nie mając o niej pojęcia i pewnie nawet nie informując o tym inwestora.

Tyle ode mnie w temacie. Jak pisalem: powodzenia w realizacji.



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

"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
shpaque
post 22.10.2014, 11:07:37
Post #8





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


ja tez nie jestem w wieku studenckim, zeby isc na polibude uczyc sie informatyki przez 10 lat zeby pozniej zarobic pierwsze 100 zl - ucze sie na biezaco - chocby robiac strony www - wyszukiwarki nigdy nie robilem - to moja pierwsza -stad tyle bledow ale wiem ze jak dojde do konca - bedzie dzialac dobrze - tylko potrzebuje dla odmiany kogos kto jeszcze potrafi na tym forum pomagac...

Go to the top of the page
+Quote Post
kreatiff
post 22.10.2014, 11:50:45
Post #9





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Jak wygląda $kraje? kraj1,kraj2,kraj3... ?

Serio, nie idź tą droga.
Jak nie MySQL czy inna baza wymagająca serwera, to SQLite, którego jestem fanem. 1 plik, bez całego know-how z użytkownikami, uprawnieniami, itp. A na to PDO do obsługi. I życie staje się prostrze.

nospor potrafi dopiec, ale w kwestii sugestii jak co rozwiązać to się go słucham i warto to robić. Bo jest ode mnie w PHP o kilka lat doświadczenia mądrzejszy, a staram się słuchać tych mądrzejszych od siebie.
Go to the top of the page
+Quote Post
shpaque
post 22.10.2014, 11:54:57
Post #10





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


no właśnie $kraje mam w stringu,np: "Polska,Niemcy,Belgia" trzeba zeby wychwycił, czy ktores z tych jest uzyte... to na poczatek
Go to the top of the page
+Quote Post
kreatiff
post 22.10.2014, 12:41:05
Post #11





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Albo trzeba $kraje dalej rozbić na tablicę i potem szukać kraju za pomocą in_array, albo sprawdzić czy kraj występuje w ciągu za pomocą strpos.
Z strpos trzeba zachować większą ostrożność, bo jak jakiś kraj będzie miał dwuczłonową nazwę, a inny jednoczłonową, zawierająca się w tym pierwszym, to można się sparzyć.

Ten post edytował kreatiff 22.10.2014, 12:45:40
Go to the top of the page
+Quote Post
shpaque
post 23.10.2014, 09:16:04
Post #12





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


czyli teoretycznie coś takiego powinno się sprawdzić?

  1. $find_country_from = strpos($kraje, $fromcountry1);
  2. $find_country_to = strpos($kraje, $tocountry1);
  3. $find_day = strpos($zpolski, $dopolski, $day1);
  4. $find_land_from = strpos($".$fromland1.", $fromland1);
  5. $find_land_to = strpos($".$toland1.", $toland1);
  6. $find_city_from = strpos($".$toland1.", $fromcity1);
  7. $find_city_to = strpos($".$toland1.", $tocity1);
  8.  
  9. if ($find_country_from = TRUE)
  10. {
  11. if ($find_country_to = TRUE)
  12. {
  13. if ($find_day = TRUE)
  14. {
  15. if ($fromcountry1 == "Polska")
  16. {
  17. if (!empty $".$fromland1.")
  18. {
  19. if ($find_city_from == TRUE)
  20. {
  21. $kodindex = $count;
  22. }
  23. }
  24. }
  25. else if ($tocountry1 == "Polska")
  26. {
  27. if (!empty $".$toland.")
  28. {
  29. if ($find_city_to == TRUE)
  30. {
  31. $kodindex = $count;
  32. }
  33. }
  34. }
  35. else
  36. {
  37. $kodindex = $count;
  38. }
  39. }
  40. }
  41. }
  42. $count++;
Go to the top of the page
+Quote Post
nospor
post 23.10.2014, 09:33:53
Post #13





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




Tyle razy ci juz mowilem
= - przypisanie
== - porownanie
Naprawde trzeba isc na studia by to zrozumiec i zapamietac?


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

"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
shpaque
post 23.10.2014, 09:38:56
Post #14





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


@edit

jeszcze tak na marginesie - jak zrobić, żeby zadziałało przyposanie zmiennej ze zmiennej, czyli żeby to:
  1. $".$toland1."
lub to (tez nie działa)
  1. $$toland1
dało mi np:

$toland1 ma powiedzmy wartość "G", a chcę z tego zrobić $G

Cytat(nospor @ 23.10.2014, 10:33:53 ) *
Tyle razy ci juz mowilem
= - przypisanie
== - porownanie
Naprawde trzeba isc na studia by to zrozumiec i zapamietac?


no dobrze, ale to chyba dobrze ze przy TRUE jest porownanie? czy tam wyzej przy strlen tez ma byc?
Go to the top of the page
+Quote Post
nospor
post 23.10.2014, 09:45:52
Post #15





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




facepalmxd.gif
Ja mowie o tym
if ($find_country_from = TRUE)


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

"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
shpaque
post 23.10.2014, 09:58:40
Post #16





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


ach no dobra - to już zauważyłem i poprawiłem - bo pisałem kod tutaj na szybko...

a co z tą zmienną w zmiennej?
Go to the top of the page
+Quote Post
nospor
post 23.10.2014, 10:23:36
Post #17





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




  1. $G = 'To jest zawartosc zmiennej $G';
  2. $zm = 'G';
  3. echo $$zm;
  4.  

Jak widac dziala


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

"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
shpaque
post 23.10.2014, 11:24:56
Post #18





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


ok to teraz - czemu to nie działa? czyli czemu nie wyklucza a wyswietla mi pozniej wszystko co jest w pliku? (mam 4 przewoznikow i wszystkich wyswietla)

  1. $find_country_from = strpos($kraje, $fromcountry1);
  2. $find_country_to = strpos($kraje, $tocountry1);
  3. $find_day = strpos($zpolski, $dopolski, $day1);
  4. $find_city_from = strpos($$toland1, $fromcity1);
  5. $find_city_to = strpos($$toland1, $tocity1);
  6.  
  7. if ($find_country_from !== false)
  8. {
  9. if ($find_country_to !== false)
  10. {
  11. if ($find_day !== false)
  12. {
  13. if ($fromcountry1 == "Polska")
  14. {
  15. if (!empty($$fromland1))
  16. {
  17. if ($find_city_from !== false)
  18. {
  19. $kodindex = $count;
  20. }
  21. }
  22. }
  23. else if ($tocountry1 == "Polska")
  24. {
  25. if (!empty($$toland1))
  26. {
  27. if ($find_city_to !== false)
  28. {
  29. $kodindex = $count;
  30. }
  31. }
  32. }
  33. else
  34. {
  35. $kodindex = $count;
  36. }
  37. }
  38. }
  39. }
  40. $count++;
  41. }
  42.  
  43. array_multisort ($logtimes, $firmas, $photos, $folders, $emails, $wwws, $phones, $phone2s, $nips, $krajes, $zpolskis, $dopolskis, $Ds, $Cs, $Ls, $Fs, $Es, $Ks, $Ws, $Os, $Rs, $Bs, $Gs, $Ss, $Ts, $Ns, $Ps, $Zs, $advertisings, $scores, SORT_ASC);
  44.  
  45. echo "<table width='798px' cellspacing='1px' cellpadding='5px' border='0px'>\n";
  46. for ($i = $count - 1; $i >= 0; $i--)
  47. {
  48. if ($advertisings[$i] == "w") {$tabela = "tabela-gold";} else {$tabela = "tabela";}
  49.  
  50. echo "<tr id=$tabela onclick=\"window.location.href='./profile.php?id=".$folders[$i]."'\" style='cursor:pointer' title='Zobacz profil firmy...'>\n";
  51. echo "<td><img src=./db/images/" . $photos[$i] . " height='50px' width='50px' border='0px'></td>\n";
  52. echo "<td>".$firmas[$i]."</td>\n";
  53. echo "<td>".$emails[$i]."</td>\n";
  54. echo "<td>".$phones[$i]."</td>\n";
  55. echo "</tr>\n";
  56. }
  57. echo "</table>\n";
  58. ?>
Go to the top of the page
+Quote Post
nospor
post 23.10.2014, 11:30:31
Post #19





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




for ($i = $count - 1; $i >= 0; $i--)
Lecisz forem po wszystkim, to sie nie dziw, ze wszystko sie wyswietla...


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

"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
shpaque
post 23.10.2014, 11:57:23
Post #20





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


nic się nie zmienia:

1. czy $i ma być jakoś szczególnie wcześniej zdefiniowane?
2. nie działa mi również multisort
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Closed 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 - 03:25