FAQ | Points | Add... | Recent posts | Search | Register | Log in


[PHP] Dynamiczne Tabele w HTML


Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> Beginners Programming -> [PHP] Dynamiczne Tabele w HTML
Author
Message
toma5z
Poziom 13
Poziom 13


Joined: 10 May 2006
Posts: 117
Location: k-ce

Post#1 Post from the author of the topic 20 Mar 2010 10:55   

[PHP] Dynamiczne Tabele w HTML


Witam,
ostatnio uczę się podstaw w php.
Napotkałem pewien problem, nie wiem jak zrobić aby sterować wyświetlaniem kolumn w tabeli HTML.

Opiszę to na przykładzie:
Strona, która pokazuje ceny np. biletów, w tabeli.
Mamy formularz który posiada dwa radiobuttony do pytania:
"Pokazać również ceny ulgowe ? (Tak, Nie)"

Jeżeli zaznaczymy "Tak" wyświetlana jest "cała" tabelka z cennikiem.
W przeciwnym wypadku - nie pokazuje nam się ostatnia kolumna.

Kod HTML:
Code:
<h1> Cennik biletów</h1>
<p>
<form action="cennik.php" method="post">
      Pokazać również ceny ulgowe ?
        <input type="radio" name="group" value="Tak"checked> Tak
        <input type="radio" name="group" value="Nie" > Nie
        <input type="submit" value="Sprawdź ceny"/>
</form>


Kod PHP:
Code:
<table border="1" bgcolor=CCCCCC, cols width="30%">
      <tr>
               
            <?
         if($group == 'Tak')
            {
               echo
                   '<td>Bilety:</td>
               <td>Ceny Zwykłe:</td>
               <td>Ceny ulgowe:</td>';
            }
            else
            {
               echo
                   '<td>Bilety:</td>
               <td>Ceny Zwykłe:</td>';
            }
            ?>
               
      </tr>
      <tr>
            <?
                if($group == 'Tak')
            {
                   echo
               '<td>Jedno miasto:</td>
               <td>2,40</td>
               <td>1,20</td>';
            }
            else
            {
               echo
               '<td>Jedno miasto:</td>
               <td>2,40</td>';
            }
            ?>
               
            
      </tr>
      <tr>
             <?
               if($group == 'Tak')
            {
               echo
               '<td>Dwa miasta:</td>
               <td>2,80</td>
               <td>1,40</td>';
            }
            else
            {
               '<td>Dwa miasta:</td>
               <td>2,80</td>';
            }
            ?>
            
               
      </tr>
      <tr>
             <?
         if($group == 'Tak')
            {
                   echo
               '<td>Trzy miasta:</td>
               <td>3,20</td>
               <td>1,60</td>';
            }
            else
            {
               echo
               '<td>Trzy miasta:</td>
               <td>3,20</td>';
            }
            ?>
 
      </tr>
      <tr>
               
            <?
         if($group == 'Tak')
            {
                echo           
               '<td>Więcej:</td>
               <td>4,00</td>
               <td>2,00</td>';
            }
            else
            {
               echo           
               '<td>Więcej:</td>
               <td>4,00</td>';
            }
            ?>   
                               
      </tr>
      </table>



Czy takie rozwiązanie jest jedynym rozwiązaniem ?
Proszę o pomoc.
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#2 20 Mar 2010 11:05helpful post - solution   

Re: [PHP] Dynamiczne Tabele w HTML


Jeśli nie chcesz wdawać się w generowanie skryptów java, to tak. Choć coś mi się wydaje, że dziwnie ta tabela wynikowa wyglądać będzie. Niemniej takie rozwiązanie jest prawie słuszne. Prawie, gdyż wystarczy dopisywać dodatkową kolumnę. Matematycznie ujmując: wyciągnij część wspólną kodów przed warunki.

Alternatywnym rozwiązaniem mogłoby być generowanie wcześniej tablicy tablic, która odpowiadała by tabelce, a następnie prostymi pętlami przetwarzanie ich. Ale moim zdaniem zupełnie niepotrzebne.

