Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] wyszkuwanie w tekście fragmentu i wyszkuwanie w bazie
Forum PHP.pl > Forum > Przedszkole
oomaster
Witam,

Mam pytanie bardziej teoretyczne. Wyjaśnię co chciałbym zrobić. Mam w bazie tekst:
Cytat
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, <img src="plik.jpg"> sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
pobieram go i wyświetlam na stronie ale przed tym chciałbym aby jakaś funkcja wyszukała wszystkie pliki img czyli <img src="plik.jpg"> wysłała zapytanie do bazy czy plik jest i jakie ma wartości i je podała i wyświetliła.

Czyli krótko mówiąc tekst po "transformacji" w kodzie powinnien wyglądać tak:
Cytat
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, <a href="DANE_Z_BAZY_1" alt="DANE_Z_BAZY_2"><img src="plik.jpg"></a> sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.


Czy ktoś wie z was jakiej funkcji mam użyć lub co ogólnie mam zrobić ?
W razie niejasności piszcie.
oomaster
OK masz rację wiem jak pobrać i wyszukać w bazie ale jak zamienić potem ?

hhhmmmm...
oomaster
Wiem jak zrobić wszystko ale mam kłopot

Korzystam z funkcji:

Kod
<?php
preg_match_all("#<img src=\"(.*)\" style=#Ui" , $tresc, $wynik);
echo"<pre>".$wynik."</pre>";
?>


Ale nie wyświetlają mi się wyniki tylko samo
Array ?

Czy to normalne, przecież w teksie mam zawarte znaczniki <img....
specialplan
Nie doczytales... preg_match rzuca wyniki do tablicy. Wyciagasz je np tak:

  1. <?php
  2. echo $wynik[0];
  3. ?>
oomaster
Dzięki za odpowiedź, bardzo mi pomogła ale myślę nad innym rozwiązaniem.

  1. <?
  2. $phrase = $tresc_2;
  3. $healthy = array("<img src=", "align=\"right\">", "align=\"left\">");
  4. $yummy = array("<a href=\"#\"><img src=", "align=\"right\"></a>", "align=\"left\"></a>");
  5. $ewphrase = str_replace($healthy, $yummy, $phrase);
  6.  
  7. echo $ewphrase;
  8. ?>


Kod działa i zmienia obrazki w linki. Nie wiem czy powyższą funkcją będzie potrafiła połączyć się z bazą i według nazwy pliku pobrać dane.
nowotny
Cytat(oomaster @ 5.03.2008, 18:25:48 ) *
Nie wiem czy powyższą funkcją będzie potrafiła połączyć się z bazą i według nazwy pliku pobrać dane.

My też nie wiemy... tongue.gif Ale pewnie jak dobrze napiszesz to będzie... smile.gif
oomaster
Cytat(nowotny @ 5.03.2008, 19:41:27 ) *
My też nie wiemy... tongue.gif Ale pewnie jak dobrze napiszesz to będzie... smile.gif


No i teraz nie wiem kurde jak to rozwiązać, nie masz pomysłu kolego sciana.gif questionmark.gif?
nowotny
Zadaj konkretne pytanie, podaj trochę kodu i pomyślimy... W tej chwili nie wiem dokładnie o co ci chodzi...
oomaster
OK, mówisz masz smile.gif

No to początkowo chcę ze zmiennej $tresc_2 wybrać wszystko co jest tam i rozpoczyna się:
Cytat
<img src="nazwa.jpg" style=


  1. <?php
  2. preg_match_all("#<img src=\"(.*)\" style=#Ui" , $tresc_2, $wynik);
  3.  
  4. print_r($wynik);
  5. ?>


