Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]wyszukiwarka coś nie działa
Michał90
post 30.12.2009, 20:12:59
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


Witam,
jestem noobkiem smile.gif
Nie działa mi wyszukiwarka. W czym tkwi problem ?

  1. <?php
  2. $connection = mysql_connect('localhost','xxxx','yyyy','zzzzz');
  3. echo'<form action="j.php" method="post">';
  4. echo "<br>wpisz towar <br>";
  5. echo'<input type="text" name="tytul" id="tytul" value="">';
  6.  
  7. echo'<input type="submit" name="znajdz" value="znajdz">';
  8. echo'<input type="reset" value="wyczyść">';
  9. echo'</form>';
  10.  
  11. if(isset($_POST['znajdz']))
  12. {
  13. $tytul = $_POST['tytul'];
  14.  
  15.  
  16. $zapytanie = mysql_query("SELECT * FROM `publications` WHERE `tytul`.`TYTUL` LIKE '%$tytul%' ");
  17.  
  18. echo "<table cellpadding='1' border='1'>";
  19. echo "<tr>";
  20. echo "<td> tytul </td>";
  21. echo "<td> działy </td>";
  22. echo "<tr>";
  23. while( $wiersz = mysql_fetch_array($zapytanie) )
  24. {
  25. echo "<tr>";
  26. echo "<td>".$wiersz['TYTUL']."</td>";
  27. echo "<tr>";
  28. }
  29. echo "</table>";
  30.  
  31. mysql_close($connection);
  32. }
  33. ?>


Ma wyszukiwać dane słowo po tytule i nazwie autora(albo wpisze tytuł albo autora) z tabeli publications..
Co jest źle?

Pozdrawiam

Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
darko
post 30.12.2009, 20:15:21
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


WHERE `tytul`.`TYTUL` ?
Daj
  1. $zapytanie = mysql_query("SELECT * FROM `publications` WHERE `tytul`.`TYTUL` LIKE '%$tytul%' ") or die(mysql_error());
i będziesz wiedział, co jest źle.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Michał90
post 30.12.2009, 20:25:10
Post #3





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


Mam komunikat Nie wybrano żadnej bazy danych

Jest przecież na samej górze wybrana baza biggrin.gif

jak dałem tak:
  1. $zapytanie = mysql_query($connection,"SELECT * FROM `publications` WHERE `tytul`.`TYTUL` LIKE '%$tytul%' ") or die(mysql_error());


to też nie działa
Go to the top of the page
+Quote Post
darko
post 30.12.2009, 20:28:03
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Po połączeniu z bazą należałoby ją wybrać mysql_select_db


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Armstrong
post 30.12.2009, 20:29:21
Post #5





Grupa: Zarejestrowani
Postów: 200
Pomógł: 40
Dołączył: 26.08.2009
Skąd: Kobiernice

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


Cytat(Michał90 @ 30.12.2009, 18:25:10 ) *
Mam komunikat Nie wybrano żadnej bazy danych

Nie wybrałeś bazy mysql_select_db();

Ten post edytował Armstrong 30.12.2009, 20:29:44


--------------------
// NOPE
Go to the top of the page
+Quote Post
Michał90
post 30.12.2009, 22:16:59
Post #6





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


  1. <?php
  2. $connection = mysql_connect('localhost','xxxx','yyyy','zzzz');
  3. mysql_select_db ('zzzzz');
  4. echo'<form action="j.php" method="post">';
  5. echo "<br>wpisz towar <br>";
  6. echo'<input type="text" name="tytul" id="tytul" value="">';
  7.  
  8. echo'<input type="submit" name="znajdz" value="znajdz">';
  9. echo'<input type="reset" value="wyczyść">';
  10. echo'</form>';
  11.  
  12. if(isset($_POST['znajdz']))
  13. {
  14. $tytul = $_POST['tytul'];
  15.  
  16.  
  17. $zapytanie = mysql_query("SELECT * FROM `publications` WHERE `tytul` LIKE '%$tytul%' ") or die(mysql_error());
  18.  
  19. echo "<table cellpadding='1' border='1'>";
  20. echo "<tr>";
  21. echo "<td> tytul </td>";
  22. echo "<td> działy </td>";
  23. echo "<tr>";
  24. while( $wiersz = mysql_fetch_array($zapytanie) )
  25. {
  26. echo "<tr>";
  27. echo "<td>".$wiersz['tytul']."</td>";
  28. echo "<tr>";
  29. }
  30. echo "</table>";
  31.  
  32. mysql_close($connection);
  33. }
  34. ?>


