Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][MySQL][PHP]Wyszukiwanie danych z ze znakiem "'"
@rtur
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


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. });


Ten post edytował @rtur 21.12.2014, 08:20:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Sprawdź czy ten kod znajduje jakikolwiek rekord na jakąkolwiek frazę. Dotrzesz do problemu.
Go to the top of the page
+Quote Post
@rtur
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


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)?

Ten post edytował @rtur 23.12.2014, 00:06:27
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Czy na pewno klasa DB pozwala na bindowanie wartości przed przygotowaniem zapytania?
Go to the top of the page
+Quote Post
@rtur
post
Post #5





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


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ę
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Skoro tak to działa to ok.


htmlentities($_POST['a'],ENT_QUOTES);
Albo raczej $_POST['art'], bo taką zmienną wysyłasz.
Go to the top of the page
+Quote Post
@rtur
post
Post #7





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


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. ...


Ten post edytował @rtur 26.12.2014, 22:43:12
Go to the top of the page
+Quote Post

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: 25.12.2025 - 07:27