BTW - radzę jako znacznik otwierający stosować <?php

Dodano po 1 [minuty]:

PS, kod
Code:
 if($group == 'Tak')
            {
               echo
                   '<td>Bilety:</td>
               <td>Ceny Zwykłe:</td>
               <td>Ceny ulgowe:</td>';
            }
            elseif($group == 'Tak')
            {
               echo
                   '<td>Bilety:</td>
               <td>Ceny Zwykłe:</td>';
            }
Jest logicznie niepoprawny ;) Część druga nigdy się nie wykona ;)
Back to top
   
Google

Google Adsense


Post# 20 Mar 2010 11:05helpful post - solution   





Back to top
   
toma5z
Poziom 13
Poziom 13


Joined: 10 May 2006
Posts: 117
Location: k-ce

Post#3 Post from the author of the topic 20 Mar 2010 11:36   

Re: [PHP] Dynamiczne Tabele w HTML


Dżyszla wrote:
Jeśli nie chcesz wdawać się w generowanie skryptów java, to tak. Choć coś mi się wydaje, że dziwnie ta tabela wynikowa wyglądać będzie. Niemniej takie rozwiązanie jest prawie słuszne. Prawie, gdyż wystarczy dopisywać dodatkową kolumnę. Matematycznie ujmując: wyciągnij część wspólną kodów przed warunki.

Alternatywnym rozwiązaniem mogłoby być generowanie wcześniej tablicy tablic, która odpowiadała by tabelce, a następnie prostymi pętlami przetwarzanie ich. Ale moim zdaniem zupełnie niepotrzebne.

BTW - radzę jako znacznik otwierający stosować <?php

Dodano po 1 [minuty]:

PS, kod
Code:
 if($group == 'Tak')
            {
               echo
                   '<td>Bilety:</td>
               <td>Ceny Zwykłe:</td>
               <td>Ceny ulgowe:</td>';
            }
            elseif($group == 'Tak')
            {
               echo
                   '<td>Bilety:</td>
               <td>Ceny Zwykłe:</td>';
            }
Jest logicznie niepoprawny ;) Część druga nigdy się nie wykona ;)


Dzieki za radę, czyli warunek, pętla for, echo, tabelka, zmienna w tabelce...
wieczorkiem pokombinuje i dam znać.

Co do tego warunku "niepoprawny logicznie", przepraszam żle wkleiłem moje wypociny. Jasne że sie nie wykona. Mój błąd przy wklejaniu kodu. : ]
Back to top
   
arnoldziq
Poziom 22
Poziom 22


Joined: 14 Apr 2006
Posts: 2433
Location: High Wycombe

Post#4 20 Mar 2010 12:02helpful post - solution   

Re: [PHP] Dynamiczne Tabele w HTML


W twoim pierwszym kodzie, nie ma także miejsca w którym wczytujesz dane z formularza.
Back to top
   
Google

Google Adsense


Post# 20 Mar 2010 12:02helpful post - solution   





Back to top
   
toma5z
Poziom 13
Poziom 13


Joined: 10 May 2006
Posts: 117
Location: k-ce

Post#5 Post from the author of the topic 20 Mar 2010 13:30   

Re: [PHP] Dynamiczne Tabele w HTML


arnoldziq wrote:
W twoim pierwszym kodzie, nie ma także miejsca w którym wczytujesz dane z formularza.


Tak, nie ma get, czy post...
hmmm ale kod działa.
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#6 20 Mar 2010 15:06helpful post - solution   

Re: [PHP] Dynamiczne Tabele w HTML


Jeśli tego faktycznie nie ma, to źle! Serwer używa widocznie starego PHP lub ktoś włączył rejestrowanie zmiennych - bardzo niebezpieczne rozwiązanie.
Back to top
   
latoslatos
Poziom 5
Poziom 5


Joined: 25 Oct 2009
Posts: 13

Post#7 20 Mar 2010 19:14helpful post - solution   

Re: [PHP] Dynamiczne Tabele w HTML


