Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Preg_match dla funkcji wyszukiwania.
Forum PHP.pl > Forum > Przedszkole
Pawelelo520
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.
viking
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)?
viking
Jak przypisujesz2 zmienne a są3 fragmenty to wiadomo. Explode zwraca tablicę, zobacz co zawiera.
Pawelelo520
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.
viking
$x = explode...
$x[0] podstaw do swojego zapytania. Jak chcesz to później podmienić to $x[0] = wartość z bazy.
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.