Πρόβλημα Ελληνικών χαρακτήρων σε μηχανή αναζήτησης

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
acerbitch
Δημοσιεύσεις: 37
Εγγραφή: 02 Φεβ 2009 11:33

Πρόβλημα Ελληνικών χαρακτήρων σε μηχανή αναζήτησης

Δημοσίευση από acerbitch » 21 Φεβ 2012 16:03

Αγαπητοί φίλοι του freestuff,

Αντιμετωπίζω το εξής πρόβλημα και θα ήθελα όποιος γνωρίζει τη λύση να τη μοιραστεί μαζί μου. Έχω φτιάξει μία μηχανή αναζήτησης σε PHP & MySQL. Όλα λειτουργούν καλά με αγγλικούς χαρακτήρες αλλά όχι με ελληνικούς.

Ας ξεκινήσω όμως από την αρχή, η Βάση αποτελείται από έναν πίνακα (search) ο οποίος είναι τύπου MyISAM και κωδικοποίησης utf-general_ci. Αποτελείται από 5 πεδία με κωδικοποίηση utf8-general_ci το καθένα.

Έκανα εισαγωγή κάποια στοιχεία στα Ελληνικά από το phpMyAdmin για να κάνω τις απαραίτητες δοκιμές. Μέσα σε αυτά τα στοιχεία έβαλα επίτηδες και κάποια με αγγλικούς χαρακτήρες.

Παρακάτω σας παραθέτω τους κώδικες από τα 2 αρχεία της μηχανής, το ένα είναι HTML και το άλλο php.

1. engine.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Αναζήτηση</title>
</head>

<body>
<br>

<div align="left">
<form action="search.php" method="get">
<input type="text" name="k" size="40" >
<input type="submit" value="Αναζήτηση">
</form>
</div>
<br><br>

</body>
</html>

2. search.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Αποτελέσματα αναζήτησης</title>

<style type="text/css">
<!--
.style1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: small;
}
-->
</style>

</head>

<body>
<br>

<div align="left">
<form action="search.php" method="get">
<input type="text" name="k" size="40" value="<?php echo $_GET['k']; ?>" >
<input type="submit" value="Αναζήτηση">
</form>
</div>
<br>

<hr />

<?php

$k=$_GET['k'];
$terms=explode(" ", $k);
$query="SELECT * FROM search WHERE ";

foreach($terms as $each){
$i++;
if($i==1)
$query .= "keywords LIKE '%$each%'";
else
$query .= "OR keywords LIKE '%$each%'";
}

// Σύνδεση στη ΒΔ
mysql_connect("host", "username", "password");
mysql_select_db("database");
$query=mysql_query($query);
$numrows=mysql_num_rows($query);

if($numrows>0){
while($row=mysql_fetch_assoc($query)){
$id=$row['id'];
$title=$row['title'];
$description=$row['description'];
$keywords=$row['keywords'];
$link=$row['link'];

echo "<span class='style1'><b><a href='$link'>$title</a></b>
$description</span><br>";
}
}

// Αποσύνδεση από τη ΒΔ
mysql_close();

?>

</body>
</html>

Η αναζήτηση και τα αποτελέσματα λειτουργούν καλά μόνο με αγγλικούς χαρακτήρες, θα μπορούσε κάποιος να βοηθήσει έτσι ώστε να γίνεται σωστή χρήση και των ελληνικών χαρακτήρων;

Ευχαριστώ.

Η δημιουργία της μηχανής αναζήτησης υπάρχει με τη μορφή tutorial στο youtube http://www.youtube.com/watch?v=PdM2ZIG9 ... re=related

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Πρόβλημα Ελληνικών χαρακτήρων σε μηχανή αναζήτησης

Δημοσίευση από burnmind » 21 Φεβ 2012 16:07

Αφότου συνδεθείς με τη βάση, δοκίμασε να τρέξεις το παρακάτω query πριν από οποιοδήποτε άλλο:

Κώδικας: Επιλογή όλων

SET NAMES 'utf8'
Επίσης, διάβασε αυτό.

acerbitch
Δημοσιεύσεις: 37
Εγγραφή: 02 Φεβ 2009 11:33

Πρόβλημα Ελληνικών χαρακτήρων σε μηχανή αναζήτησης

Δημοσίευση από acerbitch » 21 Φεβ 2012 16:33

burnmind σε ευχαριστώ πολύ! Αυτό ακριβώς ήθελε!! :P

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Πρόβλημα Ελληνικών χαρακτήρων σε μηχανή αναζήτησης

Δημοσίευση από burnmind » 21 Φεβ 2012 16:35

Να 'σαι καλά :)

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 3 επισκέπτες