2015-05-20 3 views
0

Я буду запускать сайт библии, поэтому я создал базу данных с помощью mySQL по умолчанию charset latin1_swedish_ci, но сайт будет на испанском.Библейский сайт charset с испанскими акцентами поиск в MYSQL

Проблема заключается в том, что книга генезиса использует акценты и так же Éxodo и Жозуй так, когда люди ищут, например:

$getbook = $_GET['L']; 
$bible = mysqli_query($database, "SELECT * FROM `bible` WHERE `book` LIKE '%$getbook%'"); 

Если человек ищет Бытия без акцентов есть результаты, но если люди ищут GENESIS С акцентом тогда результатов нет.

Вот сценарий я показываю результаты:

<?php 
$server = 'localhost';$user = 'username';$pass = 'password';$source = 'this'; 
$database = @mysqli_connect ($server, $user, $pass, $source) OR die ('Could not connect to MySQL: ' . mysqli_connect_error()); 
header ('Content-type: text/html; charset=iso-8859-15'); 
$getbook = $_GET['L']; 
$bible = mysqli_query($database, "SELECT * FROM `bible` WHERE `book` LIKE '%$getbook%'"); 
while($show = mysqli_fetch_assoc($bible)) { 
?> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15"> 

<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0"> 
    <tr> 
    <td width="10%">Chapter</td> 
    <td width="10%">Verse</td> 
    <td width="80%">Text</td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    </tr> 
</table> 
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0"> 
    <tr> 
    <td width="10%"><?php echo $show['chapter'] ?></td> 
    <td width="10%"><?php echo $show['verse'] ?></td> 
    <td width="80%"><?php echo $show['text'] ?></td> 
    </tr> 
</table> 
<?php 
} 
?> 

Результаты деятельности текста в порядке единственная проблема, когда вы используете поиск акцентов. Он показывает результаты для Бытия, но не для Генесиса с акцентом.

Вот реальный сайт для теста:

WITH ACCENT: 
http://santabiblia.cl/?L=Génesis 
no results 

WITHOUT ACCENT: 
http://santabiblia.cl/?L=Genesis 
Yes we have results 

Любая идея?

EDIT

База данных выглядит

DB_NAME библия -> Книга - глава - стих - текст

пример

книга = Génesis (с акцентом) глава = 1 стих = 1 = текст = В начале Бог сотворил небо и землю (но на испанском) En el principio, Dios creó los cielos y la tierra.

Структура MYSQL в latin1_swedish_ci, протестирована с latin1_spanish_ci и той же проблемой, протестировано с UTF8, и это хуже

+0

Что хранится в базе данных? – Daan

+0

В базе данных книга хранится как Génesis с акцентом, потому что мне нужно показать тогда в результатах слово с примером акцента ECHO $ ​​book – Cardinale

+0

Сразу после подключения сделайте '$ database -> set_charset ('latin1'); –

ответ

0

Вам нужно будет изменить сценарий, который направляющее L и URL закодировать его, в то время как принимающий скрипт URL расшифровывает его.

+0

как это сделать, мой друг? – Cardinale

+0

Я установил $ getbook = html_entity_decode ($ _ GET ['L']); и он отлично работает без необходимости его кодирования раньше. Это нормально или, может быть, иногда сбой? – Cardinale

+0

Ваша переменная не является URL-адресом, она должна выглядеть как 'G% C3% A9nesis', а затем вы можете использовать 1urldecode ($ _ GET ['L']) 1 –

Смежные вопросы