Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP][MySQL]Zmienna liczba kolumn
Forum PHP.pl > Forum > Przedszkole
4Axis
Witam.
Chciałbym się dowiedzieć czy istnieje możliwość automatycznego pobierania i wyświetlania całej tabeli i wszystkich kolumn z nagłówkami bez wcześniejszego ich deklarowania.

Mam np tabelę `316`:

| s | m1 | m2 |
-----------------
| 20 | 1 | |
-----------------
| 25 | | 1 |
-----------------
| 30 | | |
-----------------

i tabelę `317 `:


| s | m5 | m8 | m9 |
---------------------------
| 20 | 1 | 1 | 1 |
---------------------------
| 25 | 1 | 1 | 1 |
---------------------------
| 30 | 1 | 1 | 1 |
-----------------

chciałbym żeby w zależności od tego co klikniemy została pobrana CAŁA tabela z wszystkimi kolumnami. Tabeli będzie kilkadziesiąt, w każdej będzie inna ilość kolumn i wierszy
nospor
Nie bardzo rozumiem....
select * from tabela
pobierze ci wszystkie kolumny niezaleznie ile ich jest.
tzm
a potem to juz foreach i generowanie na ekranie.
4Axis
tak, tylko nie wiem jak to pokazać.
stosuję taki kod:
  1. $wynik = mysql_query("SELECT * FROM `316`")
  2. or die('Błąd zapytania');
  3.  
  4. if(mysql_num_rows($wynik) > 0) {
  5. echo "<table cellpadding=\"2\" border=1>";
  6. while($r = mysql_fetch_array($wynik)) {
  7. echo "<tr>";
  8. echo "<td>".$r[1]."</td>";
  9. echo "<td>".$r[2]."</td>";
  10. echo "<td>".$r[3]."</td>";
  11. echo "<td>".$r[4]."</td>";
  12. echo "<td>".$r[5]."</td>";
  13. echo "<td>".$r[6]."</td>";
  14. echo "<td>".$r[7]."</td>";
  15. echo "<td>".$r[8]."</td>";
  16. echo "<td>".$r[9]."</td>";
  17. echo "<td>".$r[10]."</td>";
  18.  
  19. echo "</tr>";
  20. }
  21. echo "</table>";


i muszę tu podać ile mam kolumn ($r[1], $r[2], itd) jeżeli podam więcej niż mam w aktualnie wybranej tabeli to wywala mi błędy. Chciałbym jakoś wyciągać automatycznie ilość kolumn bo może jedna tabela mieć 1 kolumnę a inna 20.
nospor
$r to tablica... Do przelecenia po tablicy uzyj FOREACH - patrz manual
tzm
jak nospor prawi, mozesz wtedy w foreachu dodawac powiedzmy pusta komorke, a jesli to Ci sie nie podoba to na upartego mozna to forem napisac i przelatywac tyle razy - ile masz komorek.
nospor
A po co mu tam pusta komorka? I juz nie mieszaj z tym FORem... do latania po tablicy sluzy FOREACH.

ps: no i zamiast mysql_fetch_array() masz uzyc mysql_fetch_row(), gdyz mysql_fetch_array() domyslnie zwraca zdublowane kolumny
4Axis
ok, będę musiał poczytać bo potęga mojej niewiedzy mnie przeraża wink.gif

OK, udało mi się zmodyfikować zapytanie tak że ładnie mi wszystko wyświetla. Nie wiem tylko jak dodać do tego wszystkiego nagłówki, dla kolumny s-> Średnica; m1->M1; itd
kod wygląda teraz tak:
  1. $wynik = mysql_query("SELECT * FROM `316`")
  2. or die('Błąd zapytania');
  3. echo '<table style="border-color: red;" border="1" cellspacing="2"> <tbody>';
  4. while ($row = mysql_fetch_row($wynik)) {
  5. echo '<tr> ';
  6. foreach ($row as $key => $value) {
  7. if ($value != null){
  8. echo '<td width=25px; style="background-color: yellow; border-color: blue;" border="1">'.$value."</td>";
  9. } else {
  10. echo '<td width=25px; style="background-color: magenta; border-color: blue;" border="1">'.$value."</td>";
  11. }
  12.  
  13. } echo "</tr>";
  14. }echo "</tbody></table>";
nospor
http://pl1.php.net/manual/en/function.mysql-field-table.php
I sobie wyswietl najpierw naglowki
4Axis
działa wink.gif exclamation.gif! a można zamienić nazwy z nagłówków na bardziej ludzkie np.: 's' na 'Średnica'?
nospor
No tak... kto ci broni dac IFa i w zaleznosci od wartosci wstawiac wlasny tekst?
4Axis
Proste i działa wink.gif. Dziękuję za pomoc
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.