Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwarka - problem z polskimi znakami w czasie szukania
airgucio
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Witajcie

Mam problem z polskimi znakami a mianowicie, po wpisaniu w pole wyszukiwarki np:węgiel nie pokazuje mi wyników tylko komunikat : Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in search.php on line 47, ale jeśli wpiszę wegiel to wyniki wyskakują , i nie wiem co zrobić by działały polskie znaki. Tabela w bazie SQL jest na UTF8-polish_ci.

A tutaj kod
  1. <p><b>Wyszukiwarka:</b>
  2. <form action="../@partner/search.php" method="post" target="foo" onSubmit="window.open('', 'foo', 'width=500,height=500,status=yes,resizable=yes,scrollbars=yes') ">
  3. Wpisz szukany tekst: <input type="text" name="phrase" />
  4. <input type="submit" value="Szukaj" />
  5. </form>


a tutaj php:
  1. <style>
  2. body {
  3. font-family: "Tahoma";
  4. font-size: 14px;
  5. margin:15px;
  6. background: #f4f4f4;
  7. background-position: top center;
  8. }
  9.  
  10. </style>
  11.  
  12. <?php
  13. // program wyszukiwarki - search.php
  14. // wyświetlenie nagłówka
  15. echo'<h2>Wyniki wyszukiwania</h2>';
  16. // usunięcie niepotrzebnych białych znaków
  17. $_POST['phrase']=trim($_POST['phrase']);
  18. // sprawdzenie, czy użytkownik wpisał dane
  19. if(empty($_POST['phrase']))
  20. // jeśli nie, to wyświetl komunikat i zakończ działanie skryptu
  21. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  22. // jeśli jednak dane są wpisane poprawnie
  23. else
  24. {
  25. // połączenie z bazą danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH!
  26. $base=mysqli_connect('localhost','xxxxx','xxxxx','xxxxxl');
  27. mysqli_query($base, "SET NAMES utf8");
  28. mysqli_query($base, "SET CHARACTER SET utf8");
  29. mysqli_query($base, "SET collation_connection = utf8_polish_ci");
  30.  
  31.  
  32.  
  33. // skonstruowanie zapytania
  34. // zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ciąg w bazie danych
  35. // jak zapewne zauważyłeś, przed frazą i po niej umieszczam znaki procenta %
  36. // ten znak symbolizuje dowolny inny ciąg znaków, więc jest niezbędny do skutecznego wyszukiwania
  37. // połaczenie operatorem Or pozwala na wyszukiwanie danego ciągu zarówno w nazwie, jak i opisie produktu
  38. // UWAGA! Tutaj też nie zapomnij ustawić swoich danych!
  39. $query="Select * FROM firma WHERE telefon Like '%{$_POST['phrase']}%' Or firma Like '%{$_POST['phrase']}%' Or miejscowosc Like '%{$_POST['phrase']}%'
  40. Or asortyment Like '%{$_POST['phrase']}%' ";
  41.  
  42.  
  43.  
  44. // wysłanie zapytania do bazy danych
  45. $result=mysqli_query($base,$query);
  46.  
  47. // ustalenie ilości wyszukanych obiektów
  48. $obAmount=mysqli_num_rows($result);
  49. // wyswietlenie ilości wyszukanych obiektów
  50. echo'Znaleziono: '.$obAmount.'<br /><br />';
  51. // wyświetlenie wyników w pętli
  52. for($x=0;$x<$obAmount;$x++)
  53. {
  54. // przekształcenie danych na tablicę
  55. $row=mysqli_fetch_assoc($result);
  56.  
  57. // wyświetlenie numeru identyfikacyjnego
  58. echo $x+1;
  59. echo '. ';
  60. // wyświetlenie nazwy produktu
  61.  
  62.  
  63.  
  64.  
  65.  
  66. echo('<p><br />Nazwa firmy: '.$row['firma'].' <br> Telefon: '.$row['telefon'].' <br> Ulica: '.$row['ulica'].'<br> Miasto: '.$row['miejscowosc'].'<br> Asortyment: '.$row['asortyment'].' <br> Umowa do : '.$row['umowa_do'].'</br>');
  67. echo("<br/>");
  68. echo("<hr>");
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77. echo'<br />';
  78. }
  79. }
  80. // zamknięcie połączenia
  81. mysqli_close($base);
  82. // koniec aplikacji
  83. ?>


