Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP][MySQL]Zmienna liczba kolumn
4Axis
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 14.05.2014

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie bardzo rozumiem....
select * from tabela
pobierze ci wszystkie kolumny niezaleznie ile ich jest.
Go to the top of the page
+Quote Post
tzm
post
Post #3





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


a potem to juz foreach i generowanie na ekranie.
Go to the top of the page
+Quote Post
4Axis
post
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 14.05.2014

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


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.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$r to tablica... Do przelecenia po tablicy uzyj FOREACH - patrz manual
Go to the top of the page
+Quote Post
tzm
post
Post #6





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
4Axis
post
Post #8





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 14.05.2014

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


ok, będę musiał poczytać bo potęga mojej niewiedzy mnie przeraża (IMG:style_emoticons/default/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>";
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl1.php.net/manual/en/function.mysql-field-table.php
I sobie wyswietl najpierw naglowki
Go to the top of the page
+Quote Post
4Axis
post
Post #10





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 14.05.2014

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


działa (IMG:style_emoticons/default/wink.gif) (IMG:style_emoticons/default/exclamation.gif) ! a można zamienić nazwy z nagłówków na bardziej ludzkie np.: 's' na 'Średnica'?
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No tak... kto ci broni dac IFa i w zaleznosci od wartosci wstawiac wlasny tekst?
Go to the top of the page
+Quote Post
4Axis
post
Post #12





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 14.05.2014

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


Proste i działa (IMG:style_emoticons/default/wink.gif) . Dziękuję za pomoc
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:54