Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [oop]/[php]/[mysql] wyświetlanie w while na raz wszystko
Forum PHP.pl > Forum > PHP
Lejto
Mam kod łączenia z bazą i wyboru tabeli:
  1. <?php
  2. class mysql
  3. {
  4.    private $lacz;
  5.    
  6.    public function __construct()
  7.    {
  8.        $this->lacz = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
  9.  
  10.    }
  11.    public function __dectruct()
  12.    {
  13.        $this->lacz->close();
  14.    }
  15.  
  16.    public function set_query($query)
  17.        {
  18.  
  19.            $zapyatnie = $query;
  20.            $wykonaj = $this->lacz->query($zapyatnie);
  21.            if(!$wykonaj)
  22.            {
  23.                echo mysql_error();
  24.                echo 'as';
  25.            }
  26.            if($wykonaj->num_rows)
  27.            {
  28.                            $rows = array();
  29.  
  30.                while($row = $wykonaj->fetch_array(MYSQLI_ASSOC))
  31.                {
  32.                      echo $row['tytulStrony'];
  33.                
  34.                  }
  35.                
  36.            }
  37.                        
  38.         }
  39.  
  40. }
  41. ?>

i index
  1. <?php
  2. $db = new mysql();
  3. $db->set_query('SELECT * from config');
  4. ?>

Chcę żeby w pętli while nie trzeba było wpisywać echo $row['tytulStrony']; tylko to było wyświetlone automatycznie. fecth_array trzeba do tablicy dać i potem wyświetlić żeby tak było?
Foxx
Chodzi Ci o to, żeby wyświetlać za pomocą echo $row a nie echo $row['tytulStrony'] ?
Nie da się bo fetch_xxx zwraca tablicę lub obiekt. Możesz ewentualnie uzyć fetch_row i wtedy wystarczy echo $row[0] (jeżeli tytulStrony jest pierwszą daną w zapytaniu).
Lejto
chcę żeby za pomocą:

$db->set_query('SELECT * from config');

była wyświetlana cała zawartość tabeli config bez podawania parametrów w pętli while np. echo $row['tytulStrony'];
zobaczę jeszcze z fetch_row
edit:
a coś takiego?
  1. <?php
  2. $rows = array();
  3. $rows[] = $result;
  4. return $rows;
  5. ?>
Crozin
  1. <?php
  2. while($row = $wykonaj->fetch_array(MYSQLI_ASSOC))
  3.               {
  4.                     echo $row['tytulStrony'];
  5.              
  6.                 }
  7. ?>
->
  1. <?php
  2. echo '<table><thead><tr>';
  3. $headings = false;
  4. while($row = $wykonaj->fetch_array(MYSQLI_ASSOC))
  5.               {
  6. if(!$headings){
  7.  foreach(array_keys($row) as $th){
  8.    echo '<th>' . $th . '</th>';
  9.  }
  10.  echo '</tr></thead><tbody>';
  11.  $headings = true;
  12. }
  13. echo '<tr>';
  14. foreach($row as $v){
  15.  echo '<td>' . $v . '</td>';
  16. }
  17. echo '</tr>';
  18.              
  19.                 }
  20. echo </tbody></table>
  21. ?>
(z palca)
Lejto
@Crozin to starczyło:
  1. <?php
  2. while($row = $wykonaj->fetch_array(MYSQLI_ASSOC))
  3.              {
  4.  
  5. foreach($row as $v){
  6. echo  $v;
  7. }
  8. ?>

ale wyświetla zawartość pola i id zamiast samej zawartości
mam jeszcze coś takiego
  1. <?php
  2. function set_query($query)
  3.        {
  4.            
  5.            $rows = array();
  6.            $this->sql = mysql_query($query);
  7.            
  8.            if(!$this->sql)
  9.            {return 'Błąd w pobraniu danych';}
  10.            else
  11.            {
  12.                if(mysql_num_rows($this->sql)>0)
  13.                {
  14.                    while($result = mysql_fetch_array($this->sql))
  15.                    $rows[] = $result;
  16.                    
  17.                    return $rows;
  18.                }
  19.                else
  20.                return 'Tabela jest pusta';
  21.            }
  22.            //return mysql_num_rows($this->sql);
  23.        }
  24. ?>

i
  1. <?php
  2. $result = $db->set_query('SELECT * from tpl_news');
  3. ?>

tylko nie wiem jak to skonfigurować do połączenia new mysqli, próbowałem błędy były a jak już nie było błędów to nic nie wyświetliło
Crozin
Dajesz zapytanie SELECT *... i się dziwisz, że wyświetla ID i zawartość jakiegoś tam pola? To daj
  1. SELECT nazwa_kolumny_ktora_ma_byc_wybrana
Lejto
ok zobaczę a co z kodem w poście #6
próbowałem go przerobić z new mysqli ale coś nie poszło podam kod który miałem jak co
Crozin
Kod z postu #6 działa, tak, że pobiera wszystko z tabeli MySQL. W pętli iteruje po każdym rekordzie tabeli. Pod $row masz wtedy tablicę z danymi ($row['id'] itp.). Całą tablicę ($row) przypisuje jako kolejny indeks innej tablicy ($rows[] = $row) by ostatecznie wzwrócić tablicę (dwuwymiaową) $rows. Dzięki temu po wykonaniu
  1. <?php
  2. $result = $db->set_query('SELECT * from tpl_news');
  3. ?>
$result jest tablicą, w której każdy indeks to kolejna tablica reprezentująca rekord w tabeli. Możesz po niej iterować np. przy pomocy foreach()
Lejto
trochę praktyki się przydało
takie coś wyskrobałem, mam nadzieje że optymalne
  1. <?php
  2. public function set_query($query)
  3.        {
  4.  
  5.            $rows = array();
  6.            $wykonaj = $this->lacz->query($query);
  7.            
  8.              
  9.                    while($row = $wykonaj->fetch_row())
  10.                    {
  11.                    echo $row[0];
  12.                     }    
  13.                    
  14.         }
  15. ?>
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.