Wcześniej jak szukałem jakiś fraz i wpisałem wyszukiwarce np : wegiel to jak otwierała mi sie nowa strona i miałem kilka rzcezy np: asortyment, ulica itp to były krzaczki jeśli pobierał wyniki z bazy ale jak dodałem:
  1. mysqli_query($base, "SET NAMES utf8");
  2. mysqli_query($base, "SET CHARACTER SET utf8");
  3. mysqli_query($base, "SET collation_connection = utf8_polish_ci");

to w wynikach pokazuje polskie znaki , jedynie w wyszukiwarce jak wpisuej polskie to nie działa i wyskakuje komunikat który napisałem wcześniej (Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in search.php on line 47,).Wiem że to chodzi o kodowanie ale już mi się pomysły wyczerpały sad.gif POMOCY

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 19)
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


to nie ma żadnego związku z polskimi znakami
  1. $obAmount=mysqli_num_rows($result);
się nie możne wykonać musisz sprawdzić czy nie masz błędów wrzuć po $result=mysqli_query($base,$query);
  1. if (!$result) {
  2. die(mysqli_error($link));
  3. }


i sprawdź czy nie ma błędu wink.gif
Go to the top of the page
+Quote Post
airgucio
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Oki rozumiem czyli mam:

  1. $result=mysqli_query($base,$query);
  2. if (!$result) {
  3. die(mysqli_error($link));
  4. }


tylko ja nie mam u siebie $linkt u mnei to jest base ? czyli tak

  1.  
  2. $result=mysqli_query($base,$query);
  3. if (!$result) {
  4. die(mysqli_error($base));
  5. }


Teraz działa i pokazuje mi 0 wyników, ale w bazie w asortymencie jest węgiel z polskimi znakami i go nie pokazuje , co z tym fantem zrobić ?

Ten post edytował airgucio 25.09.2013, 20:31:15
Go to the top of the page
+Quote Post
com
post
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


a znajduje wgl jakaś frazę ? bo być może masz źle sformułowane zapytanie smile.gif
Go to the top of the page
+Quote Post
airgucio
post
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Tak mam dwie firmy jedna w asortymencie ma wegiel bez polskich znaków a druga węgiel z polskimi znakami , jak dam wyszukaj wegiel to znajduje a jak z polskimi nie . Dodatkowo widzę że w bazie danych jest węgiel z polskimi znakami.

a może dac cos takiego : $query = "SELECT * FROM firma WHERE MATCH (telefon, firma, miejscowosc, asortyment) AGAINST
('$phrase')";

Ten post edytował airgucio 25.09.2013, 20:52:10
Go to the top of the page
+Quote Post
Turson
post
Post #6





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

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


Wpisz ten "węgiel" i zobacz co $_POST pokaże. Może problem leży w kodowaniu skryptu

Ten post edytował Turson 25.09.2013, 20:57:56
Go to the top of the page
+Quote Post
airgucio
post
Post #7





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Własnie tutaj jak np jestem w dodaj firmę i dodam słowo węgiel poczym wchodzę w firmę żeby wyświetlic info o niej pisze węgiel , pozatym jak dam wyszukaj po nazwie firmy i póżniej pokazuje mi o niej informację też pisze węgiel. Nie wiem tylko czemu wyszukiwarka nie odczytuje polskich znaków bo przecież łączy się z bazą tam jest utf-8 a tabela asortymenyt ma utf-8-polish
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A skrypty z PHP są zakodowane w UTF-8 ?
Go to the top of the page
+Quote Post
airgucio
post
Post #9





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Tak zakodowane z tym nie ma problemu , wydaje mi się że to jest jakiś problem w skrypcie smile.gif tylko tego jeszcze nie rozpracowałem smile.gif


Baza UTF-8 ,później tuf8-polish-ci, wpisuje i są w bazie polskie litery problem tylko z odczytaniem może coś z odczytywaniem tablic ? wyników ? dodatkowa linijka kodu odpowiedzialna za odczytywanie i pokazywanie ich w wynikach ?

Zauważyłem że jak usune fragment

  1.  
  2. mysqli_query($base, "SET NAMES utf8");
  3. mysqli_query($base, "SET CHARACTER SET utf8");
  4. mysqli_query($base, "SET collation_connection = utf8_polish_ci");



to jak w wyszukiwarce wpisze hasło z polskimi znakami to mi je wyświetli tylko mają znak zapytania - bazie jak podgladam to jest oki są polskie znaki

Zauważyłem że jak dam :


  1. echo iconv('ISO-8859-2', 'UTF-8', "Nazwa firmy: '.$row["firma"].'");



To w wyszukiwarka działa z polskimi znakami , tylko teraz jak dodać aby wszystkie wyniki były z polskimi znakami taki kod ma sens ?

  1.  
  2.  
  3. echo iconv('ISO-8859-2', 'UTF-8', "Nazwa firmy: '.$row["firma"].' <br> Telefon: '.$row["telefon"].' <br> Ulica: '.$row["ulica].'
  4. <br> Miasto: '.$row["miejscowosc"].'<br> Asortyment: '.$row["asortyment"].'<br> Umowa do: '.$row["umowa_do"].'');


Już wszystko działa smile.gif


