Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak przypisać rekordy z bazy do zmiennych widocznych w innych plikach?
Forum PHP.pl > Forum > Przedszkole
QeX
Witam,

pobieram rekordy z bazy za pomocą tej funkcji:

  1. function retrieve_entry(){
  2.  
  3. $query = "SELECT title, content, date_created FROM blog";
  4. $result = mysql_query($query);
  5.  
  6. while($row = mysql_fetch_array($result)) {
  7. echo "<p style=\"font-weight: bold\">".$row['date_created']."</p><p style=\"font-weight: bold\">".$row['title']."</p>
  8. <p>".$row['content']."</p><br />\n";
  9.  
  10. }
  11. }


Jak "wydobyć" rekordy z funkcji i przypisać do zmiennych "widocznych" w innym pliku php? Chodzi mi o to, aby sformatować dane w szablonie html, a nie w ciele tej funkcji.
piotrooo89
zwróć sobie tablice z rekordami i poźniej będziesz operował na niej.
Rysh
Funkcja powinna zwracać wartość, a nie wyświetlać. Dlatego zrób co mówi piterooo89, czyli coś w ten deseń:
  1. function retrieve_entry(){
  2. $query = "SELECT title, content, date_created FROM blog";
  3. $result = mysql_query($query);
  4. while($row = mysql_fetch_array($result)) {
  5. $out[] = $row;
  6. }
  7. return $out;
  8. }
QeX
Dzięki za odzew.

Rysh, nie wiem jak dalej ruszyć z Twoją propozycją, ale dlatego jestem w Przedszkolu wstydnis.gif

Póki co, mam taki kod, który przypisuje poszczególne pola z tabeli do zmiennych i to prawie to o co mi chodzi, ale... pod zmiennymi 'tytul', 'tresc' i 'data' są tylko dane pierwszego rekordu. Nie wiem jak zwrócić pola wszystkich rekordów.

  1. $query = "SELECT title, content, date_created FROM blog";
  2. $result = mysql_query($query);
  3.  
  4. while($row = mysql_fetch_array($result)) {
  5. $rows = array('tytul' => $row['title'], 'tresc' => $row['content'], 'data' => $row['date_created']);
  6. extract($rows);
  7. }
nospor
Masz generować tablice a nie zmienne:
  1. $query = "SELECT title, content, date_created FROM blog";
  2. $result = mysql_query($query);
  3.  
  4. $tab = array();
  5. while($row = mysql_fetch_array($result)) {
  6. $tab[]= array('tytul' => $row['title'], 'tresc' => $row['content'], 'data' => $row['date_created']);
  7. }
  8.  
  9. print_r($tab);
QeX
print_r zwróci coś takiego (przykładowy wpis):

Cytat
Array ( [0] => Array ( [tytul] => Tytuł wpisu [tresc] => Lorem ipsum dolor sit amet, consectetur adipisicing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam. Quisque semper justo at risus. Donec venenatis, turpis vel hendrerit interdum, dui ligula ultricies purus, sed posuere libero dui id orci. Nam congue, pede vitae dapibus aliquet, elit magna vulputate arcu, vel tempus metus leo non est. Etiam sit amet lectus quis est congue mollis. Phasellus congue lacus eget neque. Phasellus ornare, ante vitae consectetuer consequat, purus sapien ultricies dolor, et mollis pede metus eget nisi. Praesent sodales velit quis augue. Cras suscipit, urna at aliquam rhoncus, urna quam viverra nisi, in interdum massa nibh nec erat. [data] => 2012-06-27 07:59:06 )


A chodzi mi o to:

Cytat
2012-06-27 07:59:06
Tytuł wpisu
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam. Quisque semper justo at risus. Donec venenatis, turpis vel hendrerit interdum, dui ligula ultricies purus, sed posuere libero dui id orci. Nam congue, pede vitae dapibus aliquet, elit magna vulputate arcu, vel tempus metus leo non est. Etiam sit amet lectus quis est congue mollis. Phasellus congue lacus eget neque. Phasellus ornare, ante vitae consectetuer consequat, purus sapien ultricies dolor, et mollis pede metus eget nisi. Praesent sodales velit quis augue. Cras suscipit, urna at aliquam rhoncus, urna quam viverra nisi, in interdum massa nibh nec erat.


co jest wynikiem działania kodu:

  1. $query = "SELECT title, content, date_created FROM blog";
  2. $result = mysql_query($query);
  3. while($row = mysql_fetch_array($result)) {
  4. $rows = array('tytul' => $row['title'], 'tresc' => $row['content'], 'data' => $row['date_created']);
  5. extract($rows);
  6. $entvars = array ($data, $tytul, $tresc);
  7. foreach ($entvars as $entries) {
  8. echo $entries . '<br />';
  9. }
  10. }


Dodatkowo chciałbym oddzielnie formatować datę, tytuł i treść czyli np. dać pogrubioną datę, a tytuł inną czcionką. A więc "wyciągnąć" dane z tablicy i formatować w szablonie html w znacznikach {}. Może tworzyć oddzielne tablice dla pól?
nospor
....
print_r zwrócil co mial zwrócic. Dałem go po to byś zobaczył jak wygląda twoja tablica. Teraz jedyne co musisz zrobić to przelecieć po tej tablicy i wyświetlac jak ci się żywnie podoba. Do latania po tablicy służy FOREACH. Zanim napiszesz kolejnego posta pomyśl chwilkę.
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.