nom w drugim pliku musisz na początku dodać:
$group = $_POST['group'];
Back to top
   
toma5z
Poziom 13
Poziom 13


Joined: 10 May 2006
Posts: 117
Location: k-ce

Post#8 Post from the author of the topic 23 Mar 2010 13:52   

Re: [PHP] Dynamiczne Tabele w HTML


Dobra, wykombinowałem coś takiego:

PHP:
Code:
<table border="1" bgcolor=CCCCCC, cols width="30%">
            <tr>
                   <td>Rodzaj</td>
               <td>Cena Zwykła</td>
                <?php
               if($group == 'Tak')
               {
               echo '<td>Cena z rabatem</td>';
               }
            ?>
                </tr>
               
                <?php
            $group = $_POST['group'];
            $typbiletu = array('jedno miasto', 'dwa miasta', 'trzy miasta', 'wiecej niz trzy');
            $cenyzwykle = array('1,90', '2,40', '2,60', '3,20');
            $cenyulgowe = array('1,40', '1,90', '2,10', '2,70');
         
            define( 'Cenarabatu', 0,50);
            $a = 1.99;
            $b = '2,20';
            
            for($i=0; $i<4; $i++)
            {
               if($group == 'Tak')
               {
                  echo
                      '<td>'. "$typbiletu[$i]".'</td>
                  <td>'. "$cenyzwykle[$i]".'</td>
                  <td>'. "$cenyulgowe[$i]".'</td>';
               }
               else
               {
                  echo
                      '<td>'. "$typbiletu[$i]".'</td>
                  <td>'. "$cenyzwykle[$i]".'</td>';
               }
            
               echo
               '<tr>';
            }
            ?>
                 
            </tr>
            </table>


Narazie nie ma problemów, czy kod jest poprawny ?
Tzn. czy takie rozwiązanie jest poprawne ?

chciałbym jeszcze umieścić checkboxy do
'jedno miasto', 'dwa miasta', 'trzy miasta', 'wiecej niz trzy'.
też to zrobić w podobny sposób ?
Back to top
   
Dżyszla
Poziom 24
Poziom 24


Joined: 15 May 2005
Posts: 4528
Location: Żory (kiedyś Opole)

Post#9 23 Mar 2010 15:25   

Re: [PHP] Dynamiczne Tabele w HTML


Nie w tym miejscu dokonujesz przekazania wartości z POSTa do zmiennej (wcześniej masz zmienną, która powinna z niego brać!)

Możesz śmiało używać podwójnego cudzysłowia do wyświetlania tekstów; zmienne tablicowe w takim ciągu ujmuj w nawiasy klamrowe {}

Zasadniczo nie wiem, czemu w tablicy cen masz wartości ciągów, zamiast liczbowe...
Back to top
   
toma5z
Poziom 13
Poziom 13


Joined: 10 May 2006
Posts: 117
Location: k-ce

Post#10 Post from the author of the topic 23 Mar 2010 16:38   

Re: [PHP] Dynamiczne Tabele w HTML


Dżyszla wrote:
Nie w tym miejscu dokonujesz przekazania wartości z POSTa do zmiennej (wcześniej masz zmienną, która powinna z niego brać!)

Możesz śmiało używać podwójnego cudzysłowia do wyświetlania tekstów; zmienne tablicowe w takim ciągu ujmuj w nawiasy klamrowe {}

Zasadniczo nie wiem, czemu w tablicy cen masz wartości ciągów, zamiast liczbowe...


Czemu ciągi znaków ?
- Wydało mi się to bardziej urzyteczne ze względu na przecinek w "float'cie" np. 1,99 byłby rozpartywany jako pierwszy element tablicy - 1 i drugi element tablicy - 99. Tak mam całość - 1.99;

Ok, coś takiego naskrobałem:

HTML:
Code:
<h1> Cennik biletów</h1>
<p>
<form action="cennik.php" method="post">
Pokazać również ceny ulgowe ?
<input type="radio" name="group" value="Tak"checked> Tak
<input type="radio" name="group" value="Nie" > Nie
<hr/>