Ok już nie mam błędów ale nie pobiera mi wyników dlaczego ? smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
darko
post 31.12.2009, 02:41:29
Post #7





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Dla pewności pozamykaj ( />) inputy w formularzu i wyprintuj wartość zmiennej $tytul


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Michał90
post 31.12.2009, 09:29:52
Post #8





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


Ok już zauważyłem dlaczego mi nie chciało wyświetlać.. Otóż chodzi o to, że jak napisze małymi literami dane słowo, a w bazie jest napisane duża literą to już tego nie bierze pod uwagę i nie wyświetla... jak to zmienić żeby po wpisaniu dużą czy małą literą brał to pod uwagę.
Druga sprawa to taka, że jeśli nic nie wpiszę w wyszukiwarkę, a dam szukaj to wyświetla wszystkie wpisy z bazy jak temu zapobiec ?
Trzecia sprawa jak dodać żeby wyszukiwał również po nazwie autora ? Czyli jak wpisze tytuł lub nazwe autora to wyszukuje smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
darko
post 31.12.2009, 11:54:22
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


1. $tytul = ucfirst(strtolower($tytul));
2.
if(strlen($tytul) == 0)
{
// wykonaj, co trzeba
}
3.
- echo'<input type="text" name="autor" id="autor" value="">';
- $autor = $_POST["autor"];
- jw.
- (...) WHERE `tytul` LIKE '%$tytul%' OR autor LIKE '%$autor%'

Ten post edytował darko 31.12.2009, 12:00:47


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Michał90
post 31.12.2009, 12:11:56
Post #10





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


Możesz to zlepić z tamtym kodem (powyżej) bo za bardzo nie wiem w które miejsce gubię sie winksmiley.jpg
Go to the top of the page
+Quote Post
darko
post 31.12.2009, 12:14:24
Post #11





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat(Michał90 @ 31.12.2009, 12:11:56 ) *
Możesz to zlepić z tamtym kodem (powyżej) bo za bardzo nie wiem w które miejsce gubię sie winksmiley.jpg

Nie mogę, to Twoje zadanie i tak masz wszystko podane na talerzu winksmiley.jpg Podpowiem: postępuj analogicznie. Trochę wkładu własnego. I jak idzie?

Ten post edytował darko 31.12.2009, 12:22:13


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Michał90
post 31.12.2009, 12:22:15
Post #12





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


To: $tytul = ucfirst(strtolower($tytul));
to to jest że bierze pod uwagę małe i duże litery tak ?
Go to the top of the page
+Quote Post
darko
post 31.12.2009, 12:23:20
Post #13





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


strtolower zamienia wszystkie litery na małe, a ucfirst powoduje, że pierwsza litera jest duża.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Michał90
post 31.12.2009, 12:35:25
Post #14





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


Ok poradziłem sobie z pkt 1.

Czy takie rozwiązanie może być? jeśli nic nie zostanie wpisane w wyszukiwarce, a ktoś da szukaj.
  1. <? if(empty($tytul)){
  2. die("Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!");
  3. }?>


Nie wiem gdzie to dac:
  1. <? if(strlen($tytul) == 0)
  2. {
  3. echo "Nic nie znaleziono!";
  4. }?>


może być zamiast tego to:
  1. <? if(mysql_num_rows($zapytanie) == 0){
  2. echo "Nic nie znaleziono!";
  3. }?>

to mi działa biggrin.gif

Ten post edytował Michał90 31.12.2009, 12:36:37
Go to the top of the page
+Quote Post
darko
post 31.12.2009, 12:38:36
Post #15





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat(Michał90 @ 31.12.2009, 12:35:25 ) *
Ok poradziłem sobie z pkt 1.

Czy takie rozwiązanie może być? jeśli nic nie zostanie wpisane w wyszukiwarce, a ktoś da szukaj.
  1. <? if(empty($tytul)){
  2. die("Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!");
  3. }?>


