| Author |
Message
|
toma5z Poziom 13

Joined: 10 May 2006 Posts: 117 Location: k-ce
|
#1
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

Joined: 15 May 2005 Posts: 4528 Location: Żory (kiedyś Opole)
|
#2
20 Mar 2010 11:05 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

|
#
20 Mar 2010 11:05 |
|
|
|
|
|
| Back to top |
|
 |
toma5z Poziom 13

Joined: 10 May 2006 Posts: 117 Location: k-ce
|
#3
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

Joined: 14 Apr 2006 Posts: 2433 Location: High Wycombe
|
#4
20 Mar 2010 12:02 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

|
#
20 Mar 2010 12:02 |
|
|
|
|
|
| Back to top |
|
 |
toma5z Poziom 13

Joined: 10 May 2006 Posts: 117 Location: k-ce
|
#5
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

Joined: 15 May 2005 Posts: 4528 Location: Żory (kiedyś Opole)
|
#6
20 Mar 2010 15:06 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

Joined: 25 Oct 2009 Posts: 13
|
#7
20 Mar 2010 19:14 Re: [PHP] Dynamiczne Tabele w HTML |
|
|
|
nom w drugim pliku musisz na początku dodać:
$group = $_POST['group'];
|
|
| Back to top |
|
 |
toma5z Poziom 13

Joined: 10 May 2006 Posts: 117 Location: k-ce
|
#8
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

Joined: 15 May 2005 Posts: 4528 Location: Żory (kiedyś Opole)
|
#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

Joined: 10 May 2006 Posts: 117 Location: k-ce
|
#10
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

|
#
23 Mar 2010 16:38 |
|
|
|
|
|
| Back to top |
|
 |
arnoldziq Poziom 22

Joined: 14 Apr 2006 Posts: 2433 Location: High Wycombe
|
#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

Joined: 10 May 2006 Posts: 117 Location: k-ce
|
#12
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 |
|
 |