Zaznacz Co chcesz pokazać:<br />
1.<input type="checkbox" name="jedno" value=1/> jedno miasto<br/>
2.<input type="checkbox" name="dwa" value=1/> dwa miasta<br/>
3.<input type="checkbox" name="trzy" value=1/>trzy miasta<br/>
4.<input type="checkbox" name="wiecej" value=1/>wiecej niz trzy<br/>
<hr />

<input type="submit" value="Sprawdź ceny"/>


PHP:
Code:
<table border="1" bgcolor=CCCCCC, cols width="30%">
            <tr>
                   <td>Rodzaj</td>
               <td>Cena Zwykła</td>
                <?php
               $group = $_POST['group'];
               if($group == 'Tak')
               {
               echo '<td>Cena z rabatem</td>';
               }
            ?>
                </tr>
               
                <?php
            
            
            $rodzaj = array($jedno, $dwa, $trzy, $wiecej);
            $typbiletu = array('jedno miasto', 'dwa miasta', 'trzy miasta', 'wiecej niz trzy');
            $cenyzwykle = array('1,90', '2,40', '2,60', '3,20');
            $cenyulgowe = array('1,40', '1,90', '2,10', '2,70');
                     
            for($i=0; $i<4; $i++)
            {
               if($rodzaj[$i] == 1)
               {
                  if($group == 'Tak')
                  {
                     echo
                         '<td>'. "$typbiletu[$i]".'</td>
                     <td>'. "$cenyzwykle[$i]".'</td>
                     <td>'. "$cenyulgowe[$i]".'</td>';
                  }
                  else
                  {
                     echo
                         '<td>'. "$typbiletu[$i]".'</td>
                     <td>'. "$cenyzwykle[$i]".'</td>';
                  }
            
                  echo
                  '<tr>';
               }
            }
            ?>
                 
            </tr>
            </table>
             
                </center>


Poprawiłem Posta(zapodział mi się pierwszy fragment php), proszę o sprawdzenie czy jest ok.
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 23 Mar 2010 16:38   





Back to top
   
arnoldziq
Poziom 22
Poziom 22


Joined: 14 Apr 2006
Posts: 2433
Location: High Wycombe

Post#11 23 Mar 2010 16:43   

Re: [PHP] Dynamiczne Tabele w HTML


Ta część jest trochę dziwna :
Code:
 define( 'Cenarabatu', 0,50);
            $a = 1.99;
            $b = '2,20';

$a to liczba a $b to ciąg znaków ?
Back to top
   
toma5z
Poziom 13
Poziom 13


Joined: 10 May 2006
Posts: 117
Location: k-ce

Post#12 Post from the author of the topic 23 Mar 2010 22:32   

Re: [PHP] Dynamiczne Tabele w HTML


arnoldziq wrote:
Ta część jest trochę dziwna :
Code:
 define( 'Cenarabatu', 0,50);
            $a = 1.99;
            $b = '2,20';

$a to liczba a $b to ciąg znaków ?



Przepraszam, tego nie ma...
To był prototyp wyświetlania cen biletów, przed pomysłem wykorzystania tablic.
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> Beginners Programming -> [PHP] Dynamiczne Tabele w HTML
Page 1 of 1
Similar topics
[PHP] Dynamiczne tworzenie tabel (3)
[JS][HTML] Dynamiczne zmienianie koloru czcionki. (6)
Dwa zadania z PHP - tabele itp. (3)
[PHP MYSQL] Jedno zapytanie 2 tabele (4)
[html, php, mysql] Jak zabronić zaczników html? (2)
[C++] tabele dynamiczne - jednowymiarowe (3)
[PHP + JavaScript] Dynamiczne kadrowanie zdjęć (3)
kodowanie stron PHP/HTML (2)
[PHP][JS][HTML]Problem ze skryptem (21)
[HTML][PHP] Rozpoznanie żądania (6)

Page generation time: 0.138 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed