Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Usuwanie zduplikowanych wierszy z tablicy
-Mesajah-
post
Post #1





Goście







Witam,

Mam taki kodzik:

  1. $query = $_GET['query']." ".$_GET['field_name']." LIKE '".mysql_real_escape_string($input)."%'";
  2.  
  3. if($limit > 0) $query .= " LIMIT $limit";
  4.  
  5. $result = mysql_query($query, $link);
  6.  
  7. while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  8. $row2=$row[$_GET['field_name']];
  9. $row2 = str_replace('-', '', $row2);
  10. $aResults[] = array( "id"=>0,"value"=>strtolower($row2));
  11. }



W $aResults[] (po translacji strlower) pojawiają mi się zdublowane rekordy.
Chciałbym pozbyć się wszystkich powtórzeń i zostawić tylko unikalne elementy.
Jak to zrobić najlepiej ?

BTW A czy można w zapytaniu użyć distincta który jest case insensitive ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Valdi_B
post
Post #2





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Jestem zaskoczony. Sprawdziłem Twój kod na swoich przykładowych danych i (w mnie) powtórzenia się eliminują.
Podejrzenie: A może gdzieś na początku pola masz spację?
(końcowe spacje nie powinny mieć znaczenia, bo baza danych je "obcina").

Dla sprawdzenia zmień pętlę na:
  1. foreach ($rob as $tt) {
  2. $aResults[] = array( "id"=>0, "value"=>$tt, "dlug"=>strlen($tt));
  3. }
  4. print_r($aResults);
i dla powtarzających się tekstów porównaj "dlug".

Edit:
Zrobiłem jeszcze eksperyment ze wstawieniem do tekstów polskich liter i widzę, że:
1. Domyślnym kodowaniem po mysql_connect(...) jest latin1, natomiast ja mam i bazę i stronę w UTF-8.
Po otwarciu b.d. należy dać: mysql_set_charset('utf8');
2. Przekodowanie na małe litery trzeba robić przez mb_strtolower($row2, 'UTF-8');
Zwykła funkcja strtolower(...) wstawia za polskie znaki "?".

Może już sam do tego doszedłeś, ale na wszelki wypadek - wspominam o tym.

Ten post edytował Valdi_B 7.03.2011, 13:05:10
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 20:39