Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> filtorwanie danych w wyszukiwarce
peklo
post
Post #1





Grupa: Zarejestrowani
Postów: 420
Pomógł: 0
Dołączył: 27.07.2011

Ostrzeżenie: (10%)
X----


Korzystając z przykładowego skryptu nospor dot. wykonania wyszukiwarki stanąłem w jednym miejscu a mianowicie bindowania przesyłanych danych. Mam coś takiego i nie wiem co i jak wstawić żeby te dane zostały przefiltorwane

  1. if (!empty($_POST['nazwa_ogloszenia']))
  2. {
  3. $wh[] = "nazwa_ogloszenia LIKE '%$nazwa_ogloszenia%'";
  4. }
  5. if (!empty($_POST['id_kategoria']))
  6. {
  7. $wh[] = 'id_kategoria = '.'"'.$_POST['id_kategoria'].'"';
  8. }
  9.  
  10. if (!empty($wh))
  11. {
  12. $where = 'WHERE '.implode(' and ', $wh);
  13. $stmt = $pdo -> prepare("SELECT nazwa_ogloszenia,id_kategoria,aktywne FROM ogloszenia ".$where." and aktywne=:aktywne");
  14. $stmt -> bindValue(':aktywne', 1, PDO::PARAM_INT);
  15.  
  16. //i tutaj chodzi mi jak wykonać bindValue dla tego id_kategoria i nazwa_ogloszenia
  17.  
  18. $stmt -> execute();
  19. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
peklo
post
Post #2





Grupa: Zarejestrowani
Postów: 420
Pomógł: 0
Dołączył: 27.07.2011

Ostrzeżenie: (10%)
X----


tak na szybko znowu zmieniłem po nowemu i nic

  1. $username=$_SESSION['user'][4];
  2. $bind = array(
  3. ':aktywne' => 1,
  4. ':username' => $_SESSION['user'][4]
  5. );
  6.  
  7. $where = array(
  8. 'aktywne=:aktywne',
  9. 'username=:username'
  10. );
  11. if (!empty($_POST['nazwa_ogloszenia']))
  12. {
  13. $where[] = "nazwa_ogloszenia LIKE :nazwa_ogloszenia";
  14. $bind[':nazwa_ogloszenia'] = '%'.$_POST['nazwa_ogloszenia'].'%';
  15. }
  16. if (!empty($_POST['id_kategoria']))
  17. {
  18. $where[] = 'id_kategoria = '.'"'.$_POST['id_kategoria'].'"';
  19. $bind[':id_kategoria'] = $_POST['id_kategoria'];
  20. // tj wartośc int z pola select nie wiem czy bindować czy nie
  21. }
  22.  
  23. try
  24. {
  25. $pdo = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  26. $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  27. if ( count( $where ) > 1 )
  28. {
  29. $stmt = $pdo->prepare("SELECT nazwa_ogloszenia,id_kategoria,aktywne FROM ogloszenia WHERE ". implode( ' AND ', $where ) );
  30. $a = $stmt->execute($bind);
  31. }
  32. else
  33. {
  34. $stmt = $pdo->prepare("SELECT nazwa_ogloszenia,id_kategoria,aktywne FROM ogloszenia WHERE aktywne=:aktywne and username=:username");
  35. $stmt -> bindValue(':username', $username, PDO::PARAM_STR);
  36. $stmt -> bindValue(':aktywne', 1, PDO::PARAM_INT);
  37. $stmt -> execute();
  38. $a = $stmt->execute();
  39. }
  40. while($ogloszenia = $a -> fetch())
  41. {
  42.  
  43. //przykładowe dane
  44. echo $ogloszenia['nazwa_ogloszenia'];
  45. }
  46. $stmt -> closeCursor();
  47. }
  48. catch(PDOException $e)
  49. {
  50. echo 'Wystapił błąd.';
  51. }


a skoro mam skrypt wg starego schematu
  1. <input type='text' size='50' class='style7' maxlength='50' name="nazwa_ogloszenia" id="nazwa_ogloszenia">
  2.  
  3. <select name="id_kategoria" class="style7" id="id_kategoria">
  4. <option value=''>--wybierz--</option>
  5. <option value='1'>Dam pracę</option>
  6. //itd
  7. <option>
  8.  
  9. //i wyciagam to czego szukam z tego warunku
  10.  
  11. if (!empty($_POST['nazwa_ogloszenia']))
  12. {
  13. $wh[] = "nazwa_ogloszenia LIKE '%$nazwa_ogloszenia%'";
  14. }
  15. if (!empty($_POST['id_kategoria']))
  16. {
  17. $wh[] = 'id_kategoria = '.'"'.$_POST['id_kategoria'].'"';
  18. }
  19.  
  20. if (!empty($wh))
  21. {
  22. $where = 'WHERE '.implode(' and ', $wh);
  23. select from tabela ".$where."
  24. }
  25. else
  26. {
  27. select * from tabela
  28. }
  29.  
  30. //to nie mogę poprostu wpisać
  31. $stmt -> bindValue(':id_kategoria', $_POST['id_kategoria'], PDO::PARAM_STR);
  32. //itd


Ten post edytował peklo 9.04.2014, 18:16:27
Go to the top of the page
+Quote Post

Posty w temacie
- peklo   filtorwanie danych w wyszukiwarce   9.04.2014, 11:55:39
- - fizzlebubble   Cytataktywne=:aktywne"); Od kiedy to w PHP s...   9.04.2014, 11:58:25
|- - Turson   Cytat(fizzlebubble @ 9.04.2014, 12:58...   9.04.2014, 12:38:37
- - peklo   to jak mam to napisać? bez:?   9.04.2014, 11:59:50
- - fizzlebubble   Spróbuj bez : w obu przypadkach, jednakże nie sądz...   9.04.2014, 12:00:52
- - peklo   ale ja pytałem o co innego. jak przefiltorwać nazw...   9.04.2014, 12:05:37
- - IProSoft   [PHP] pobierz, plaintext $bind = array( ':akty...   9.04.2014, 12:18:09
- - peklo   acha myslwłem że to sprawdzenie mozna wrzucic tuta...   9.04.2014, 12:22:19
- - nospor   nie: $where[] = "nazwa_ogloszenia LIKE ...   9.04.2014, 13:25:33
- - peklo   po wlaczeniu bledów mam tylko to Notice: Undefined...   9.04.2014, 13:46:43
- - Turson   $a = $stmt->execute($bind); whi...   9.04.2014, 13:56:55
- - peklo   kurde nadal nie działa:( A nie da się tego w jakiś...   9.04.2014, 14:11:53
- - nospor   A czymze znowu objawia sie to nie dzialanie?? I t...   9.04.2014, 14:14:08
- - peklo   nospor to niedziałanie objawia się tym że niedział...   9.04.2014, 14:22:40
- - nospor   Czyli nadal masz ten blad? Notice: Undefined varia...   9.04.2014, 14:25:56
- - peklo   wiem że chodzi o zmienną której nie ma. Ok idę po ...   9.04.2014, 14:30:00
- - Turson   Pokaż cały ten kod to łatwiej będzie   9.04.2014, 14:37:36
- - peklo   tak na szybko znowu zmieniłem po nowemu i nic [PH...   9.04.2014, 18:15:51
- - IProSoft   Wrzuć, odpal i napisz co się dzieje. [PHP] pobier...   9.04.2014, 18:59:03
- - peklo   jest to samo co było Call to a member function fet...   9.04.2014, 19:14:20
- - Turson   Możesz bindować po kolei, ale w przypadku tablicy ...   9.04.2014, 19:16:50
- - peklo   no tak tylko że jak to zrobić w pętli? dobra a moż...   9.04.2014, 19:37:19
- - Turson   powiedzmy, że bindujesz wszystko co jest w $_...   9.04.2014, 19:43:45
- - peklo   to juz wtedy nie wpisuje tak: $stmt -> bin...   9.04.2014, 19:54:29
- - ber32   Tu masz linka jak LIKE użyć w pdo www.joomla-cms.c...   9.04.2014, 19:55:55
- - IProSoft   zamień w tym co Ci podałem: [PHP] pobierz, plainte...   9.04.2014, 19:56:54


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: 16.10.2025 - 02:37