Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP]Wyszukiwanie danych z ze znakiem "'"
Forum PHP.pl > Forum > Przedszkole
@rtur
Mam w bazie danych wpis który zawiera znak ' przekonwertowany do & #039; za pomocą phpowej funkcji htmlentities, próbuję wyszukać wpisu z tym właśnie znakiem za pomocą ajaxa i nic nie znajduje, mimo że w bazie jest kilka rekordów z ' czemu, wygląda to tak jakby w ajaksie ignorowało zamianę znaku ' na & #039;, można jakoś temu zaradzić?

oto mój kod php dla pliku on.php:
  1. header('Content-Type: text/html; charset=utf-8');
  2. if (isset($_POST['a'])){
  3. $data = array();
  4. $b = trim(htmlentities($_POST['a']));
  5. $db = new DB();
  6. $db->bind('term',$b);
  7. $zapytanie = 'SELECT name FROM post WHERE name LIKE :term';
  8. $c = $db->query($zapytanie);
  9. $rekordow = count($c);
  10. if($rekordow!=0)
  11. {
  12. $data = array(
  13. 'result'=> false,
  14. 'message'=>'rekord istnieje'
  15. );
  16. }
  17. else
  18. {
  19. $data = array(
  20. 'result'=> true,
  21. 'message'=>'rekord nie istnieje'
  22. );
  23. }
  24. header('Content-Type: text/json; charset=utf-8');
  25. echo json_encode($data);
  26. }

formularz:
  1. <form id='' method='post' action='aa.php'>
  2. <input type='text' name='a' id='art' autocomplete='off'><input type='submit' name='wyslano' id='ab' value='dodaj'>
  3. <div id='status'></div>
  4. </form>

ajax:
  1. $(document).ready(function() {
  2. $('form').submit(function(){
  3. var n = $('#art').val().length;
  4. var art = $('#art').val();
  5. var formData = {'art':art};
  6.  
  7. if(n>=2){
  8. $.ajax({
  9. type: 'POST',
  10. url: '/on.php',
  11. data: formData,
  12. dataType: 'json',
  13. cache: false,
  14. success: function(data) {
  15. if(data.result===false){
  16. $('#status').html(data.message).fadeIn("slow");
  17. } else if(data.result===true){
  18. $('#status').html(data.message).fadeIn("slow");
  19. $('#art').val('');
  20.  
  21. }
  22. }
  23. });
  24. }
  25. return false;
  26. });
  27. });
trueblue
Sprawdź czy ten kod znajduje jakikolwiek rekord na jakąkolwiek frazę. Dotrzesz do problemu.
@rtur
no właśnie wszystkie inne znaki są zwracane jako kod np é jest zwracane jako &eacute; , czy & jako &amp; tylko nie apostrof, apostrof zawsze pozostaje apostrofem, nie zamienia się w & #039; (bez spacji), co zrobić aby i apostrof się zmieniał w & #039; (bez spacji)?
trueblue
Czy na pewno klasa DB pozwala na bindowanie wartości przed przygotowaniem zapytania?
@rtur
to jest ta klasa...
https://github.com/indieteq/PHP-MySQL-PDO-Database-Class

myślę że to nie jest problem klasy db tylko ajaxa, przesyłając ajaxem dane z formularza metodą POST znak apostrofu dostaje w konsoli apostrof a nie & #039; każdy inny znak idzie ok, é jest zwracane jako &eacute; , & jako &amp; itp.

zaraz zresztą wywalę pobieranie z bazy zostawię w json same dane z POST['art'] i zobaczę
trueblue
Skoro tak to działa to ok.


htmlentities($_POST['a'],ENT_QUOTES);
Albo raczej $_POST['art'], bo taką zmienną wysyłasz.
@rtur
Cytat(trueblue @ 23.12.2014, 19:46:00 ) *
Skoro tak to działa to ok.


htmlentities($_POST['a'],ENT_QUOTES);
Albo raczej $_POST['art'], bo taką zmienną wysyłasz.

nie bardzo pomogło, nie mam pojęcia czemu ajaxem nie wychodzi zmiana apostrofa, zrobiłem to troszkę inaczej
  1. ...
  2. $b = trim(htmlentities($_POST['a']));
  3. $b = str_replace("'", '& #039;', $b); //oczywiście '& #039' bez spacji
  4. ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.