Nie wiem gdzie to dac:
  1. <? if(strlen($tytul) == 0)
  2. {
  3. echo "Nic nie znaleziono!";
  4. }?>

W takim razie to drugie nie jest Ci już potrzebne. Teraz dodaj do formularza pole autor, dodaj do kodu zmienną $autor i doklej do zapytania, to co podałem i powinno śmigać. Właściwie najpierw powinieneś sprawdzać czy podano tytuł i autora i dopiero w zależności od tego czy podano oba (wtedy w zapytaniu powinno być AND zamiast OR) czy podano któreś z tych dwóch kryteriów - sformułować odpowiednie zapytanie.

Ten post edytował darko 31.12.2009, 12:41:35


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Michał90
post 31.12.2009, 12:40:55
Post #16





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


Czyli zamiast tego:
  1. <? if(strlen($tytul) == 0)
  2. {
  3. echo "Nic nie znaleziono!";
  4. }?>


może być to co podałem tak ? Czyli to:
  1.  
  2. <? if(mysql_num_rows($zapytanie) == 0){
  3.  
  4. echo "Nic nie znaleziono!";
  5.  
  6. }?>


Ten post edytował Michał90 31.12.2009, 12:41:29
Go to the top of the page
+Quote Post
darko
post 31.12.2009, 12:42:38
Post #17





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Nie, to
  1. if(empty($tytul)){
  2. die("Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!");
  3. }

w zupełności wystarczy.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Michał90
post 31.12.2009, 12:48:42
Post #18





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


z tym szukaniu po nazwie autora to nie chodziło mi tak zupełnie tak jak podałeś.

Chce, żeby było tylko 1 pole wyszukiwania i jeśli w nim wpisze autora to wyszuka jak jest , jeśli wpisze w nim tytuł to też wyszuka smile.gif

Go to the top of the page
+Quote Post
darko
post 31.12.2009, 12:50:29
Post #19





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Lepiej byłoby zrobić takie wyszukiwanie mając dwa osobne pola, bo jak poznasz o które kryterium wyszukiwania chodziło użytkownikowi? Chyba, że dodasz jakiegoś checkboxa lub radiobuttony


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Michał90
post 31.12.2009, 12:55:34
Post #20





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


Aha czyli tak to ma wyglądać?

  1. <?php
  2. echo'<form action="j.php" method="post">';
  3. echo "<br>wpisz towar <br>";
  4. echo'<input type="text" name="tytul" id="tytul" value=""/>';
  5. echo'<input type="text" name="autor" id="autor" value="">';
  6. echo'<input type="submit" name="znajdz" value="znajdz"/>';
  7. echo'<input type="reset" value="wyczyść"/>';
  8. echo'</form>';
  9.  
  10. if(isset($_POST['znajdz']))
  11. {
  12. $tytul = $_POST['tytul'];
  13. $autor = $_POST["autor"];
  14. $tytul = ucfirst(strtolower($tytul));
  15. $connection = mysql_connect('localhost','xxxx','xxxx','xxxxx');
  16. mysql_select_db ('xxxx');
  17. $zapytanie = mysql_query("SELECT `tytul`,`autor` FROM `publications` WHERE `tytul` LIKE '%$tytul%' AND autor LIKE '%$autor%' ") or die(mysql_error());
  18.  
  19. if(empty($tytul)){
  20. die("Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!");
  21. }
  22. echo "<table cellpadding='1' border='1'>";
  23. echo "<tr>";
  24. echo "<td> tytul </td>";
  25. echo "<td> autor </td>";
  26. echo "<tr>";
  27. while( $wiersz = mysql_fetch_array($zapytanie) )
  28. {
  29. echo "<tr>";
  30. echo "<td>".$wiersz['tytul']."</td>";
  31. echo "<td>".$wiersz['autor']."</td>";
  32. echo "<tr>";
  33.  
  34. }
  35. echo "</table>";
  36.  
  37.  
  38. mysql_close($connection);
  39. }
  40.  
  41. ?>


Jak teraz dodać, że obydwa pola nie mogą być puste?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 19.07.2025 - 17:26