Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Preg_match dla funkcji wyszukiwania.
Pawelelo520
post 2.08.2017, 18:35:11
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.03.2014

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


Chciałbym prosić o pomoc w napisaniu wyrażenia regularnego, które będzie dzieliło wpisany tekst na istniejący w bazie i dodanie końca wpisanego.
Tzn. Wpisuję " key " > wyszukuje " padlock " < słowo przypisane w bazie.
Gdy wpisuję " key/subpage " > wyszukuje " padlock/subpage ".
I tylko do pierwszego " / " , tzn. gdy wpiszę " key/subpage/subpage1 " to wynik bd : " padlock/subpage/subpage1 ".


Mój kod :
  1. <?php
  2. if(isset($_POST['wyszukaj'])){
  3. require_once('polaczenia.php');
  4. try{
  5. $baza = new PDO('mysql:host='.$host.';dbname='.$db_name.';charset=utf8',
  6. $db_user, $db_password, array(
  7. PDO::ATTR_EMULATE_PREPARES => false,
  8. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
  9. ));
  10. $wyszukaj=$_POST['wyszukaj'];
  11. $min_wartosc = 1;
  12. if(strlen($wyszukaj)>=$min_wartosc)
  13. {
  14. $wyszukaj =htmlspecialchars($wyszukaj);
  15. $zapytanie=$baza->prepare("SELECT * FROM wyszukiwarka WHERE nazwa LIKE :wyszukaj");
  16. $zapytanie->bindValue('wyszukaj', $_POST['wyszukaj'],PDO::PARAM_STR);
  17. $zapytanie->execute(array($wyszukaj));
  18. if($zapytanie->rowCount()>0)
  19. {
  20. while($wynik=$zapytanie->fetch())
  21. {
  22. echo $wynik['nazwa'] . "<br>";
  23. header('location:http://'.$wynik['login']);
  24. }
  25. }
  26. else
  27. {
  28. echo "brak <b> " . $wyszukaj . " </b> w bazie danych ...";
  29. }
  30. }
  31. else
  32. {
  33. echo "";
  34. }
  35. $baza=null;
  36. }catch (PDOException $err){
  37. echo "ERROR:: ". $err->getMessage();
  38. }
  39. }
  40. ?>



Probuje z preg_match ale nie umiem zaimplementować odpowiedniej funkcji.
Go to the top of the page
+Quote Post
viking
post 2.08.2017, 18:49:08
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Nie potrzebujesz wyrażeń. Wystarczy explode. Poza tym po co robisz przekierowanie i dlaczego2x przypisujesz to samo wyrazenie (w bind i linię niżej w execute)?


--------------------
Go to the top of the page
+Quote Post
viking
post 2.08.2017, 19:48:22
Post #3





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Jak przypisujesz2 zmienne a są3 fragmenty to wiadomo. Explode zwraca tablicę, zobacz co zawiera.


--------------------
Go to the top of the page
+Quote Post
Pawelelo520
post 2.08.2017, 19:52:17
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.03.2014

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


Ok , mam :
  1. $data = "strona/podstrona/podstrona.html";
  2. list($user, $pass)
  3. = explode("/", $data, 2);
  4. echo "$user <br>";
  5. echo $pass;

Tylko nie potrafię takiego skryptu zaimplementować w kod.
Go to the top of the page
+Quote Post
viking
post 3.08.2017, 05:20:48
Post #5





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


$x = explode...
$x[0] podstaw do swojego zapytania. Jak chcesz to później podmienić to $x[0] = wartość z bazy.


--------------------
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 30.06.2025 - 04:36