Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
adrianozo
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.
nospor
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
adrianozo
Nie to że zaczynam, ale rozszerzam smile.gif

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

nospor
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
adrianozo
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
piotrooo89
zamień:
  1. $idzapytania = mysql_query($zapytanie) or die(mysql_error());


i pokaż co się wyświetla.
adrianozo
Column 'tresc' in where clause is ambiguous właśnie to
piotrooo89
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ć.
adrianozo
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
piotrooo89
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.
adrianozo
Mam o podanych warunkach właśnie smile.gif
W PMA pokazuje: MySQL zwrócił pusty wynik (zero rekordów). (Wykonanie zapytania trwało 0.0010 sekund(y))
piotrooo89
no najwyraźniej nie masz skoro MySQL zwraca taki komunikat, a być może masz poprostu źle warunki dobrane.
adrianozo
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
piotrooo89
teraz to juz kompletnie nie wiem o co Ci chodzi...
adrianozo
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?
piotrooo89
a spróbuj tylko z 1 tabeli dane pobrać, tam gdzie masz to coś do wyświetlenia. zobacz co sie dzieje.
adrianozo
Działa...
piotrooo89
to masz zapytanie skopane.
adrianozo
To jakie powinno być?

A może JOIN tutaj pomoże?

Już mam smile.gif
UNION
Zrobione smile.gif
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.