Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Problem z apostrofem w rekordzie
RafalBeginner
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.06.2015

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


Hej,

Pracuję nad stworzeniem prostego słownika branżowego na zasadzie wyszukiwarka + funkcja "Zobacz również" z hasłami zawierającymi wyszukiwane słówko. Jest to słownik angielsko-polski. Jestem językowcem, nie programistą, proszę o wyrozumiałość smile.gif

Udało mi się stworzyć prymitywny skrypt, który działa i wyświetla podobne hasła zawierające wpisane słówko w formie przycisków (później ostylowanych), które po kliknięciu wracają do wyszukiwania (tak jak "czy chodziło Ci o..." w Google).

Problem polega na tym, że jeśli mam zwrot z apostrofem np. "John's house" to mi ładnie wyszukuje. Ale jeśli wpiszę "house" i wyskoczy mi podpowiedź typu Zobacz również "John's house" to już kliknięcie na "John's house" nie działa. Nie wyskakuje żaden błąd.

Wiem, że problem był wałkowany kilkakrotnie, ale nie umiem dalej znaleźć błędu. Rekordy ładuję do bazy danych przez mysql_real_escape_string i w bazie wyświetlają się pięknie, z apostrofami. Nawet na przyciskach "Zobacz również" wyświetla się hasło z apostrofem, ale po kliknięciu klapa.

  1. <?php
  2. if(isset($_POST['wpisane']))
  3. {
  4. $slowo = $_POST['wpisane'];
  5. $slowo = trim($slowo);
  6.  
  7. $serwer = 'localhost';
  8. $uzytkownik = 'root';
  9. $haslo = 'password';
  10.  
  11. $polaczenie = mysql_connect($serwer, $uzytkownik, $haslo);
  12. mysql_select_db('slownik', $polaczenie) or die ('Error: ' . mysql_error());
  13.  
  14. // WYSZUKIWANIE HASŁA
  15. mysql_query("SET NAMES 'utf8'");
  16. $wyniki1 = mysql_query("SELECT angielski, polski FROM slownik WHERE trim(angielski) = '$slowo'");
  17.  
  18. //pobieramy cały wiersz, potem element z kolumny
  19. $kolumna1 = mysql_fetch_array($wyniki1);
  20. $wyszukaj = $kolumna1['polski'];
  21. $source = $kolumna1['angielski'];
  22.  
  23. // generujemy gotowe tłumaczenie
  24. echo $kolumna1['polski'];
  25. //KONIEC WYSZUKIWANIA
  26.  
  27.  
  28.  
  29. // WYSZUKIWANIE HASEŁ ZAWIERAJĄCYCH WPROWADZONE SŁÓWKO:
  30. mysql_query("SET NAMES 'utf8'");
  31. mysql_query("CREATE FULLTEXT INDEX angielski ON slownik (angielski);");
  32.  
  33. //wyszukujemy wszystkie kolumny, które pasują do wzorca "$slowo"
  34. $podobne = mysql_query("SELECT angielski FROM slownik WHERE MATCH(angielski) AGAINST('$slowo');");
  35. // teraz je wszystkie wyniki wypisujemy w formie przycisków
  36. $wszystkie = array();
  37. while ($row = mysql_fetch_array($podobne)) {
  38. $wszystkie[] = $row['angielski'];
  39. }
  40. $wszystkie1 = array();
  41. $wszystkie1[] = "$slowo";
  42. $wszystkie = array_merge(array_diff($wszystkie,$wszystkie1));
  43. $n = count($wszystkie);
  44. if($n==0)
  45. {
  46. echo '';
  47. }
  48. else
  49. {
  50. echo '<p> Zobacz również:</p>';
  51. for ($i=0;$i<$n; $i++){
  52. //wypisujemy przyciski - po przyciśnięciu danego przycisku skrypt wyszukuje to słowo w słowniku
  53. echo "<form method='post'><button formaction='index.php' name='wpisane' value='$wszystkie[$i]'>$wszystkie[$i]</button></form>";
  54. }
  55. }
  56. //koniec wyszukiwania haseł zawierających wprowadzone słówko. Amen
  57. }
  58. mysql_close($polaczenie);
  59. ?>


Proszę życzliwych o pomoc...
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.08.2025 - 09:13