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
-Mesajah-
post
Post #2





Goście







1. Pomijam kwestie ogonków bo to już inna sprawa (baze mam w utf, ale akurat tą tabele w latin2 a strona znowu utf;)), ale
nawet przy typowo angielskich nazwach są powtórzenia.

2. Nie mogę wyświetlić danych za pomocą print_r, gdyż skrypt działa jakby ajaxowa podpowiedź na stronie,
i gdy go wywołuje z parametrem to dostaje 1000 błędów, a bezpośrednio nie widzę co zwraca print_r.

3. Może wpływ na wszystko ma dalsza część kodu, której nie podałem:

  1. $link = mysql_connect($host, $user, $pass);
  2. mysql_select_db($name, $link);
  3.  
  4. if ($len)
  5. {
  6. //$query = $_GET['query']." MATCH(".$_GET['field_name'].") AGAINST ('".mysql_real_escape_string($input)."*' IN BOOLEAN MODE)";
  7. //if(!empty($_GET['orderby'])) $query .= " ORDER BY ".$_GET['orderby'];
  8. $query = $_GET['query']." ".$_GET['field_name']." LIKE '".mysql_real_escape_string($input)."%'";
  9.  
  10. if($limit > 0) $query .= " LIMIT $limit";
  11.  
  12. $result = mysql_query($query, $link);
  13.  
  14. while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  15. $row2=$row[$_GET['field_name']];
  16. $row2 = str_replace('-', '', $row2);
  17. $rob[] = strtolower($row2);
  18. }
  19.  
  20. $rob = array_unique($rob);
  21. foreach ($rob as $tt) {
  22. $aResults[] = array( "id"=>0,"value"=>$tt);
  23. }
  24.  
  25. }
  26.  
  27. header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
  28. header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
  29. header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  30. header ("Pragma: no-cache"); // HTTP/1.0
  31. header("Content-Type: application/json");
  32.  
  33. echo "{\"results\": [";
  34. $arr = array();
  35. for ($i=0;$i<count($aResults);$i++) {
  36. $arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"".$aResults[$i]['value']."\", \"info\": \"\"}";
  37. }
  38. echo implode(", ", $arr);
  39. echo "]}";


Czy ta dalsza część może coś zmieniać ?

BTW
Cytat
Zabezpieczenie w postaci mysql_real_escape_string( $input ), podczas gdy większa część zapytania pochodzi bezpośrednio z $_GET wygląda tak:
http://3.bp.blogspot.com/_6B8tPuW7TwQ/TQim...0/peclogate.jpg


Dobre ;]
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: 17.10.2025 - 08:09