Temat
Php, Mysql - Prosta Wyszukiwarka - Nie Działa
195.205.63.* napisał:
mam problem z wyszukiwaniemZastosowałem standardowe zapytanie:
CODE
$wykonaj="select * from film where tytulpl like '%$szukaj%'";
gdzie szukaj to nazwa pola w formie gdzie wpisujemy żądany wyraz.
I np...wpisując "te", wyswietla kilka tytulow z "te" (np. Statek) i "tę" (np. poznaj mojego tatę) ale nie wyswietla np. tytulu "Terminal" gdzie tez jest te. jedyna roznica to taka,ze Terminal zaczyna sie z duzej litery ale wpisujac "Te" i tak nie znajduje "Terminal'a".
Podobna (choc troche inna) jest sytuacja z tytulem "1984". Wyswietla go po wpisaniu "19" ale juz po wpisaniu "198" juz nie.
Z kolei jak wpiszę bzdurę w stylu "cvhavchjg" to wyswietla zawsze ponizsze tytuly:
40 dni i 40 nocy
8 Mila
28 dni później
1984
8 milimetrów
Ogólnie rzecz biorąc niby wyszukuje ale robi to źle i niedokładnie.
Gdzie tkwi bubel???
80.53.147.* napisał:
podaj strukturę tabeli.195.205.63.* napisał:
Wkleje screen'a80.53.147.* napisał:
Object not found!Czy nie możesz po prostu przekopiować struktury?
195.205.63.* napisał:
[attachmentid=174]80.53.147.* napisał:
Dziwne. A podaj jeszcze kod programu... może jakoś w trakcie zmienia się $szukaj?195.205.63.* napisał:
na bank się nigdzie nie powtarza. Przejżałem dokładnie kod....poza tym testowałem sam skrypt wyszukiwania na osobno stworzonym pliku php. A może to zależy od języka kodowania samej bazy?? ostatnio w innym poscie pytalem o ten problem gdyz wszystkie tytuly zacznajace się na Ł, Ś itd. wyrzucał na końcu listy, po Z a nie zgodnie z alfabetem po L czy S. No ale jaki ma związek polska litera z tytułłem "1984" , który nie wyświetla się po wyszukaniu frazy "198":)212.109.132.* napisał:
Jaka wersja MySQL ?Sprawdzales przed samym wykonaniem zapytania echo $wykonaj; ?
Wykorzystywanie LIKE do znalezienia substringa w stringu jest nieefektywne, powinienes raczej skorzystac z funkcji LOCATE lub INSTR, np.
CODE
SELECT * FROM film WHERE INSTR(tytulpl, '$szukaj') > 0
195.205.63.* napisał:
echo $szukaj pokazuje to co powinno, czyli wpisana w okno wyszukiwania frazeinstrukcja
CODE
SELECT * FROM film WHERE INSTR(tytulpl, '$szukaj') > 0
daje taki sam efekt. Dalej działa tak samo, czyli źle. I dokładnie te same sytuacje mają miejsce
80.53.147.* napisał:
Spróbuj wykonać to zapytanie bezpośrednio do bazy bez udziału php.195.205.63.* napisał:
Mam wersje:Apache 1.3.29
PHP 4.3.4
MySQL 3.23.58
phpMyAdmin 2.5.4
Korzystam z serwera "KRASNAL Serv"
80.53.147.* napisał:
Choroba... Kończą mi się pomysły co mogłeś zepsuć.Testowałem mysql 3.23.52-log, 4.1.8, php 4.3.10, 4.3.0 i wszystko w każdym przypadku działa prawidłowo.
195.205.63.* napisał:
80.53.147.* napisał:
Ale paskudny kod.ładniej na przykład tak:
CODE
$wykonaj="SELECT * FROM film WHERE INSTR(tytulpl, '$szukaj') > 0";
if(!($result = mysql_query($wykonaj))) {
echo mysql_error();
}
else {
while($row = mysql_fetch_array($result, MYSQL_BOTH)) {
print_r($row); // albo jakieś echo, co chcesz.
}
}
W każdym razie nie rozumiem jednej rzeczy - czemu masz $pole["$tytulpl"]
195.205.63.* napisał:
mój błąd.......normlnie jest tam zmienna ale dla potrzeb zaprezentowania kodu poprawiłem na tytulpl i przeoczyłem usunięcia $.tak czy siak............czy paskudny kod czy nie.....powinno wszystko dzialac czy nie??
80.53.147.* napisał:
Nie jest to przypadkiem błąd wprowadzania/parse'owania danych?Teoretycznie powinno działać. Teoretycznie.
195.205.63.* napisał:
wprowadzania lub parse'owania?? no nie wiem.....wszystko składnie działa, oprócz tego szukaniaNo bo niby jak miałoby być żeby było dobrze??
80.53.147.* napisał:
Pokaż cały kod.195.205.63.* napisał:
formularz:CODE
<TABLE class="tabela">
<TR>
<TD>
<FORM name="szukanie" METHOD=POST ACTION="spis.php?action=search">
<INPUT TYPE="text" NAME="szukaj">
<center><a href="javascript:document.szukanie.submit();">SZUKAJ</a></center>
</FORM>
</TD>
</TR>
</TABLE>
skrypt:
CODE
<TABLE class="tabela_spis" cellpadding="0" cellspacing="0">
<?
//Połączenie z bazą danych
$sql=mysql_connect(localhost,root,krasnal);
mysql_select_db(filmy,$sql);
switch($l){
case 1:
$jezyk="tytulen";
$jezyk2="tytulpl";
break;
case 0:
$jezyk="tytulpl";
$jezyk2="tytulen";
}
//Wyświetlenie listy filmów
if($action!=search)
{
$wykonaj = "select * from film order by $jezyk asc";
}
else
{
$wykonaj="SELECT * FROM film WHERE INSTR(tytulpl, '$szukaj') > 0";
}
$wynik = mysql_query( $wykonaj, $sql );
if ( $wynik == True )
{
// Pobranie wiersza danych i wypisanie dwóch pól
while ( $pole = mysql_fetch_array( $wynik ) )
{
if($id!=1){
echo "<TR><TD width=50%><a style='margin-left:3px' href='film.php?id=".$pole["id"]."&&l=".$l."'>". $pole["$jezyk"]."</a></TD><TD> ".$pole["$jezyk2"]."</TD></TR>";}
}
}
?>
</TABLE>
Reszta kodu to htmlowskie tabelki i takie tam.....nic co mogloby decydowac o bazie danych
Musze dodac, ze przygode z mysql i php zaczalem nie dawno i nie czytalem jeszcze specjalnie duzo fachowych porad, wiec kod jest jaki jest. bez nowatorskich rozwiazan i z rozwiazaniami "po chlopksu":)
i jeszcze skrypt (caly plik) ktory dodaje wpisy do bazy
CODE
function InsertRecord( $aTytulpl, $aTytulen, $aGatunek1, $aGatunek2, $aProdukcja,$aRokprod, $aRezyser,$aAktor1,$aAktor2,$aAktor3,$aAktor4, $aOpis)
{
// Przygotowanie wyrażenia SQL INSERT
$wstaw = "insert into film (tytulpl,tytulen,gatunek1,gatunek2,produkcja,rokprod,rezyser,aktor1,aktor2,aktor3,aktor4,opis) values ( '$aTytulpl', '$aTytulen', '$aGatunek1', '$aGatunek2', '$aProdukcja','$aRokprod', '$aRezyser', '$aAktor1','$aAktor2','$aAktor3','$aAktor4', '$aOpis')";
// Przyłączenie do serwera i wykonanie instrukcji INSERT
$sql = mysql_connect( "localhost", "root", "krasnal" ) or die("Error1 " . mysql_error());
mysql_select_db( filmy, $sql ) or die("Error2 " . mysql_error());;
$wynik = mysql_query( $wstaw, $sql ) or die("Error3 " . mysql_error());;
if ( $wynik == True )
{
$wynik = mysql_insert_id( $sql );
}
else
{
// print( "Błąd wykonania zapytania<br>" );
$wynik = -1;
}
return $wynik;
}
?>
<html>
<head>
<title>Wstawianie danych do bazy </title>
<meta http-equiv="Content-type" content="text/html; charset="cp1250" />
</head>
<style>
TD {vertical-align:top;}
</style>
<body>
<?php
if ( $REQUEST_METHOD == 'POST' )
{
// Nastąpiło przesłanie danych formularza
$wynik2 = InsertRecord($Tytulpl, $Tytulen, $Gatunek1, $Gatunek2, $Produkcja, $Rokprod, $Rezyser,$Aktor1,$Aktor2,$Aktor3,$Aktor4, $Opis);
if ( $wynik2 > 0 )
{
print( "Dodano nowy wiersz, ID = $wynik2<br>" );
}
else
{
print( "Błąd funkcji InsertRecord. Kod błędu = $wynik2<br>" );
}
print( "<hr>" );
}
?>
Wpisz dane dodawanego filmu:<br>
<FORM METHOD=POST ACTION="dodaj.php">
<table border="0"><tr><td width="25%">
<TABLE width="100%" border="0" cellpadding="0" cellspacing="0">
<TR>
<TD width="100">Tytul polski</TD>
<TD><input type="text" name="Tytulpl" maxlength="100"></TD>
<TR>
<TD>Tytul oryginalny:</TD>
<TD><input type="text" name="Tytulen" maxlength="100"></TD>
</TR>
<TR>
<TD>Gatunek:</TD>
<TD><input type="text" name="Gatunek1" maxlength="20"><br>
<input type="text" name="Gatunek2" maxlength="20"></TD>
</TR>
<TR>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Produkcja:</TD>
<TD><input type="text" name="Produkcja" maxlength="50"></TD>
</TR>
<TR>
<TD>Rok produkcji</TD>
<TD><input type="text" name="Rokprod" maxlength="15"></TD>
</TR>
<TR>
<TD>Rezyser:</TD>
<TD><input type="text" name="Rezyser" maxlength="30"></TD>
</TR>
<TR>
<TD>Występują:</TD>
<TD><input type="text" name="Aktor1" maxlength="30"><br>
<input type="text" name="Aktor2" maxlength="30"><br>
<input type="text" name="Aktor3" maxlength="30"><br>
<input type="text" name="Aktor4" maxlength="30"><br></TD>
</TR></table></td><td>
<iframe width="100%" frameborder="0" height="300" cellpadding="0" cellspacing="0" src="http://www.filmweb.pl"></iframe>
</tr>
<table>
<TR>
<TD width="93">Opis:</TD>
<TD><TEXTAREA NAME="Opis" ROWS="10" COLS="100%"></TEXTAREA><br></TD>
</TR>
</TABLE>
<input type="submit" name="Submit" value="Wyslij">
</form>
<hr>
<a href="index.php">Wróć do spisu</a>
</body>
</html>
195.205.63.* napisał:
dobra............juz działa:)nowsza wersje mysql wrzucilem
ale swoja droga i tak dziwna sytuacja
Podobne tematy
Blog na PHP i MySQL
Skad sciagnac do PHPBB forum ...
Import postów i userów w phpBB
phpBB i inne alternatywy?
Win2003 - Apache - Php - Mysql - PhpMyAdmin - PROBLEM
Problem z PHP
PHP - czy jest funkcja negująca?
"mailto" przez php? pomocy!
Php Notice
Phpbb Czy Ipb
Prośba O Pomoc Z Php
[php] Wybór Miejsca Zapisu Danych...
Forum Na Phpbb
Skad sciagnac do PHPBB forum ...
Import postów i userów w phpBB
phpBB i inne alternatywy?
Win2003 - Apache - Php - Mysql - PhpMyAdmin - PROBLEM
Problem z PHP
PHP - czy jest funkcja negująca?
"mailto" przez php? pomocy!
Php Notice
Phpbb Czy Ipb
Prośba O Pomoc Z Php
[php] Wybór Miejsca Zapisu Danych...
Forum Na Phpbb
Działy
Copyright © 2002-2024 | Prywatność | Load: 2.44 | SQL: 1 | Uptime: 753 days, 9:41 h:m |
Wszelkie uwagi prosimy zgłaszać pod adresem eddy@heh.pl