Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] ID z tekstu i pobieranie zawartości z bazy
oomaster
post 3.05.2013, 19:26:44
Post #1





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

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


Witam,

Czy ktoś orientuje się jak najlepiej rozwiązać tego typu:

Mam tekst pobierany z bazy:
Cytat
Lorem ipsum dolor sit amet, [wklej=1] consetetur sadipscing elitr, sed diam nonumy eirmod [wklej=2] tempor invidunt ut labore et dolore [wklej=3] magna aliquyam erat, sed diam voluptua.


Jak widzicie w tekście są wstawki: [wklej=1],[wklej=2],[wklej=3] i teraz jak najlepiej zamiast nich pobrać zawartość z bazy danych ?

Czyli: [wklej=1] pobiera dane rekordu o ID 1 i wkleja tekst z bazy dla tego ID np. <p>Tekst z bazy danych</p>
Go to the top of the page
+Quote Post
Michael2318
post 3.05.2013, 19:32:08
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


preg_match + do tablicy zapisujesz sobie wszystkie 'wklejki' z bazy, czyli:
  1. $wklej[1] = $row['wklejka'];


I potem zwyczajnie to podmieniasz.
Go to the top of the page
+Quote Post
oomaster
post 3.05.2013, 20:46:32
Post #3





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

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


Cytat(Michael2318 @ 3.05.2013, 20:32:08 ) *
preg_match + do tablicy zapisujesz sobie wszystkie 'wklejki' z bazy, czyli:
  1. $wklej[1] = $row['wklejka'];


I potem zwyczajnie to podmieniasz.


A możesz jakoś bardziej obrazowo to przedstawić bo nie mogę tego połapać.

Mam:
  1. $value = preg_replace("#\[wklej=(.*?)\]#si",'<div>\\1</div>',$value);

Ale co dalej ?
Go to the top of the page
+Quote Post
Michael2318
post 4.05.2013, 12:22:48
Post #4





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


  1. <?php
  2.  
  3. $wklej[1] = 'Zammiennik pierwszy';
  4. $wklej[2] = 'Zammiennik drugi';
  5. $wklej[3] = 'Zammiennik trzeci';
  6.  
  7. $string = 'Lorem ipsum dolor sit amet, [wklej=1] consetetur sadipscing elitr, sed diam nonumy eirmod [wklej=2] tempor invidunt ut labore et dolore [wklej=3] magna aliquyam erat, sed diam voluptua.';
  8. $tablica = preg_match_all("#\[wklej=\d\]#si", $string, $matches);
  9. for($i=0; $i<count($matches[0]); $i++)
  10. {
  11. $string = str_replace($matches[0][$i], $wklej[$i], $string);
  12. }
  13. echo $string;
  14.  
  15. ?>


Ten post edytował Michael2318 4.05.2013, 12:23:15
Go to the top of the page
+Quote Post
oomaster
post 4.05.2013, 12:25:42
Post #5





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

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


Dzięki wielkie tyle ,że ja nie wiem czy będzie [wklej=1] czy [wklej=432] czy [wklej=652]

Więc pojawia się problem na początku :-/
Go to the top of the page
+Quote Post
Michael2318
post 4.05.2013, 13:02:16
Post #6





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


  1. <?php
  2.  
  3. $wklej[1] = 'Zammiennik pierwszy';
  4. $wklej[2] = 'Zammiennik drugi';
  5. $wklej[3] = 'Zammiennik trzeci';
  6.  
  7. $string = 'Lorem ipsum dolor sit amet, [wklej=1] consetetur sadipscing elitr, sed diam nonumy eirmod [wklej=2] tempor invidunt ut labore et dolore [wklej=3] magna aliquyam erat, sed diam voluptua.';
  8. $tablica = preg_match_all("#\[wklej=\d\]#si", $string, $matches);
  9. for($i=0; $i<count($matches[0]); $i++)
  10. {
  11. $number = preg_replace("#\[wklej=(.*?)\]#si", "\\1", $matches[0][$i]);
  12. $string = str_replace($matches[0][$i], $wklej[$number], $string);
  13. }
  14. echo $string;
  15.  
  16. ?>
Go to the top of the page
+Quote Post
oomaster
post 5.05.2013, 12:02:06
Post #7





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

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


Próbowałem trochę działać z bazą ale nie wyświetla się zmiany...

EDIT: Rozwiązanie problemu i działa :-)
  1. <?
  2. $txt = 'Lorem ipsum dolor sit amet, [foto id="97" size="small"] consetetur sadipscing elitr, sed diam nonumy eirmod tempor [foto id="143" size="big"] invidunt ut labore et dolore magna [foto id="139" size="big"] aliquyam erat, sed diam voluptua.';
  3. $tablica = preg_match_all('#\[foto id="(.*?)" size="(.*?)"\]#si', $txt, $matches);
  4. $comma_separated = implode(",", $matches[1]);
  5. $res = @mysql_query('SELECT id, img FROM foto WHERE id IN ('.$comma_separated.') ORDER BY FIELD(`id`, '.$comma_separated.') ASC;');
  6. $i=0;
  7. while( $row = mysql_fetch_assoc($res)) {
  8. $wklej[$i] = '<b>'.$row['id'].'</b>'; $txt = str_replace($matches[0][$i], $wklej[$i], $txt);
  9. $i++;
  10. }
  11. echo $txt;


Tylko czy to jest wydaje i nie będzie zbytnio obciążać ?

Ten post edytował oomaster 5.05.2013, 13:25:28
Go to the top of the page
+Quote Post
Michael2318
post 6.05.2013, 17:32:13
Post #8





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Jest OK, takie rozwiązanie miałem Ci zaproponować na PW, ale nie chciało mi się tego dokładnie objaśniać, a sądziłem że drogą skrótową do niczego nie dojdziemy wink.gif
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: 14.08.2025 - 10:45