Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [mysql] problem z wysukiwarką
Forum PHP.pl > Forum > Przedszkole
pokrak
Witam
stworzyłem bazę danych, do tego na razie prostą wyszukiwarkę (ilość zmiennych po których będzie szukanie jest o wiele większa) docelowo chce, żeby wyszukiwanie opierało się na kilku zmiennych, lecz na razie chce ogarnąć w ten sposób. Wyświetlanie zawartości poprzez php odbyło się bez większych problemów. Zaczęły się schody jak doszło do wyszukiwania:

kod html wyszukiwarki
CODE

<b>Wyszukiwanie </b> <br><br>

<form action="wyniki.php" method="post">
Szukaj na podstawie:<br>
<select name="szukanie">
<option value="nr"> Numer
<option value="data_imm"> Data imm
<option value="nazwisko"> Nazwisko
</select>
<br><br>
Szukanyt:<br>
<input name="haslo" type=text> <br>
<input type=submit value="szukaj">
</form>


kod wyniki.php
CODE

<? if (!$szukanie || !$haslo)
{
print "nie zostało wpisane żadne hasło";
exit;
}
$szukanie=addslashes($szukanie);
$haslo=addslashes($haslo);
@$db=mysql_connect("localhost", "user", "haslo");
if (!$db)
{
print "błąd połączenia";
exit;
}

mysql_select_db("nazwa_bazy");
$query="select * from nazwa_tabeli where ".$szukanie." like '%".$haslo."%'";
$result=mysql_query($query);
$num_results=mysql_num_rows($result);
print "<p> ilość pozycji w bazie: ".$num_results."</p>";
for ($i=0; $i <$num_results; $i++) {
$row=mysql_fetch_array($result);
# print ($i+1).". ";
print stripslashes($row["nr"]);
print ", Data im: ";
print stripslashes($row["data_imm"]);
print ", Nazwisko: ";
print stripslashes($row["nazwisko"]);
print "<br>";
}
?>


skończyły mi się już pomysły a wyszukiwanie wciąż nie działa.
Może ktoś świeżym okiem dostrzeże błąd.

Z góry dziękuje za pomoc
Armstrong
  1. if (!$szukanie || !$haslo)

to mi nie pasuje.
Gdzie odbierasz $_POST[] ?
piotrooo89
lektura dla Ciebie: register_globals.
pokrak
Jestem początkującym biggrin.gif wiec z nudów dla znajomej zajołem si e kwestia i odkurzyłem cosik takiego jak "kurs php i mysql" w wersji avi i to jest zrobione na przykładzie z tegoż kursu i początkowy zapis miał za zadanie nie dopuścić do pustych haseł
nospor
ale kurs jest przestarzały i nie uwzględnia register_globals, o których ci juz mowiono bys poczytal - zrob wiec to.

A dodatkowo uzywaj wlasciwego bbcode bo temat niechcący zostanie zamkniety winksmiley.jpg
pokrak
ok w łączenie register_globals momentalnie zadziałało biggrin.gif
lecz widzę, że napotkałem na inny błąd :/
wyniki nie wyświetlają polskich znaków kodowanie w bazie danych mam ustawione na utf8 polish
nospor
Cytat
ok w łączenie register_globals momentalnie zadziałało
Nie chodzilo o to bys włączał, ale bys dostosował skrypt do wyłączonego (zastosował $_POST) - register globals to zło wcielone i jest juz przestarzałe.

Cytat
wyniki nie wyświetlają polskich znaków kodowanie w bazie danych mam ustawione na utf8 polish
bylo milion razy. uzyj wyszukiwarki
pokrak
tongue.gif ale zadziałało tongue.gif w następnej wersji dostosuje do register globals off -> serwer na którym to pracuje jest w sieci zwewnetrznej

poszukam wyszukiwarki ale jak nie znajdę to się przypomnę a nie powiem pomocny byłby link z przykładowym tematem tongue.gif
nospor
Cytat
pomocny byłby link z przykładowym tematem
Zas ja bym oczekiwał bys nie pokazywał podczas rozmowy swojego jęzora...
pokrak
nie bądź już taki nadwrażliwy ..

ok wiec
krok pierwszy wykonany
Kod
ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

krok drugi wykonany
Kod
ALTER TABLE `nazwa_tabeli` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

krok trzeci w wyniki.php dodane
Kod
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</html>


nie pomogło
nospor
Cytat
nie bądź już taki nadwrażliwy ..
to sobie wyobraź ze stoisz przedemną i mi pokazujesz jezyk co drugie slowo. Nadal jestem nadwrazliwy? Emotki słuza do zobrazowania pewnych rzeczy wiec nienaduzywaj ich jak nie wiesz do czego słuzą.

Cytat
nie pomogło
Jest jeszcze jeden krok:
podczas nawiązywania połączenia ustawic kodowanie tez na utf8
pokrak
dodanie:
Kod
mysql_query("SET NAMES 'utf8'");

załatwiło sprawę
wielkie dzięki

PS.prosiłbym ew o podpowiedź w jai sposób można było by zmodyfikować skrypt, żeby wyszukiwanie brało pod uwagę wiele haseł (mam do dyspozycji 15 kolumn z około 40 000 lini), żeby jak najbardziej zawęzić wynik wyszukiwania.
piotrooo89
może:

  1. ... WHERE kol1='cos' OR kol2='cos' OR kol3='cos' ...
pokrak
Cytat(piotrooo89 @ 23.03.2010, 13:58:11 ) *
może:

  1. ... WHERE kol1='cos' OR kol2='cos' OR kol3='cos' ...


może .... lecz podkreślam jestem dość początkujący i widzę kod który do końca nie wiem jak zjeść
na pewno będzie wchodziło w rachubę prze edytowanie pliku wyszukiwarki (czyli html`a) i zmiana zapytania w pliku php do mysqla
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.