oto kod gdyby ktoś chciał:


  1.  
  2. <?php
  3. // program wyszukiwarki - search.php
  4. // wy?wietlenie nagłówka
  5. echo'<h2>Wyniki wyszukiwania</h2>';
  6. // usunięcie niepotrzebnych białych znaków
  7. $_POST['phrase']=trim($_POST['phrase']);
  8. // sprawdzenie, czy użytkownik wpisał dane
  9. if(empty($_POST['phrase']))
  10. // je?li nie, to wy?wietl komunikat i zakończ działanie skryptu
  11. die('Formularz wypełniony niepoprawnie! Nie można wy?wietlić wyników wyszukiwania!');
  12. // je?li jednak dane s? wpisane poprawnie
  13. else
  14. {
  15. // poł?czenie z baz? danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH!
  16. $base=mysqli_connect('localhost','xxxxl','xxxx','xxxxxx');
  17. //mysqli_query($base, "SET NAMES utf8");
  18. //mysqli_query($base, "SET CHARACTER SET utf8");
  19. //mysqli_query($base, "SET collation_connection = utf8_polish_ci");
  20.  
  21.  
  22.  
  23. // skonstruowanie zapytania
  24. // zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ci?g w bazie danych
  25. // jak zapewne zauważyłe?, przed fraz? i po niej umieszczam znaki procenta %
  26. // ten znak symbolizuje dowolny inny ci?g znaków, więc jest niezbędny do skutecznego wyszukiwania
  27. // połaczenie operatorem Or pozwala na wyszukiwanie danego ci?gu zarówno w nazwie, jak i opisie produktu
  28. // UWAGA! Tutaj też nie zapomnij ustawić swoich danych!
  29. $query="Select * FROM firma WHERE telefon Like '%{$_POST['phrase']}%' Or firma Like '%{$_POST['phrase']}%' Or miejscowosc Like '%{$_POST['phrase']}%'
  30. Or asortyment Like '%{$_POST['phrase']}%' ";
  31.  
  32.  
  33.  
  34. // wysłanie zapytania do bazy danych
  35. $result=mysqli_query($base,$query);
  36. if (!$result) {
  37. die(mysqli_error($base));
  38. }
  39.  
  40. // ustalenie ilo?ci wyszukanych obiektów
  41. $obAmount=mysqli_num_rows($result);
  42.  
  43.  
  44. // wyswietlenie ilo?ci wyszukanych obiektów
  45. echo'Znaleziono: '.$obAmount.'<br /><br />';
  46. // wy?wietlenie wyników w pętli
  47. for($x=0;$x<$obAmount;$x++)
  48. {
  49. // przekształcenie danych na tablicę
  50. $row=mysqli_fetch_assoc($result);
  51.  
  52. // wy?wietlenie numeru identyfikacyjnego
  53. echo $x+1;
  54. echo '. ';
  55. // wy?wietlenie nazwy produktu
  56.  
  57.  
  58.  
  59.  
  60. echo iconv('ISO-8859-2', 'UTF-8', 'Nazwa firmy: '.$row['firma'].' <br> Telefon: '.$row['telefon'].' <br> Ulica: '.$row['ulica'].'
  61. <br> Miasto: '.$row['miejscowosc'].'<br> Asortyment: '.$row['asortyment'].'<br> Umowa do: '.$row['umowa_do'].'');
  62.  
  63.  
  64. echo("<br/>");
  65. echo("<hr>");
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74. echo'<br />';
  75. }
  76. }
  77. // zamknięcie poł?czenia
  78. mysqli_close($base);
  79. // koniec aplikacji
  80. ?>



ktoś by coś jeszzce poprawił w nim ?

Ten post edytował airgucio 26.09.2013, 17:14:04
Go to the top of the page
+Quote Post
em1X
post
Post #10





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


exclamation.gif http://pl.wikipedia.org/wiki/SQL_injection exclamation.gif

Ten post edytował em1X 27.09.2013, 11:28:59


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
airgucio
post
Post #11





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


A gdybym chciał ten skrypt przerobić na szukanie dat od do


To jak mam teraz coś takiego

  1. <?php
  2. // program wyszukiwarki - search.php
  3. // wy?wietlenie nagłówka
  4. echo'<h2>Wyniki wyszukiwania</h2>';
  5. // usunięcie niepotrzebnych białych znaków
  6. $_POST['date_od']=trim($_POST['date_od']);
  7. $_POST['date_do']=trim($_POST['date_do']);
  8. // sprawdzenie, czy użytkownik wpisał dane
  9. if(empty($_POST['date_od']))
  10. if(empty($_POST['date_do']))
  11. // je?li nie, to wy?wietl komunikat i zakończ działanie skryptu
  12. die('Formularz wypelniony niepoprawnie! ');
  13. // je?li jednak dane s? wpisane poprawnie
  14. else
  15. {
  16. // poł?czenie z baz? danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH!
  17. $base=mysqli_connect('localhost','xxx','xxxx','xxxl');
  18. //mysqli_query($base, "SET NAMES utf8");
  19. //mysqli_query($base, "SET CHARACTER SET utf8");
  20. //mysqli_query($base, "SET collation_connection = utf8_polish_ci");
  21.  
  22.  
  23.  
  24. // skonstruowanie zapytania
  25. // zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ci?g w bazie danych
  26. // jak zapewne zauważyłe?, przed fraz? i po niej umieszczam znaki procenta %
  27. // ten znak symbolizuje dowolny inny ci?g znaków, więc jest niezbędny do skutecznego wyszukiwania
  28. // połaczenie operatorem Or pozwala na wyszukiwanie danego ci?gu zarówno w nazwie, jak i opisie produktu
  29. // UWAGA! Tutaj też nie zapomnij ustawić swoich danych!
  30. //$query="SELECT * FROM firma WHERE (UMOWA_DO BETWEEN '$umowa_do' AND '$umowa_do')";
  31. //$query='SELECT * FROM firma WHERE umowa_do order ASC'
  32. $query="SELECT * FROM firma WHERE umowa_do BETWEEN '$date_od' AND '$date_do' ";
  33.  
  34.  
  35.  
  36. // wysłanie zapytania do bazy danych
  37. $result=mysqli_query($base,$query);
  38. if (!$result) {
  39. die(mysqli_error($base));
  40. }
  41.  
  42. // ustalenie ilo?ci wyszukanych obiektów
  43. $obAmount=mysqli_num_rows($result);
  44.  
  45.  
  46. // wyswietlenie ilo?ci wyszukanych obiektów
  47. echo'Znaleziono: '.$obAmount.'<br /><br />';
  48. // wy?wietlenie wyników w pętli
  49. for($x=0;$x<$obAmount;$x++)
  50. {
  51. // przekształcenie danych na tablicę
  52. $row=mysqli_fetch_assoc($result);
  53.  
  54. // wy?wietlenie numeru identyfikacyjnego
  55. echo $x+1;
  56. echo '. ';
  57. // wy?wietlenie nazwy produktu
  58.  
  59.  
  60.  
  61.  
  62. echo iconv('ISO-8859-2', 'UTF-8', 'Nazwa firmy: '.$row['firma'].' <br> Telefon: '.$row['telefon'].' <br> Ulica: '.$row['ulica'].'
  63. <br> Miasto: '.$row['miejscowosc'].'<br> Asortyment: '.$row['asortyment'].'<br> Umowa do: '.$row['umowa_do'].'');
  64.  
  65.  
  66. echo("<br/>");
  67. echo("<hr>");
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76. echo'<br />';
  77. }
  78. }
  79. // zamknięcie poł?czenia
  80. mysqli_close($base);
  81. // koniec aplikacji
  82. ?>


to wyskakuje mi błąd
Warning: mysqli_close() expects parameter 1 to be mysqli, null given in xxxxxxxxxxxxxxxxxxxxx/search1.php on line 80

Co z tym fantem zrobić a może dat wyszukiwac inacze ? format dat w bazie rok miesiac dzien Format DATE
Go to the top of the page
+Quote Post
em1X
post
Post #12





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Znasz chociaż trochę angielski? Podstawy są niezbędne do pracy z PHP.

Parser mówi Ci dosłownie:
"błąd w linii 80: parametr przekazany do funkcji powinien być typu mysqli, a nie ma nic (parametr jest pusty)".

Wynika z tego, że zmienna $base nie zawiera to co powinna. Skoro deklarujesz ją tu:
  1. $base=mysqli_connect('localhost','xxx','xxxx','xxxl');


oznaczałoby to, że zmienna się poprawnie nie utworzyła, ergo nie uzyskałeś połączenia z bazą. Dlaczego nie uzyskano połączenia trzeba się zastanowić. Konkluzja może być tylko jedna: błędne dane do połączenia z bazą. Musisz ustalić które. Czy baza działa na localhoście (czy się uruchomiła), czy dane dostępowe są poprawne, czy nazwa bazy poprawna, itd. Myśl.


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
airgucio
post
Post #13





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Hej rozumiem że to tyczy dostępów, tylko ten skrypt opracowałem smile.gif za duże słowo przerobiłem dla funkcji like i wszystko fajnie działa połączenie z bazą danych również ,teraz jak zmieniłem query żeby pokazywał inne dane to jest daty z przedziałów - to nie działa.

Dane do bazy nie zostały zmienione, ale i też kilkakrotnie sprawdziłem czy jest wszystko oki, dodatkowo sprawdzałem czy są umowa_od i umowa_do w bazie

wcześniejsze query to

  1.  
  2. echo'<h2>Wyniki wyszukiwania</h2>';
  3. // usunięcie niepotrzebnych białych znaków
  4. $_POST['phrase']=trim($_POST['phrase']);
  5. // sprawdzenie, czy użytkownik wpisał dane
  6. if(empty($_POST['phrase']))
  7. // je?li nie, to wy?wietl komunikat i zakończ działanie skryptu
  8. die('Formularz wypełniony niepoprawnie! Nie można wy?wietlić wyników wyszukiwania!');
  9. // je?li jednak dane s? wpisane poprawnie
  10. else
  11. {
  12.  
  13. $base=mysqli_connect('localhost','xxxx','xxxx','xxxxx');
  14.  
  15.  
  16.  
  17. $query="Select * FROM firma WHERE telefon Like '%{$_POST['phrase']}%' Or firma Like '%{$_POST['phrase']}%' Or miejscowosc Like '%{$_POST['phrase']}%'
  18. Or asortyment Like '%{$_POST['phrase']}%' ";


a teraz podmieniłem na

  1.  
  2. $umowa_od=$_POST['umowa_od'];
  3. $umowa_do=$_POST['umowa_do'];
  4.  
  5. // sprawdzenie, czy użytkownik wpisał dane
  6. if(empty($_POST['umowa_od']))
  7. if(empty($_POST['umowa_do']))
  8. // je?li nie, to wy?wietl komunikat i zakończ działanie skryptu
  9. die('Formularz wypelniony niepoprawnie! ');
  10. // je?li jednak dane s? wpisane poprawnie
  11. else
  12. {
  13.  
  14. $base=mysqli_connect('localhost','xxxl','xxxx','xxxx');
  15.  
  16. $query="SELECT * FROM firma WHERE umowa_od >=$umowa_od AND umowa_do <=$umowa_do ";
  17.  


myślałem że to zadziała

mój kod wyszukiwarki to :

  1. <form action="../@admin/search1.php" method="post" target="foo2" onSubmit="window.open('', 'foo2', 'width=500,height=500,status=yes,resizable=yes,scrollbars=yes') ">
  2. Data od <input type="text" name="umowa_od" value=""/> data do <input type="text" name="umowa_do" value="" />
  3. <input type="submit" value="Szukaj" />
  4. </form>


Go to the top of the page
+Quote Post
em1X
post
Post #14





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


A jak wygląda struktura tabeli firma? Wklej definicję pól.


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
airgucio
post
Post #15





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Wybacz że tylko opiszę ale nie jestem przy kompie i pisze z tableta:) w tebeli cała struktura ma np varchar(100) utf8_polish_ci jesli chodzi o umowa_od i umowa_do to one mają DATE czyli przetwarza mi w postaci rok miesiąc dzień. ( mam je wyświetlone na innej stronie więc nie pomyliem nazw nawet testowałem tam na podstawie between i tam pokazuje daty od do - tam tylko mi wyświetla a tu chciałem zrobić wyszukaj daty z przedziału)

wydaje mi się że źlę tworzę zapytanie czyli te select , ewentualnie mogłem coś pominąć przy połączeniu formularza z php no ale jak mam name="umowa_od" i później w pliku php

  1. $_POST['umowa_od']=trim($_POST['umowa_od']);



i to

  1. $query="SELECT * FROM firma WHERE umowa_od >=$_POST['umowa_od'] AND umowa_do <=$_POST['umowa_od'] ";


to powinno działać, ale dopiero oswajam się z php i sql więc nie wiem czy dobrze kombinuje smile.gif


a może użyć funkcji between

  1. $query="SELECT * FROM firma WHERE umowa_do BETWEEN '$umow_od ' AND '$umow_do '";


tylko jak to podłączyć pod formularz ?

Ten post edytował airgucio 27.09.2013, 17:43:00
Go to the top of the page
+Quote Post
em1X
post
Post #16





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Nie opatrzyłeś daty w cudzysłów, nie filtrujesz danych (chcesz stracić kiedyś pracę?). Poprawnie będzie:

  1. $filtr_umowa_od=htmlentities($_POST['umowa_od'], ENT_QUOTES);
  2. $query=sprintf('SELECT * FROM firma WHERE umowa_od >= "%1$s" AND umowa_do <= "%1$s"', $filtr_umowa_od);


Ten post edytował em1X 27.09.2013, 19:28:09


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
airgucio
post
Post #17





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Witaj dziękuje za pomoc smile.gif zgdonie ze wskazówką teraz mam taki kod

  1.  
  2. <?php
  3.  
  4. echo'<h2>Wyniki wyszukiwania</h2>';
  5.  
  6. $umowa_od=$_POST['umowa_od'];
  7. $umowa_do=$_POST['umowa_do'];
  8.  
  9.  
  10. if(empty($_POST['umowa_od']))
  11. if(empty($_POST['umowa_do']))
  12.  
  13. die('Formularz wypelniony niepoprawnie! ');
  14.  
  15. else
  16. {
  17.  
  18. $base=mysqli_connect('localhost','xxxxl','xxxx','xxxxl');
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. $filtr_umowa_od=htmlentities($_POST['umowa_od'], ENT_QUOTES);
  26. $query=sprintf('SELECT * FROM firma WHERE umowa_od >= "%1$s" AND umowa_do <= "%1$s"', $filtr_umowa_od);
  27.  
  28.  
  29.  
  30. // wysłanie zapytania do bazy danych
  31. $result=mysqli_query($base,$query);
  32. if (!$result) {
  33. die(mysqli_error($base));
  34. }
  35.  
  36.  
  37. $obAmount=mysqli_num_rows($result);
  38.  
  39.  
  40.  
  41. echo'Znaleziono: '.$obAmount.'<br /><br />';
  42. // wy?wietlenie wyników w pętli
  43. for($x=0;$x<$obAmount;$x++)
  44. {
  45.  
  46. $row=mysqli_fetch_assoc($result);
  47.  
  48.  
  49. echo $x+1;
  50. echo '. ';
  51.  
  52.  
  53.  
  54.  
  55.  
  56. echo iconv('ISO-8859-2', 'UTF-8', 'Nazwa firmy: '.$row['firma'].' <br> Telefon: '.$row['telefon'].' <br> Ulica: '.$row['ulica'].'
  57. <br> Miasto: '.$row['miejscowosc'].'<br> Asortyment: '.$row['asortyment'].'<br> Umowa do: '.$row['umowa_do'].'');
  58.  
  59.  
  60. echo("<br/>");
  61. echo("<hr>");
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. echo'<br />';
  71. }
  72. }
  73. // zamknięcie poł?czenia
  74. mysqli_close($base);
  75. // koniec aplikacji
  76. ?>


a formularz

  1. <p><b>Wyszukaj pod datach:</b> <p>
  2. <form action="../@admin/search1.php" method="post" target="foo2" onSubmit="window.open('', 'foo2', 'width=500,height=500,status=yes,resizable=yes,scrollbars=yes') ">
  3. Data od <input type="text" name="umowa_od" value=""/> data do <input type="text" name="umowa_do" value="" />
  4. <input type="submit" value="Szukaj" />
  5. </form>
  6.  

ale dalej nie działa czy filtr mam też ustawić dla umowa_do questionmark.gif?
Wybacz pewnie tak proste pytania ale wiele nauki przede mną sad.gif

Go to the top of the page
+Quote Post
Turson
post
Post #18





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

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


No raczej facepalmxd.gif

Ucz się na metodzie prób i błędów. Dodawaj coś nowego, edytuj i sprawdzaj. W końcu trafisz.
Go to the top of the page
+Quote Post
em1X
post
Post #19





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Cytat(airgucio @ 28.09.2013, 00:10:06 ) *
ale dalej nie działa


Nie jesteśmy jasnowidzami. Co właściwie nie działa?


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
airgucio
post
Post #20





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 27.06.2013

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


Witaj

mój kod formularz wygląda teraz tak :

  1.  
  2. <p><b>Wyszukaj pod datach:</b> <p>
  3. <form action="../@admin/search1.php" method="post" target="foo2" onSubmit="window.open('', 'foo2', 'width=500,height=500,status=yes,resizable=yes,scrollbars=yes') ">
  4. Data od <input type="text" name="umow_od" /> data do <input type="text" name="umow_do" />
  5. <input type="submit" value="Szukaj" />
  6.  


a php tak :


  1.  
  2. <?php
  3.  
  4. echo'<h2>Wyniki wyszukiwania</h2>';
  5.  
  6. if(empty($_POST['umow_od']))
  7. if(empty($_POST['umow_do']))
  8.  
  9. die('Formularz wypelniony niepoprawnie! ');
  10.  
  11. else
  12. {
  13.  
  14. $base=mysqli_connect('localhost','xxx','xxxx','xxxl');
  15.  
  16. $filtr_umow_od=htmlentities($_POST['umow_od'], ENT_QUOTES);
  17. $filtr_umow_do=htmlentities($_POST['umow_do'], ENT_QUOTES);
  18.  
  19. $query=sprintf('SELECT * FROM firma WHERE umowa_od >= "%1$s" AND umowa_do <= "%1$s"', $filtr_umow_od, $filtr_umow_od);
  20.  
  21.  
  22.  
  23. // wysłanie zapytania do bazy danych
  24. $result=mysqli_query($base,$query);
  25. if (!$result) {
  26. die(mysqli_error($base));
  27. }
  28.  
  29. // ustalenie ilo?ci wyszukanych obiektów
  30. $obAmount=mysqli_num_rows($result);
  31.  
  32.  
  33. // wyswietlenie ilo?ci wyszukanych obiektów
  34. echo'Znaleziono: '.$obAmount.'<br /><br />';
  35. // wy?wietlenie wyników w pętli
  36. for($x=0;$x<$obAmount;$x++)
  37. {
  38. // przekształcenie danych na tablicę
  39. $row=mysqli_fetch_assoc($result);
  40.  
  41. // wy?wietlenie numeru identyfikacyjnego
  42. echo $x+1;
  43. echo '. ';
  44. // wy?wietlenie nazwy produktu
  45.  
  46.  
  47.  
  48.  
  49. echo ('Nazwa firmy: '.$row['firma'].' <br> Telefon: '.$row['telefon'].' <br> Ulica: '.$row['ulica'].'
  50. <br> Miasto: '.$row['miejscowosc'].'<br> Asortyment: '.$row['asortyment'].'<br> Umowa do: '.$row['umowa_do'].'');
  51.  
  52.  
  53. echo("<br/>");
  54. echo("<hr>");
  55. echo'<br />';
  56.  
  57.  
  58. }
  59.  
  60. mysqli_close($base);
  61. }
  62. ?>
  63.  


Kiedy wpisuje data od : 2013-10-10 i data do: 2013-10-20 i chce żeby wyszukał dane to wyświetla mi się puste okienko . skrypt chyba wogóle nie działa

Mam tabele firma gdzie jest rekord umowa_od i umowa_do w której zapisuje daty i później chce żeby poprzez formularz w którym mam pole o nazwie=umow_od i o nazwie=umow_do można było wyszukać zakres dat które wpisuje, czyli w bazie znajdują się umowy z datami a ja poprzez formularz okreslam które maja sie pokazać z jakiego okresu

Teraz nie wyskakuje mi żaden komunikat błędu , tylko puste okienko , dziękuję za zainteresowanie moim tematem drogi Kolego em1X smile.gif i pomoc której juz mi udzieliłeś

Probelm rozwiązany zbudowałem od nowa wyszukiwarkę i teraz wszystko działa smile.gif

Ten post edytował airgucio 28.09.2013, 14:21:15
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 Aktualny czas: 20.08.2025 - 09:14