To bez problemu zrobiłem, wyświetliło się w rozbudowanej tablicy:
Cytat
Array ( [0] => Array ( [0] => Array ( [0] => s_foto/foto/181023015047cd3a5b7920e_Bez-nazwy-1.jpg [1] => s_foto/foto/165375087747cd2335d1674_10-02-07_1556.jpg ) )


I teraz jakoś chciałbym każdy ze znalezionych wyników znaleść w bazie czyli według tablicy są takie pliki:

s_foto/foto/181023015047cd3a5b7920e_Bez-nazwy-1.jpg
s_foto/foto/165375087747cd2335d1674_10-02-07_1556.jpg

Teraz z bazą się łącze i szukam według nich ich opisu i autora. Następnie wszystko sklejam do kupy.

Dla przykładu, Przed:
<img src="nazwa.jpg" style="padding:1px">
i Po operacji:
<div>Fajna Nazwa Pliku, Autor Fotki <img src="nazwa.jpg" style="padding:1px"></div>

Może nie zrozumiale ale jeszcze próbowałem tak, ale nie wiedziałem jak pobrać z bazy dane dla wyników:
  1. <?
  2. $phrase = $tresc_2;
  3. $healthy = array("<img src=", "align=\"right\">", "align=\"left\">");
  4. $yummy = array("$nazwa, $autor<img src=", "align=\"right\"></div>", "align=\"left\"></div>");
  5. $ewphrase = str_replace($healthy, $yummy, $phrase);
  6.  
  7. echo $ewphrase;
  8. ?>


Piszcie jeśli jest coś nie jasne, bo może być smile.gif
nowotny
Cytat(oomaster @ 6.03.2008, 16:32:23 ) *
No to początkowo chcę ze zmiennej $tresc_2 wybrać wszystko co jest tam i rozpoczyna się:
...
To bez problemu zrobiłem, wyświetliło się w rozbudowanej tablicy:
I teraz jakoś chciałbym każdy ze znalezionych wyników znaleść w bazie czyli według tablicy są takie pliki:

s_foto/foto/181023015047cd3a5b7920e_Bez-nazwy-1.jpg
s_foto/foto/165375087747cd2335d1674_10-02-07_1556.jpg

Teraz z bazą się łącze i szukam według nich ich opisu i autora. Następnie wszystko sklejam do kupy.

Dla przykładu, Przed:
<img src="nazwa.jpg" style="padding:1px">
i Po operacji:
<div>Fajna Nazwa Pliku, Autor Fotki <img src="nazwa.jpg" style="padding:1px"></div>

No to wg. tego co napisałeś to wszystko masz obcykane i zrobione... to gdzie ten problem...?
oomaster
Cytat
Teraz z bazą się łącze i szukam według nich ich opisu i autora. Następnie wszystko sklejam do kupy.


No niby tak, ale jak zwykle problem. Tak jak napisałem to tylko moje wypociny które zbytnio nie dają pożądanego efektu bo nie wiem jak z bazy pobrać dane i wkleić je w tekst ?!
nowotny
No to odpalamy googlownice i się uczymy... albo czytamy tutaj:
http://pl.wikibooks.org/wiki/PHP/Jak_to_się_robiło_kiedyś%3F
albo tutaj: http://wortal.php.pl/wortal/artykuly/php/p...orial_php_mysql
oomaster
Torszkę chyba nie rozumiesz mojego problemu winksmiley.jpg

Poniżej napisałem krótki kod ale nie wiem co zrobić w nim aby dla każdego foto pobierać jego dane bo ja na razie dla wszystkich fot w tekście dodaje tak samo a chciałbym aby dla każdego foto pobrać te dane z bazy. A oto tabelka:

news_foto
foto | opis | autor
img001.jpg | fajne foto | mateusz
bez_nazwy.png | ciekawy graf | Tomek


  1. <?php
  2. preg_match_all("#<img src=\"(.*)\" style=#Ui" , $tresc_2, $wynik);
  3.  
  4. $m = @mysql_query("SELECT * FROM news_foto WHERE foto='".$wynik[1][0]."' ");
  5. while ($test = mysql_fetch_array($m)) {
  6.  
  7. $phrase = $tresc_2;
  8. $healthy = array("<img src=", "align=\"right\">", "align=\"left\">");
  9. $yummy = array("<a href=\"".$test['autor']."\"><img src=", "align=\"right\"></a>", "align=\"left\"></a>");
  10. $ewphrase = str_replace($healthy, $yummy, $phrase);
  11. }
  12. echo $ewphrase;
  13. ?>


teraz wiesz co mi na wątrobie leży winksmiley.jpg ?
nowotny
No i nie można było tak od razu...

Jeśli koniecznie musisz zamienić te linki w zmiennej $tresc_2 to ja bym tutaj użył funkcji preg_replace_callback" title="Zobacz w manualu PHP" target="_manual... w funkcji callback połączyłbym się z bazą i pobrał odpowiednie informacje dla danego linku i zwrócił odpowiednio sformatowane...
oomaster
Dzięki za odpowiedź. Szukałem trochę informacji w sieci na temat funkcji preg_replace_callback. Nic konkretnego nie znalazłem sad.gif

Może ktoś podać przykład użycia z bazą danych ?
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.