Skrypt PHP przestał działać po umieszczeniu go stronie
|
tajpan |
Dodany dnia 02.09.2011 19:37:33
|
Przedszkolak
Postów: 18 Ostrzeżeń: 1
Data rejestracji: 30.04.2007 19:20
|
Witam.
Napisałem taki oto skrypt w PHP:
Formularz:
<form action="kcal_licz.php" method="post">
<fieldset>
<legend>Podstawowe informacje</legend>
<table border="0">
<tr>
<td>Płeć *</td>
<td><select name="plec" class="textbox">
<option value="m">Mężczyzna</option>
<option value="k">Kobieta</option>
</select></td>
<tr>
<td>Waga *</td>
<td><input type="text" name="waga" class="textbox" maxlength="3">
<tr>
<td>Wzrost *</td>
<td><input type="text" name="wzrost" class="textbox" maxlength="3">
<tr>
<td>Wiek *</td>
<td><input type="text" name="wiek" class="textbox" maxlength="2">
<tr>
<td>Budowa fizyczna *</td>
<td><select name="budowa" class="textbox">
<option value="endo">Endomorfik</option>
<option value="mezo">Mezomorfik</option>
<option value="ekto">Ektomorfik</option>
</select></td></table>
</fieldset>
<fieldset>
<legend>Trening aerobowy</legend>
<table border="0">
<tr>
<td>Czas</td>
<td><input type="text" name="a_czas" class="textbox" maxlength="3"></td>
<tr>
<td>Ilość (tygodniowo)</td>
<td><input type="text" name="a_ilosc" class="textbox" maxlength="2"></td>
<tr>
<td>Intensywność</td>
<td><select name="aeroby_intensywnosc" class="textbox">
<option value="w">Wysoka</option>
<option value="p">Przeciętna</option>
<option value="n">Niska</option>
</select></td></table>
</fieldset>
<fieldset>
<legend>Trening siłowy</legend>
<table border="0">
<tr>
<td>Czas</td>
<td><input type="text" name="s_czas" class="textbox" maxlength="3">
<tr>
<td>Ilość (tygodniowo)</td>
<td><input type="text" name="s_ilosc" class="textbox" maxlength="2">
<tr>
<td>Instensywność</td>
<td><select name="silownia_intensywnosc" class="textbox">
<option value="w">Wysoka</option>
<option value="p">Przeciętna</option>
<option value="n">Niska</option>
</select></td></fieldset></table></fieldset>
<fieldset>
<legend>Dieta</legend>
<table border="0">
<tr><td>Cel *</td>
<td><select name="cel" class="textbox">
<option value="masa">Masa</option>
<option value="redukcja">Redukcja</option></select>
<tr>
<td>+\- kcal *</td>
<td><input type="text" name="dieta" class="textbox" maxlength="3"></td></table></fieldset>
<fieldset>
<legend>Wartości odżywcze</legend>
<table border="0">
<tr>
<td>Białko *</td>
<td><input type="text" name="bialko" class="textbox" value="2.1"></td>
<tr>
<td>Tłuszcze *</td>
<td><input type="text" name="tluszcze" class="textbox" value="1.2"></td>
<tr>
<td>Węglowodany</td>
<td><input type="text" name="weglowodany" class="textbox" value="Obliczane przez skrypt" disabled="diasabled"></td>
<tr>
<td colspan="2"><i><h5><br>*Na kg masy ciała</h5></font></i></td>
</table></fieldset>
<input type="submit" value="Wyślij" class="button">
<input type="reset" value="Od nowa" class="button">
</form>
Obliczanie i drukowanie:
<?
if (!$waga || !$wzrost || !$wiek || !$dieta || !$bialko || !$tluszcze)
{
print '<center><font color="red"><h2>Wypełnij wszystkie wymagane pola (oznaczone *)</h2></font></center>';
} else
{
/*płeć */
If($_POST['plec'] == m)
{
$p = 5;
}
else
{
$p = -161;
}
/*Budowa fizyczna */
Switch ($_POST['budowa'])
{
case 'endo': $budowa = 200;
break;
case 'mezo': $budowa = 400;
break;
case 'ekto': $budowa = 700;
break;
}
/*Kcal spalane odczas wysiłku aerobowego */
Switch ($_POST['aeroby_intensywnosc'])
{
case 'w': $a_i = 10;
break;
case 'p': $a_i = 8;
break;
case 'n': $a_i = 6;
break;
}
/*EPOC - Kcal spalone po treningu aerobowym */
Switch ($_POST['aeroby_intensywnosc'])
{
case 'w': $a_EPOC = 180;
break;
case 'p': $a_EPOC = 35;
break;
case 'n': $a_EPOC = 5;
break;
}
/*Kcal spalane odczas wysiłku siłowego */
Switch ($_POST['silownia_intensywnosc'])
{
case 'w': $s_i = 9;
break;
case 'p': $s_i = 7;
break;
case 'n': $s_i = 8;
break;
}
/* cel redukcji */
If($_POST['cel'] == masa)
{
$cel_diety = $dieta;
}
else
{
$cel_diety = -$dieta;
}
/* BMR - podstawowa przemiana materii */
$BMR = round((9.99 * $waga) + (6.25 * $wzrost) - (4.92 * $wiek) + $p);
/*TEA - kalorie spalone ze względu na aktywność fizyczną*/
/*Kalorie spalone podczas wysiłku aerobowego */
$TEA_a = $a_czas * $a_ilosc * $a_i;
/*Kalorie spalane podczas wysiłku siłowego */
$TEA_s = $s_czas * $s_ilosc * $s_i;
/*aeroby- kalorie spalone podczas i po wysiłku aerobowym */
$aeroby = $TEA_a + $a_EPOC;
/*NEAT- kalorie spalane w ciągu dnia */
$NEAT = $budowa;
/*TDEE - dzienne zapotrzebowanie */
$TDEE = $BMR + ($TEA_a / 7) + ($TEA_s / 7) + $NEAT;
/*TEF - efekt termiczny pożywienia */
$TEF = ($TDEE * 7) / 100;
/*Kalorie spalane po wysiłku siłowym */
$EPOC_s = ($TDEE * 5)/100;
/*Ogólne zapotrzebowanie */
$kcal = $TDEE + $TEF + $EPOC_s;
/* Kcal, które powinieneś przyjmować podczas diety */
$kcal_obliczone = $kcal + $cel_diety;
/*Wartości odżywcze */
$bialko_calosc = $bialko * $waga;
$tluszcze_calosc = $tluszcze * $waga;
$weglowodany = round(($kcal_obliczone - (($bialko_calosc * 4) + ($tluszcze_calosc * 9))) / 4, 2);
print '<table border="0" align="center">';
print '<tr>';
print '<td bgcolor="#c6efce" colspan="2" align="center"><font color="#6e7a00"><center>Kcal</center></font></td></tr>';
print '<tr>';
print '<td bgcolor="#ff8080" align="center" width="400"><font color="#b60000"><center>Kalorie [Kcal] na diecie</center></font></td>';
print '<td bgcolor="#ffeb9c" align="center" width="150"><font color="#ce7d00"><center>'.round ($kcal_obliczone, 2).'</center></font></td>';
print '<tr>';
print '<td bgcolor="#ff8080" align="center"><font color="#b60000"><center>Dzienne zapotrzebowanie w celu utrzymania wagi </center></font></td>';
print '<td bgcolor="#ffeb9c" align="center"><font color="#ce7d00"><center>'.round ($kcal, 2).'</center></font></td>';
print '</table>';
print '<table border="0" align="center">';
print '<tr>';
print '<td bgcolor="#c6efce" colspan="2" align="center"><font color="#6e7a00"><center>Wartości odżywcze</center></font></td></tr>';
print '<tr>';
print '<td bgcolor="#ff8080" align="center" width="400"><font color="#b60000"><center>Białko</center></font></td>';
print '<td bgcolor="#ffeb9c" align="center" width="150"><font color="#ce7d00"><center>'.$bialko_calosc.'</center></font></td>';
print '<tr>';
print '<td bgcolor="#ff8080" align="center"><font color="#b60000"><center>Tłuszcze</center></font></td>';
print '<td bgcolor="#ffeb9c" align="center"><font color="#ce7d00"><center>'.$tluszcze_calosc.'</center></font></td>';
print '<tr>';
print '<td bgcolor="#ff8080" align="center"><font color="#b60000"><center>Węglowodany</center></font></td>';
print '<td bgcolor="#ffeb9c" align="center"><font color="#ce7d00"><center>'.$weglowodany.'</center></font></td>';
print '<tr>';
print '<td colspan="2">Skrypt stworzony przez administratora <a href="http://www.fit4life.cba.pl">Fit4Life</a></td>';
print '</table>';
}
?>
Skrypt był testowany na Krasnalu i wszystko działało bez zarzutu. Umieściłem go więc na stronie opartej na PHP-Fusion (Dodatkowe Strony). I tutaj zaczynają się problemy. Skrypt dokonuje błędnych obliczeń. Szwankuje też instrukcja IF, która sprawdza, czy formularz został wypełniony. Rano na stronie znajdowała się poprzednia wersja skryptu i wszystko działało bezproblemowo. O co chodzi?
Edytowane przez tajpan dnia 02.09.2011 19:40:29
|
|
|
|
Wścibski Gość |
Dodany dnia 24.11.2024 21:04:18
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
IP: localhost |
|
|
qba88 |
Dodany dnia 03.09.2011 09:17:51
|
Początkujący
Postów: 277 Pomógł: 14
v7.02.03 Data rejestracji: 14.08.2006 14:57
|
Nie wklejaj tego w dodatkowe strony, tylko zrób osobny plik PHP, i na początku pliku dodaj:
<?php
require_once "maincore.php";
require_once THEMES."templates/header.php";
a na końcu:
require_once THEMES."templates/footer.php";
?>
Jeśli Ci pomogłem, kliknij "Pomógł"
|
|
|
|
tajpan |
Dodany dnia 03.09.2011 12:15:29
|
Przedszkolak
Postów: 18 Ostrzeżeń: 1
Data rejestracji: 30.04.2007 19:20
|
Zrobiłem tak, ale nie pomogło |
|
|
|
cristo |
Dodany dnia 03.09.2011 12:22:35
|
Przedszkolak
Postów: 84 Ostrzeżeń: 1
v7.02.03 Data rejestracji: 02.08.2008 12:41
|
Zamień wszystkie " w tych plikach na '.
Prócz:
require_once "maincore.php";
require_once THEMES."templates/header.php";
require_once THEMES."templates/footer.php";
a treść pomiędzy tym wstaw w:
echo "treść";
U mnie działa.
Edytowane przez cristo dnia 03.09.2011 12:27:01
|
|
|
|
tajpan |
Dodany dnia 03.09.2011 12:26:42
|
Przedszkolak
Postów: 18 Ostrzeżeń: 1
Data rejestracji: 30.04.2007 19:20
|
A może to wina serwera? Wstawiłem skrypt na serwer "poza" PHP-Fusion i niestety problem się powtórzył. Korzystam z cba.
PS. Mógłbyś wprowadzić przykładowe dane i wstawić screena? U mnie też działa, ale wynik jest błędny. |
|
|
|
cristo |
Dodany dnia 03.09.2011 12:41:15
|
Przedszkolak
Postów: 84 Ostrzeżeń: 1
v7.02.03 Data rejestracji: 02.08.2008 12:41
|
Powiedz mi jak to wypełnić bo wyskakuje mi komunikat:
Wypełnij wszystkie wymagane pola (oznaczone *)
PS. Bo jak wystarczy wpisać cokolwiek w te pola to nie działa.
Edytowane przez cristo dnia 03.09.2011 12:47:53
|
|
|
|
tajpan |
Dodany dnia 03.09.2011 13:41:26
|
Przedszkolak
Postów: 18 Ostrzeżeń: 1
Data rejestracji: 30.04.2007 19:20
|
No właśnie. Mam tak samo po wrzuceniu na serwer. Na Krasnalu wszystko działa bez zarzutu . Spróbuj usunąć instrukcję warunkową:
Z pliku kcal_licz.php usuń
if (!$waga || !$wzrost || !$wiek || !$dieta || !$bialko || !$tluszcze)
{
print '<center><font color="red"><h2>Wypełnij wszystkie wymagane pola (oznaczone *)</h2></font></center>';
} else
{
I na końcu klamrę "}".
Weź przykładowo takie dane:
Płeć: Mężczyzna
Waga: 84
Wzrost: 183
Wiek: 24
Budowa: Mezomorfik
Trening aerobowy (Ilość: 2, czas: 60, intensywność: przeciętna)
Trening siłowy (Ilość: 3, czas: 60, intensywność: przeciętna)
Dieta: redukcja
+/- kcal: 400
Wartości odżywcze bez zmian
Powinno wyjść coś takiego:
Dla porównania- po podaniu tych samych informacji w skrypcie na serwerze otrzymuję coś takiego:
|
|
|
|
cristo |
Dodany dnia 03.09.2011 14:01:27
|
Przedszkolak
Postów: 84 Ostrzeżeń: 1
v7.02.03 Data rejestracji: 02.08.2008 12:41
|
Mi się pokazało coś takiego po usunięciu tych linijek:
Także chyba coś gdzieś źle liczy, ale tu już nie pomogę. |
|
|
|
tajpan |
Dodany dnia 03.09.2011 17:37:04
|
Przedszkolak
Postów: 18 Ostrzeżeń: 1
Data rejestracji: 30.04.2007 19:20
|
Testowałeś lokalnie, czy na jakimś serwerze? |
|
|
|
Adam Stalica |
Dodany dnia 03.09.2011 21:02:34
|
Początkujący
Postów: 213 Pomógł: 13
v7.02.03 Data rejestracji: 05.08.2010 17:24
|
@tajpan większość zmiennych bierzesz z kosmosu... Więc jak skrypt ma działać? Spróbuję Ci go poprawić i dać Ci gotowca...
EDIT: Poprawione pliki w załączniku...
Pozwoliłem sobie trochę zmienić kod, aby był dla mnie czytelniejszy
Na moje oko wszystko działa jak należy
Najlepiej porównaj swój kod z moim i zobacz co się zmieniło...
Pozdrawiam
Adam
Adam Stalica dodał/a następującą plik:
Edytowane przez Adam Stalica dnia 03.09.2011 21:29:02
Witam
|
|
|
|
tajpan |
Dodany dnia 04.09.2011 07:53:12
|
Przedszkolak
Postów: 18 Ostrzeżeń: 1
Data rejestracji: 30.04.2007 19:20
|
Działa. Wielkie dzięki Przejrzałem kod i już wiem, ze problem leżał w deklaracjach zmiennych. Na lokalu działało, ale jak widać serwer sobie z tym nie radził |
|
|