Σύγκριση string σε UTF

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

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

Απάντηση
rebel3
Δημοσιεύσεις: 11
Εγγραφή: 29 Σεπ 2009 21:09

Σύγκριση string σε UTF

Δημοσίευση από rebel3 » 29 Σεπ 2009 21:17

Γεια χαρά!

Θέλω να κάνω ένα απλό search αλλά αντιμετωπίζω πρόβλημα με τα ελληνικά πού είναι σε UTF-8 στην βάση.

Αυτό που προσπαθώ να κάνω είναι να συγκρίνω την λέξη προς αναζήτηση με μια καταχώρηση στη βάση και αν λέξη είναι ίδια η περιέχετε στην καταχώρηση της βάσης να δίει αποτέλεσμα.
Ενώ τους ascii χαρακτήρες κάνω κάπως έτσι την αναζήτηση :

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

$var = @$_GET['search'] ;
$trimmed = trim($var); 
$trimmed_lower = strtolower($trimmed);
$query = "select * from user_cv where username like \"%$trimmed%\" OR email like \"%$trimmed%\" OR name like \"%$trimmed%\" 
  order by username";
και δουλέυει κανονικά για τους UTF-8 χαρακτήρες δεν δουλεύει....

Δοκίμασα κάτι τέτοιο :

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

