Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] bbcode i SQL
Forum PHP.pl > Forum > Przedszkole
free
Mam prosty skrypt:

  1. <?
  2.  
  3. $emoty=array(
  4. ":) " =>"<img src=usmiech.gif>",
  5. ":-)" =>"<img src=usmiech.gif>"
  6. );
  7.  
  8. ?>
  9.  
  10. // I do użycia :
  11.  
  12. <?
  13. echo strtr($jakistamtekst,$emoty);
  14. ?>

Jest to o tyle prymitywny skrypcik, że ma na sztywno zdefiniowane w kodzie zaminenne emoty.
Chce go przerobic. Strukture danych bazy i wszystko z tym związane zrobię sam. Mam tylko problem jak zmienic go by dzialal w oparcio o dane z bazy MySQL, a nie z pliku *.php.
hwao
Pobierasz dane z bazy danych i je przepuszczasz przez ta funkcje
free
tyle to i ja wiem ze
- musze pobrac dane z bazy /to umiem/
- przepuscic przez funkcje /i tego własnie nie wiem jak zrobic/
lukir
Robisz sobie tabelę bazy danych - np.: emots...

Kod
emots:

+--------------+----------------------------------+

|     emots    |              images              |

+--------------+----------------------------------+

|  :)          |       <img src=usmiech.gif>      |

+--------------+----------------------------------+

|  :-)         |       <img src=usmiech.gif>      |

+--------------+----------------------------------+

|  :(          |       <img src=smutny.gif>       |

+--------------+----------------------------------+

|  :-(         |       <img src=smutny.gif>       |

+--------------+----------------------------------+

...i dajesz taki kod:
  1. <?
  2. //łączenie z bazą MySQL
  3. $db = mysql_connect(MYQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or die(mysql_error());
  4. mysql_select_db("emots");
  5.  
  6. //zliczenie rekordów
  7. $search = mysql_query("SELECT * FROM `emots`", $db);
  8. $counter = mysql_num_rows($search);
  9.  
  10. //zmienne
  11. $emots = array();
  12. $images = array();
  13.  
  14. //pobieranie danych
  15. for($i=0; $i<$counter; $i++) {
  16. $search = mysql_query("SELECT * FROM `emots` LIMIT ".$i.",1;", $db);
  17. $result = mysql_fetch_array($search);
  18. $emots[$i] = $result[0];
  19. $images[$i] = $result[1];
  20. }
  21.  
  22. //i na koniec:
  23. echo str_replace($emots, $images, $jakistamtekst);
  24. ?>
free
Dzieki za rzeczową odpowiedź guitar.gif
Zrobie z tego kodu funkcje o nazwie bbcode.
Później jak będę chciał ją wykorzystać to mam użyć :
  1. <?php
  2. funcion bbcode(co tu wstawic?);
  3. ?>

Co wstawic w nawiasie ?

Nie rozumiem dzialania kodu z lini 11, 12
$emots = array();
$images = array();
oraz dlaczego w linii 18 i 19
$emots[$i] = $result[0];
$images[$i] = $result[1];
deklaruje sie $result[0]; a później $result[1];
NetJaro
  1. <?php
  2. $emots = array();
  3. $images = array();
  4. ?>

A zobacz co robi funkcja array" title="Zobacz w manualu php" target="_manual - tworzy pustą tablice. smile.gif


  1. <?php
  2. $emots[$i] = $result[0];
  3. $images[$i] = $result[1];
  4. ?>

Tutaj przypisujesz do danego klucza tablicy $emots i $images dane z bazy ($result[0] i $result[1]).
lukir
Cytat
<?php
funcion bbcode(co tu wstawic?);
?>
Co wstawic w nawiasie ?

Wstaw coś takiego:
  1. <?php
  2. //definicja funkcji:
  3. //param: $txt to parametr funkcji (string) z emotikonami do wymiany :)
  4.  
  5. function bbcode($txt = 0) {
  6. //sprawdzenie czy zdefiniowano parametr funkcji:
  7. if($txt==0)
  8. return false;
  9.  
  10. //łączenie z bazą MySQL
  11. $db = mysql_connect(MYQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or die(mysql_error());
  12. mysql_select_db("emots");
  13.  
  14. //zliczenie rekordów
  15. $search = mysql_query("SELECT * FROM `emots`", $db);
  16. $counter = mysql_num_rows($search);
  17.  
  18. //zmienne
  19. $emots = array();
  20. $images = array();
  21.  
  22. //pobieranie danych
  23. for($i=0; $i<$counter; $i++) {
  24. $search = mysql_query("SELECT * FROM `emots` LIMIT ".$i.",1;", $db); 
  25. $result = mysql_fetch_array($search);
  26. $emots[$i] = $result[0];
  27. $images[$i] = $result[1];
  28. }
  29.  
  30. //i na koniec:
  31. return str_replace($emots, $images, $txt);
  32. }
  33. ?>

Potem żeby użyć powyższej funkcji wpisujesz:
  1. <?php
  2. //$text może być też pobrane z formularza, np.: $text = $_POST['tekst'];
  3. $text = "bla bla bla :) ble ble ble :(";
  4.  
  5. //poniższy kod powinied dać taki HTML: 
  6. //"bla bla bla <img src=usmiech.gif> ble ble ble <img src=smutny.gif>"
  7.  
  8. echo bbcode($text);
  9. ?>
free
Mam mały problem. Otóż zmienna $txt jest pobierana z innej tabeli
  1. "SELECT * FROM komentarz where news_id = '".$_GET['page']."' ORDER BY id DESC";
  2. ...
  3. $txt=$kom['txt'];

Jak to połączyć ze sobą ?

Poradziłem sobie sam.
Problem tkwił w

  1. <?php
  2. function bbcode($txt = 0) {
  3. //sprawdzenie czy zdefiniowano parametr funkcji:
  4. if($txt==0)
  5. return false;
  6. ?>

powinno byc samo:
  1. <?php
  2. function bbcode($txt) ...
  3. ?>
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.