Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Wyszukiwarka
adrianozo
post
Post #1





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Witam wszystkich.
Z racji tego, że rozszerzam swoje umiejętności chciałbym się dowiedzieć jak zrobić wyszukiwarkę opartą o baze danych MySQL.
Czytałem kilka tutoriali, ale nie wszystko rozumiem.
Po pierwsze dlaczego w zapytaniu występują: LIKE oraz %
Po drugie jak mogę zrobić tak, że wyszukuje mi z kilku tabeli w bazie danych.
Z niecierpliwością czekam na odpowiedź.
Pozdrawiam,
adrainozo.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
nospor
post
Post #2





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




Cytat
Po pierwsze dlaczego w zapytaniu występują: LIKE oraz %
Skoro zaczynasz nauke to zacznij też od nauki korzystania z manuala
http://dev.mysql.com/doc/refman/5.0/en/str...l#operator_like
Go to the top of the page
+Quote Post
adrianozo
post
Post #3





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Nie to że zaczynam, ale rozszerzam (IMG:style_emoticons/default/smile.gif)

Cytat(adrianozo @ 29.01.2010, 17:33:51 ) *
Z racji tego, że rozszerzam swoje umiejętności

Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Skoro rozszerzasz nauke to zacznij też rozszerzać umiejętność korzystania z manuala
http://dev.mysql.com/doc/refman/5.0/en/str...l#operator_like
Go to the top of the page
+Quote Post
adrianozo
post
Post #5





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


No i mam zonk:

szukaj.php

  1. <?php
  2. include ('functions/bbcode.php');
  3. include('include/db.php');
  4. echo '<h2>Wyniki wyszukiwania</h2>';
  5. $_POST['wynik']=trim($_POST['wynik']);
  6. if(empty($_POST['wynik']))
  7. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  8. else
  9. {
  10. $zapytanie = "SELECT * FROM home, kontakt, oferta, o_mnie, portfolio, reklama, skrypty WHERE nazwa Like '%{$_POST['wynik']}%' Or tresc Like '%{$_POST['wynik']}%'";
  11. $idzapytania = mysql_query($zapytanie);
  12. $oblicz = mysql_num_rows($idzapytania);
  13. echo'Znaleziono: '.$oblicz.'<br /><br />';
  14. for($x=0;$x<$oblicz;$x++)
  15. {
  16. $wiersz=mysql_fetch_assoc($idzapytania);
  17. echo $x+1;
  18. echo '. ';
  19. echo bbcode($wiersz['pr_name']);
  20. echo'<br />';
  21. }
  22. }
  23. mysql_close($connect);
  24. ?>


I pokazuje:

Wyniki wyszukiwania

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /a/b/c/d/szukaj.php on line 13
Znaleziono:

Linia 13:

  1. $oblicz = mysql_num_rows($idzapytania);


Column 'tresc' in where clause is ambiguous
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




zamień:
  1. $idzapytania = mysql_query($zapytanie) or die(mysql_error());


i pokaż co się wyświetla.
Go to the top of the page
+Quote Post
adrianozo
post
Post #7





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Column 'tresc' in where clause is ambiguous właśnie to
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




przecież masz napisane ze kolumna jest dwuznaczna. to znaczy ze w 2 lub więcej tabelach masz kolumnę o tej nazwie i teraz baza nie wie do której się chcesz odwołać.
Go to the top of the page
+Quote Post
adrianozo
post
Post #9





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Zmiana zapytania:

  1. $zapytanie = 'SELECT * FROM home as h, kontakt as k, oferta as of, o_mnie as om, portfolio as po, reklama as r, skrypty as s WHERE
  2. h.tresc LIKE "%'.$_POST['wynik'].'%" OR
  3. k.tresc LIKE "%'.$_POST['wynik'].'%" OR
  4. of.tresc LIKE "%'.$_POST['wynik'].'%" OR
  5. om.tresc LIKE "%'.$_POST['wynik'].'%" OR
  6. po.tresc LIKE "%'.$_POST['wynik'].'%" OR
  7. r.tresc LIKE "%'.$_POST['wynik'].'%" OR
  8. s.tresc LIKE "%'.$_POST['wynik'].'%"';


Błędu nie wyświetla, ale nawet jak dobre wpiszę to pokazuje że znaleziono 0
Go to the top of the page
+Quote Post
piotrooo89
post
Post #10


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




no może nie masz nic o podanych warunkach w tabelach? wyechuj sobie to zapytanie i wklej do np phpMyAdmina i analizuj co masz źle.
Go to the top of the page
+Quote Post
adrianozo
post
Post #11





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Mam o podanych warunkach właśnie (IMG:style_emoticons/default/smile.gif)
W PMA pokazuje: MySQL zwrócił pusty wynik (zero rekordów). (Wykonanie zapytania trwało 0.0010 sekund(y))
Go to the top of the page
+Quote Post
piotrooo89
post
Post #12


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




no najwyraźniej nie masz skoro MySQL zwraca taki komunikat, a być może masz poprostu źle warunki dobrane.
Go to the top of the page
+Quote Post
adrianozo
post
Post #13





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


www.nportfolio.pl
Na stronie głównej masz: Tutaj będzie znajdowała się strona główna.

No to zapytanie:

  1. SELECT * FROM home as h, kontakt as k, oferta as of, o_mnie as om, portfolio as po, reklama as r, skrypty as s WHERE
  2. h.tresc LIKE "%'.$_POST['wynik'].'%" OR
  3. k.tresc LIKE "%'.$_POST['wynik'].'%" OR
  4. of.tresc LIKE "%'.$_POST['wynik'].'%" OR
  5. om.tresc LIKE "%'.$_POST['wynik'].'%" OR
  6. po.tresc LIKE "%'.$_POST['wynik'].'%" OR
  7. r.tresc LIKE "%'.$_POST['wynik'].'%" OR
  8. s.tresc LIKE "%'.$_POST['wynik'].'%"


Wpisuje w wyszukiwartke slowo tutaj i pokazuje ze nie znaleziono ale na stronie glownej jest pobrany z tabeli home i kolumny tresc
Go to the top of the page
+Quote Post
piotrooo89
post
Post #14


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




teraz to juz kompletnie nie wiem o co Ci chodzi...
Go to the top of the page
+Quote Post
adrianozo
post
Post #15





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Masz na stronie głównej napis Tutaj będzie znajdowała się strona główna.

W zapytaniu jest zeby przeszukiwal tabele home

Wpisuje slowo tutaj a nie znajduje czyli tak jakby nie bylo tego slowa a jest w bazie danych. Rozumiesz teraz?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #16


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a spróbuj tylko z 1 tabeli dane pobrać, tam gdzie masz to coś do wyświetlenia. zobacz co sie dzieje.
Go to the top of the page
+Quote Post
adrianozo
post
Post #17





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Działa...
Go to the top of the page
+Quote Post
piotrooo89
post
Post #18


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




to masz zapytanie skopane.
Go to the top of the page
+Quote Post
adrianozo
post
Post #19





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


To jakie powinno być?

A może JOIN tutaj pomoże?

Już mam (IMG:style_emoticons/default/smile.gif)
UNION
Zrobione (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 18:07