Yani benim mysql veritabanında bir tablo arar bir arama özelliği olan bu web sitesi var. Şu anda veritabanı 1108 satır var. Böyle Sanatçı ve Albüm gibi müzik bilgilerini içerir. Bir sanatçı adı veya albüm adında olmak için her karakter için olası beri, ben veritabanına eklenmeden önce bu değişkenlerin her urlencoded ettik. Aşağıya bakın:
$artist = urlencode($_POST['artist']);
$album = urlencode($_POST['album']);
Yani şimdi ben veritabanına yeni bir giriş ekledik ve urlencoded gereken karakterler içerdiğini iddia sağlar. Veritabanı ince onu gösteriyor.
Şimdi arama gitmek istiyorum.
Yabancı karakterler çalıştı. Sen burada görebilirsiniz: http://albumarrrt.net/details.php?artist=Ai%20Otsuka her biri işleri için albüm linkine tıklayıp.
Ama şimdi bir kaç sorunlar oluşur.
1 - If you search for '&' the search reads the %26 as nothing. It shows %26 in the address bar, but it reads it as nothing. Here is how it is being read:
$search = $_GET['search'];
if($search == '') {
echo "Please enter a search term :(";
}
Bu veritabanı tarafından okunan almaya başlıyor önce o $ arama ile yapılan tek şeydir.
2 - Bir tek veya çift tırnak için arama yaparsanız, bazı garip şeyler örneği yapar:
Search for " and get No matches found for "%5C%5C%26quot%3B" Search for ' and get No matches found for "%5C%5C%26%23039%3B"
Veritabanı sadece teklif ve başka bir şey için kodunu içeren çünkü, bunu neden yaptığını anlamıyorum.
Bunlar benim arama ile yanlış bulduk sadece iki şey vardır. Belki de ben çok uzun bakarak olmuştur ve bunu bilemiyorum, ama okumak 've' yok neden benim şaşkınlığa düşüren bir şey olarak.
Onto my last question. My current searching method separates each word and adds %'s around it and then uses the LIKE statement to find matches. example:
Search: A bunch of Stuff (word) the mysql query would be like:
SELECT * FROM TABLE WHERE (album LIKE '%A%' AND album LIKE '%bunch%' AND album LIKE '%of%' AND album LIKE '%Stuff%' AND album LIKE '%%28word%29%') OR (artist LIKE '%A%' AND artist LIKE '%bunch%' AND artist LIKE '%of%' AND artist LIKE '%Stuff%' AND artist LIKE '%%28word%29%')
Açıkçası kötü bir fikir bu sunucuda gerginlik bir çok koyuyor, ve ben böyle büyük veritabanı araması için GİBİ ifadeleri kullanarak biliyorum, bu yüzden ne tam metin ya da başka bir yöntem aramaya alternatif bir yolu olurdu?
Soruların ezici miktarda için üzgünüm, ama hepsi sorta birbirleri ile el-ele gidin.
edit: Ok I've fixed my database up, but still have a few questions. Someone suggested to convert my text from utf8 to plain utf, how would I do this?
and I am still getting the problem with the & sign. for example: if you search for & on google it works, however on my site, my POST result for the search query reveals nothing when searching for &.