Unedliche Geschichte: AJAX und Zeichenkodierung....

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Unedliche Geschichte: AJAX und Zeichenkodierung....

    Ich weiß, dass dieses Thema hier sowie in Internet öffters bearbeitet ist.
    Allerdings ich habe dieses Problem irgendwie nicht hinbekommen!

    Anbei mein Problem:
    in Inputfeld werden die gesuchte Wörter eingegeben. Sobald ich Wörter mit Umlaut eingebe, findet query in DB nichts! Dies gilt auch für Landesspezifische Zeichens. Solche Zeichens (=Buchstaben) werden in DB (MySQL) als "ý, Þ, þ" dargestellt Die Latin Umlaute wie "ö.ä,ü,Ö,Ü.." werden in DB genauso gespeichert..

    ich setze prototype v1.5.1 ein

    index.html:
    --------------------------------

    Quellcode

    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    2. <html>
    3. <head>
    4. <title>AJAX Live Search</title>
    5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
    6. <style type="text/css" media="screen">@import url(livesearch.css);</style>
    7. <script type="text/javascript" src="prototype.js"></script>
    8. <script type="text/javascript" src="moo.fx.js"></script>
    9. <script type="text/javascript" src="livesearch.js"></script>
    10. </head>
    11. <body>
    12. <strong>Branş, şehir, isim, soyadı, adres gibi herhangi bir anahtar kelime giriniz</strong><br /><br />
    13. <form action="livesearch.php" method="get" enctype="text/plain" name="searchform" id="searchform">
    14. <div align="center">
    15. <input name="s" type="text" id="s" value="" size="100" />
    16. <img src="wait.gif" id="wait" style="display:none" /></div>
    17. </form>
    18. <div id="search-results"></div>
    19. <br/>
    20. <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><a href="http://www.merhaba.info" target="_blank" style="text-decoration:none"><font color="#000000"><strong>&copy;Merhaba Werbeagentur</strong></font></a> - Umsetzung: <a href="mailto:e-devrim@t-online.de"><font color="#000000"><strong>Devrim Eryüksel</strong></font></a></font></div>
    21. </body>
    22. </html>
    Alles anzeigen

    ---------------------------------

    Livesearch.js:
    ---------------

    Quellcode

    1. function activateSearch() {
    2. if ($('searchform')) {
    3. $('searchform').onsubmit = function() { doSearch();return false; };
    4. anim = new fx.Height('search-results', {duration: 400});
    5. anim.hide();
    6. new Form.Element.Observer('s', 1, doSearch);
    7. is_searching = false;
    8. }
    9. }
    10. function doSearch() {
    11. // Se la ricerca è già in corso, non si fa nulla
    12. if (is_searching) return false;
    13. s = $F('s');
    14. anim.hide();
    15. // Se il campo di ricerca è vuoto..
    16. if (s == '') return false;
    17. is_searching = true;
    18. Element.show($('wait'));
    19. // Setup the parameters and make the ajax call
    20. pars = Form.serialize('searchform');
    21. var myAjax = new Ajax.Request(
    22. 'livesearch.php',
    23. {
    24. method: 'get',
    25. parameters: pars,
    26. onComplete:doSearchResponse
    27. }
    28. );
    29. }
    30. function doSearchResponse(response) {
    31. $('search-results').innerHTML = response.responseText;
    32. anim.toggle();
    33. Element.hide($('wait'));
    34. is_searching = false;
    35. }
    36. Event.observe(window, 'load', activateSearch, false);
    Alles anzeigen

    ----------------------------

    livesearch.php:
    ----------------

    Quellcode

    1. <?php
    2. $search = $_GET['s'];
    3. $connection = @mysql_connect("localhost","db-name","pass");
    4. @mysql_select_db("db-name", $connection);
    5. $query = "SELECT * FROM rehber WHERE keywords LIKE '%".$search."%' OR firma LIKE '%".$search."%'";
    6. echo "query: ".$query."<br><br>";
    7. $result = mysql_query($query);
    8. if(mysql_num_rows($result) == 0) {
    9. echo "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\" color= \"#FF0000\">Arad?ð?n?z anahtar kelimeye uygun sonuç bulunamadý...</font>";
    10. return;
    11. }
    12. while($row = mysql_fetch_assoc($result)) {
    13. $title = str_replace($search, "<span style=\"background-color: #FFCECE\">".$search."</span>", $row['firma']);
    14. $description = str_replace($search, "<span style=\"background-color: #FFCECE\">".$search."</span>", $row['firma']);
    15. echo "<a href=\"cat/".$row['firma']."#".$row['id']."\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">".$title."</a></font><br/>\n";
    16. echo "<small>".$description."</small><br/><br/>\n";
    17. }
    18. @mysql_close($connection);
    Alles anzeigen

    ?>
    -----------------------

    Kann jemand mir ein Weg zeigen wie ich die Umlautproblematik in Griff bekomme?

    Danke im Voraus.
  • Lass die mal ausgeben, was du alles bekommst:

    Quellcode

    1. <?php
    2. $search = $_GET['s'];
    3. echo $search.'<br />';
    4. echo utf8_encode($search).'<br />';
    5. echo utf8_decode($search).'<br />';
    6. .....


    Im Query solltest du übrigens mysql_real_escape_string verwenden - sonst ist sie schnell gehackt. Stichwort SQL Injections.

    Quellcode

    1. WHERE keywords LIKE '%".mysql_real_escape_string($search)."%'
  • Ich hatte das gleiche Problem und hab es einfach nicht wegbekommen, obwohl
    ich alle Tips hier im Forum versucht habe.

    Mittlerweile habe ich eine Lösung gefunden, ich habe mit den HTML Entity Converter
    geladen und alle Umlaute in HTML Notationen konventieren lassen.

    Seitdem geht alles einwandfrei, das Programm bekommst du hier:
    http://www.shareware.de/software/Programm_HTML_Entity_Converter_16438.html
  • "Remix[a schrieb:

    holic"]Ich hatte das gleiche Problem und hab es einfach nicht wegbekommen, obwohl
    ich alle Tips hier im Forum versucht habe.

    Mittlerweile habe ich eine Lösung gefunden, ich habe mit den HTML Entity Converter
    geladen und alle Umlaute in HTML Notationen konventieren lassen.

    Seitdem geht alles einwandfrei, das Programm bekommst du hier:
    http://www.shareware.de/software/Programm_HTML_Entity_Converter_16438.html


    Ich verstehe nicht so ganz, wie dieses Program mir helfen soll? die konvertierung soll "live" statt finden. Ich weiß ja nicht was die Leute in Inputfeld wann und was eingeben.

    Kannst du bitte etwas erläutern wie du hinbekommen hast?