Ελληνικά στην $_GET['']

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

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

Απάντηση
hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 28 Φεβ 2011 13:54

Καταρχήν (μιας που είμαι νέος χρήστης) γεια σε όλους!

Έχω μία βάση σε utf-8 (collation utf8_general_ci). Από έναν πίνακα της βάσης πρέπει να κάνω μία αναζήτηση του επιθέτου, το οποίο έχει εγγραφές στα ελληνικά.

Στον php κώδικα χρησιμοποιώ το εξής select:

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

SELECT * FROM PERSONS WHERE SURNAME LIKE ".$_GET['surname']."%";
Οταν δοκιμάζω το script από τον browser με αγγλικούς χαρακτήρες στο surname, μου τρέχει μια χαρά. Όταν χρησιμοποιώ ελληνικούς χαρακτήρες (π.χ. surname=παπ) δε μου επιστρέφει τίποτα, ενώ θα έπρεπε.

Μήπως ξέρει κάποιος τη λύση?

Ευχαριστώ!

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Ελληνικά στην $_GET['']

Δημοσίευση από korgr » 28 Φεβ 2011 14:14

Πρώτον κάνε μια var_dump($_GET['surname']) για να σιγουρευτείς αν περιέχει "παπ".
Δεύτερον φρόντισε μετά το connection στην βάση σου να έχεις την

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

mysql_query("SET NAMES 'UTF8'");
Επίσης να έχεις ορίσει utf-8 και στο encoding της html

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 28 Φεβ 2011 14:31

Το έχω βάλει το SET NAMES 'UTF8' και η GET έχει όντως το πεδίο που έχω βάλει, αλλα πάλι δε μου φέρνει δεδομένα.

Καμιά άλλη πρόταση?

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Ελληνικά στην $_GET['']

Δημοσίευση από cpulse » 28 Φεβ 2011 14:37

Πρέπει να βάλεις quotes

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

"SELECT * FROM PERSONS WHERE SURNAME LIKE '".$_GET['surname']."%'";
Και επίσης πρέπει να βάλεις ένα σωστό escaping γιατί έτσι ο κώδικας σου είναι ανοιχτός σε sql injections

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

"SELECT * FROM PERSONS WHERE SURNAME LIKE '" . mysql_real_escape_string($_GET['surname']) . "%'";

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 28 Φεβ 2011 14:49

Όχι δεν φταίει αυτό. Σας παραθέτω όλο το php script αν σας βοηθά περισσότερο.

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

$link = mysql_connect($dbhost, $dbuser,$dbpass);

mysql_select_db("per_test", $link);
mysql_query("SET NAMES 'utf8'", $link);

$test = mysql_real_escape_string($_GET['surname']);
var_dump($test);

$query = "SELECT * FROM person where Surname like '$test%'";
$q=mysql_query($query, $link);
Δε μπορώ να βγάλω άκρη!!

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Ελληνικά στην $_GET['']

Δημοσίευση από Apostolis_38 » 28 Φεβ 2011 15:32

Δοκίμασε αυτό:

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

SELECT * FROM person where Surname like '%".$test."%'
Επίσης, το Surname είναι με κεφαλαίο S;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Ελληνικά στην $_GET['']

Δημοσίευση από fafos » 28 Φεβ 2011 15:46

kane ena echo $query; kai trexe mia anazhthsh sta ellhnika gia na deis ti gyrnaei..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 28 Φεβ 2011 16:03

Όταν η κωδικοποίηση του browser είναι utf-8 το echo είναι:

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

SELECT * FROM Doctor where Doctor_Surname like '���%'
ενώ όταν είναι ISO είναι:

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

SELECT * FROM Doctor where Doctor_Surname like 'παπ%'
Αλλά καμία περίπτωση δεν επιστρέφει τα data που θα έπρεπε!!!

Επίσης χρησιμοποιώ αυτό το κομμάτι κώδικα:

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

while($e=mysql_fetch_assoc($query))
	$output[]=$e;
print(json_encode($output));
@mysql_close($link);
P.S. Το Select πρέπει να είναι σωστό γιατί δουλεύει σωστά στο phpmyadmin και για ελληνικά και για αγγλικά δοκιμαστικά δεδομένα. Απλά δε μου δουλεύει η php στο ελληνικό GET!!

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Ελληνικά στην $_GET['']

Δημοσίευση από fafos » 28 Φεβ 2011 16:17

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

mysql_query("SET NAMES 'utf8' "); 
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Ελληνικά στην $_GET['']

Δημοσίευση από korgr » 28 Φεβ 2011 16:21

fafos δεν είναι περίεργο που του επιστρέφει κανονικά τα ελληνικά με iso ενώ η βάση λέει πως είναι utf-8?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Ελληνικά στην $_GET['']

Δημοσίευση από fafos » 28 Φεβ 2011 16:24

korgr έγραψε:fafos δεν είναι περίεργο που του επιστρέφει κανονικά τα ελληνικά με iso ενώ η βάση λέει πως είναι utf-8?
profanos h selida einai sosmenh se ANSI kai oxi se utf-8...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 28 Φεβ 2011 16:38

Στην ουσία αυτό που θέλω είναι ενα php service που να μου επιστρέφει τα δεδομένα της βάσης.

Όταν βάλω κενό πεδίο στο username μου δουλεύευι σωστά και επιστρέφει το εξής:

SELECT * FROM Doctor where Doctor_Surname like '%'
[{"person_id":"1","person_name":"\u03a7\u03a1\u0397\u03a3\u03a4\u039f\u03a3","person_surname":"\u03a0\u0391\u03a0\u0391\u0394\u039f\u03a0\u039f\u03a5\u039b\u039f\u03a3"},{"person_id":"2","person_name":"\u0393\u0399\u039f\u03a5\u039b\u0397","person_surname":"\u03a4\u0396\u0395\u03a1\u039c\u03a0\u0399\u039d\u039f\u03a5"}]

Μόνο αμα βάλω πεδίο με ελληνικούς χαρακτήρες δε δουλεύει!

Το php αρχείο έχει φτιαχτεί σε Notepad++ με κωδικοποίηση utf-8 without BOM.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Ελληνικά στην $_GET['']

Δημοσίευση από fafos » 28 Φεβ 2011 16:40

sthn vash soy fainontai ellhnikoi xarakthres otan thn koitas me to phpmyadmin?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

hamilton000
Δημοσιεύσεις: 13
Εγγραφή: 28 Φεβ 2011 12:35

Ελληνικά στην $_GET['']

Δημοσίευση από hamilton000 » 28 Φεβ 2011 16:42

Ναι.

Και αν τρέξω το SELECT στο myadmin μου επιστρέφει τα data σωστά!

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Ελληνικά στην $_GET['']

Δημοσίευση από fafos » 28 Φεβ 2011 16:58

ego vlepo oti typonei entities characters (u03a7\u03a1\u0397 klp).. trexei kapoia function sthn ektyposh?

gia dokimase na vgaleis to var_dump($test);
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Απάντηση

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

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

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