$cur_encoding = mb_detect_encoding($trimmed);
if($cur_encoding == "UTF-8"){
		$trimmed_utf = utf8_encode($var);
		echo $trimmed_utf;
	  	$query = "select * from user_cv where name like \"%$trimmed_utf%\" 
  		order by username"; 
αλλά και πάλι δεν μου δουλεύει...

Τι έχετε να προτείνετε??

Ευχαριστώ!

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

Σύγκριση string σε UTF

Δημοσίευση από fafos » 29 Σεπ 2009 21:26

thn anazhthsh thn kaneis me forma h grafeis sthn dieythynsh tou browser thn leksi?

h selida pou trexei to search einai UTF-8?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

rebel3
Δημοσιεύσεις: 11
Εγγραφή: 29 Σεπ 2009 21:09

Σύγκριση string σε UTF

Δημοσίευση από rebel3 » 29 Σεπ 2009 21:36

Ο χρήστης δίνει σε μία φόρμα την λέξη που θέλει να κάνει αναζήτηση, και ναι η σελίδα είναι σε UTF-8.

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

Σύγκριση string σε UTF

Δημοσίευση από fafos » 29 Σεπ 2009 21:46

to strtolower() den douleuei sta ellhnika...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

rebel3
Δημοσιεύσεις: 11
Εγγραφή: 29 Σεπ 2009 21:09

Σύγκριση string σε UTF

Δημοσίευση από rebel3 » 29 Σεπ 2009 21:58

Δεν το χρησιμοποιώ το strtolower στα ελληνικά.

Γενικά αυτό που ψάχνω είναι:
Έχω ένα string σε UTF-8 που είναι η λέξη κλειδί.
Έχω μια καταχώρηση σε UTF-8 σε mysql που είναι ένα ονοματεπώνυμο.
Αυτό που θέλω είναι να τα συγκρίνω και αν είναι ίδια η αν η λέξη κλειδί ή αν περιέχετε στην καταχώρηση.

Γενικά με έναν "μπακάλικο" τρόπο μπορώ να συγκρίνω αν είναι ακριβώς ίδια και δουλεύει.
Το κυρίως πρόβλημα είναι πως να χειριστώ τα string σε UTF για να δώ αν εμπεριέχετε το ένα μέσα στο άλλο.

Αν πχ βάλει ο χρήστης Νίκος
να του βγάλει πχ Νίκος Παπαδόπουλος, Νίκος Σωτηριάδης κτλ κτλ....

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

Σύγκριση string σε UTF

Δημοσίευση από fafos » 29 Σεπ 2009 22:01

rebel3 έγραψε:Δεν το χρησιμοποιώ το strtolower στα ελληνικά.
kai auto ti einai?: $trimmed_lower = strtolower($trimmed);
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

rebel3
Δημοσιεύσεις: 11
Εγγραφή: 29 Σεπ 2009 21:09

Σύγκριση string σε UTF

Δημοσίευση από rebel3 » 29 Σεπ 2009 22:10

Το χρησιμοποιώ μόνο στούς ascii χαρακτήρες.
Αν το search string είναι UTF-8 γίνετε έλεγχος και μπαίνει σε if.

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

$cur_encoding = mb_detect_encoding($trimmed);
if($cur_encoding == "UTF-8"){ }

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

Σύγκριση string σε UTF

Δημοσίευση από fafos » 29 Σεπ 2009 22:14

rebel3 έγραψε:Το χρησιμοποιώ μόνο στούς ascii χαρακτήρες.
Αν το search string είναι UTF-8 γίνετε έλεγχος και μπαίνει σε if.

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

$cur_encoding = mb_detect_encoding($trimmed);
if($cur_encoding == "UTF-8"){ }
poioi ascii xarakthres? h forma se UTF den einai? pos tha steielei ascii xarakthres?

katarghse ola ta functions pou trexeis pano sto $_GET['search'] kai dokimase to sketo...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

rebel3
Δημοσιεύσεις: 11
Εγγραφή: 29 Σεπ 2009 21:09

Σύγκριση string σε UTF

Δημοσίευση από rebel3 » 29 Σεπ 2009 22:32

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

if( !empty ( $_GET['search'] ) && $_GET['search_option']=="Μέλη" ){
  $var = @$_GET['search'] ;
  $trimmed = trim($var); 
  $trimmed_lower = strtolower($trimmed);


$limit=10; 


if ($trimmed == "")
  {
  echo "<p>Πληκτρολογήστε μια λέξη...</p>";
  exit;
  &#125;


if &#40;!isset&#40;$var&#41;&#41;
  &#123;
  echo "<p>Δεν έχει οριστεί λέξη προς αναζήτηση!</p>";
  exit;
  &#125;


$query = "select * from user_cv where username like \"%$trimmed%\" OR email like \"%$trimmed%\" OR name like \"%$trimmed%\" 
  order by username"; 

 $numresults=mysql_query&#40;$query&#41;;
 $numrows=mysql_num_rows&#40;$numresults&#41;;
 
 $query2 = "select * from user_cv where username like \"%$trimmed_lower%\" OR email like \"%$trimmed_lower%\" OR name like \"%$trimmed_lower%\"  
  order by username"; 

 $numresults2=mysql_query&#40;$query2&#41;;
 $numrows2=mysql_num_rows&#40;$numresults2&#41;;


if &#40;$numrows == 0 && $numrows2 == 0&#41;
  &#123;
  echo "<h4>Αποτελέσματα</h4>";
  echo "<p>Δυστυχώς η αναζήτηση σας&#58; &quot;" . $trimmed . "&quot; επέστρεψε μηδέν αποτελέσματα</p>";

// google
 echo "<p><a href=\"http&#58;//www.google.com/search?q=" 
  . $trimmed . "\" target=\"_blank\" title=\"Look up 
  " . $trimmed . " on Google\">Κάντε κλίκ</a> για να δοκιμάσετε στο Google</p>";
  &#125;


  if &#40;empty&#40;$s&#41;&#41; &#123;
  $s=0;
  &#125;


  $query .= " limit $s,$limit";
  $result = mysql_query&#40;$query&#41; or die&#40;"Couldn't execute query"&#41;;
  $result2 = mysql_query&#40;$query2&#41; or die&#40;"Couldn't execute query"&#41;;

echo "<p>Αναζητήσατε για&#58; &quot;" . $var . "&quot;</p>";


echo "Αποτελέσματα";
$count = 1 + $s ;


echo "<ul>";
  while &#40;$row= mysql_fetch_array&#40;$result&#41;&#41; &#123;
						echo '			<li>'."\n";
						echo '				<a href="members.php?profile_view='.$row&#91;'username'&#93;.'">'.$row&#91;'username'&#93;.''."</a>\n";
						echo '				<em>   &#40;'.$row&#91;'email'&#93;.'&#41;</em>'."\n";
						echo '			</li>'."\n";	
  &#125;
  while &#40;$row= mysql_fetch_array&#40;$result2&#41;&#41; &#123;
						echo '			<li>'."\n";
						echo '				<a href="members.php?profile_view='.$row&#91;'username'&#93;.'">'.$row&#91;'username'&#93;.''."</a>\n";
						echo '				<em>   &#40;'.$row&#91;'email'&#93;.'&#41;</em>'."\n";
						echo '			</li>'."\n";	
  &#125;
  echo "</ul>";
Ο κώδικας είναι ο παραπάνω.
Όταν το string είναι στα αγγλικά δουλεύει κανονικά, όταν είναι στα ελληνικά τότε βγάζει.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\km\search.php on line 88

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\km\search.php on line 94


Δοκίμασα να βγάλω τις συναρτήσεις απο το search string.

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

Σύγκριση string σε UTF

Δημοσίευση από Apostolis_38 » 01 Οκτ 2009 11:27

Το μήνυμα αυτό σου λέει οτι κάτι δεν πάει καλά με το query σου.

Βάλε ένα var_dump($query - $result κ.λ.π κ.λ.π.) να δείς τι τρέχει.

rebel3
Δημοσιεύσεις: 11
Εγγραφή: 29 Σεπ 2009 21:09

Σύγκριση string σε UTF

Δημοσίευση από rebel3 » 02 Οκτ 2009 20:56

Οκ το πρόβλημα λύθηκε! ευχαριστώ όσους απάντησαν!!

Απάντηση

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

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

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