Skocz do zawartości
Zaloguj się, aby obserwować  
awarzych

Dodawanie w pętli php

Polecane posty

Witam,

jestem nowy więc wypadało by się przywitać. Do rzeczy. Piszę skrypt do szkoły i mam mały problem. Utworzyłem pętle for (jak niżej). Problem polega na tym, że muszę dodać w niej kilka zmiennych i chyba zwykłe "+" tu nie działa.

 

 

for( $x = 1; $x <= $czas; $x++ ){

  $jaz=$_POST['p']*$x; // ile samochód przejedzie w danym dniu (ile przejedzie dziennie * dzień eksploatacji)

  $cjd=$ckd*$jaz; //cena oleju napędowego na dany dzień (cena przejechania kilometra * liczba przejechanych)

  $cwpd=floor($jaz/$pd)*$cpd;//Cena wszystkich przeglądów samochodów na diesel (np. samochód przejedzie 18tys kilometrów a przegląd trzba robić co 4tys, zatem 4*cena przeglądu)

  $cjb=$ckb*$jaz; //cena benzyny na dany dzień (cena przejechania kilometra * liczba przejechanych)

  $cwpb=floor($jaz/$pb)*$cpb;//Cena wszystkich przeglądów samochodu na benzynę (np. samochód przejedzie 18tys kilometrów a przegląd trzba robić co 4tys, zatem 4*cena przeglądu)


echo "<tr>"."<td width='80px'>".$x."</td>";
echo"<td width='80px'>".$cjd+$cwpd+$_POST['a']."</td>";//zmienna a - cena samochodu na diesel
echo"<td width='80px'>".floor($jaz/$pd)."</td>"; //liczba wykonanych przeglądów dla diesla
echo"<td width='80px'>".$cjb+$cwpb+$_POST['b']."</td>";//zmienna b - cena samochodu na benzynę
echo"<td width='80px'>".floor($jaz/$pb)."</td>"."</tr>"; //liczba wykonanych przeglądów dla samochodu na benzynę


 }

 

Zdaję sobie sprawę, że pewnie to błahostka, ale nigdzie nie mogłem znaleźć odpowiedzi a php uczę się tydzień. Cały skrypt można zobaczyć na tej stronie

 

informatyka.tx9.pl

 

nie jest to finalna wersja pod względem grafiki, jak coś... Pozdrawiam

Edytowano przez awarzych (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze
for( $x = 1; $x <= $czas; $x++ ){

  $jaz=$_POST['p']*$x; // ile samochód przejedzie w danym dniu (ile przejedzie dziennie * dzień eksploatacji)

  $cjd=$ckd*$jaz; //cena oleju napędowego na dany dzień (cena przejechania kilometra * liczba przejechanych)

  $cwpd=floor($jaz/$pd)*$cpd;//Cena wszystkich przeglądów samochodów na diesel (np. samochód przejedzie 18tys kilometrów a przegląd trzba robić co 4tys, zatem 4*cena przeglądu)

  $cjb=$ckb*$jaz; //cena benzyny na dany dzień (cena przejechania kilometra * liczba przejechanych)

  $cwpb=floor($jaz/$pb)*$cpb;//Cena wszystkich przeglądów samochodu na benzynę (np. samochód przejedzie 18tys kilometrów a przegląd trzba robić co 4tys, zatem 4*cena przeglądu)

   $zm1 = floor($jaz/$pb);
    echo "<tr>"."<td width='80px'>".$x."</td>";
    echo "<td width='80px'>".$cjd+$cwpd+$_POST['a']."</td>";//zmienna a - cena samochodu na diesel
    echo "<td width='80px'>".$zm1."</td>"; //liczba wykonanych przeglądów dla diesla
    echo "<td width='80px'>".$cjb+$cwpb+$_POST['b']."</td>";//zmienna b - cena samochodu na benzynę
    echo "<td width='80px'>".$zm1."</td>"."</tr>"; //liczba wykonanych przeglądów dla samochodu na benzynę


 }

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

dzięki za pomoc, ale błąd jest w tych linijkach. Właściwie ja błędu nie widzę, ale działać nie chce...

 

	   echo "<td width='80px'>".$cjd+$cwpd+$_POST['a']."</td>";//zmienna a - cena samochodu na diesel

i
	    echo "<td width='80px'>".$cjb+$cwpb+$_POST['b']."</td>";//zmienna b - cena samochodu na benzynę

 

W ogóle wywala mi całą kolumnę. Jak napisze te zmienne po kropce to wszystko jest ok, jak pomnożę też, ale dodawać nie chce...

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

for( $x = 1; $x <= $czas; $x++ ){

  $jaz=$_POST['p']*$x; // ile samochód przejedzie w danym dniu (ile przejedzie dziennie * dzień eksploatacji)

  $cjd=$ckd*$jaz; //cena oleju napędowego na dany dzień (cena przejechania kilometra * liczba przejechanych)

  $cwpd=floor($jaz/$pd)*$cpd;//Cena wszystkich przeglądów samochodów na diesel (np. samochód przejedzie 18tys kilometrów a przegląd trzba robić co 4tys, zatem 4*cena przeglądu)

  $cjb=$ckb*$jaz; //cena benzyny na dany dzień (cena przejechania kilometra * liczba przejechanych)

  $cwpb=floor($jaz/$pb)*$cpb;//Cena wszystkich przeglądów samochodu na benzynę (np. samochód przejedzie 18tys kilometrów a przegląd trzba robić co 4tys, zatem 4*cena przeglądu)

   $zm1 = floor($jaz/$pb);
   $zma = $cjd+$cwpd+$_POST['a'];
   $zmb = $cjb+$cwpb+$_POST['b'];

	    echo "<tr>"."<td width='80px'>".$x."</td>";
	    echo "<td width='80px'>".$zma."</td>";//zmienna a - cena samochodu na diesel
	    echo "<td width='80px'>".$zm1."</td>"; //liczba wykonanych przeglądów dla diesla
	    echo "<td width='80px'>".$zmb."</td>";//zmienna b - cena samochodu na benzynę
	    echo "<td width='80px'>".$zm1."</td></tr>"; //liczba wykonanych przeglądów dla samochodu na benzynę


 }

 

Napisz na PW lub na GG 2802379 to ci pomogę jutro popołudniu jak do tego czasu nie uda ci się tego zrobić ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Post ze serii uczymy dobrych zasad programowania. :D

 

@autor - w ramach nauki porównaj kod z postów powyżej (dokładnie post @Kamikadze) z tym wklejonym poniżej, zawiera on poprawki i zarazem pokazuje dobre maniery w programowaniu. :) Nie patrzyłem czy poprawnie dodajesz etc, chodziło mi tylko o składnię i czytelność kodu.

 

for( $x = 1; $x <= $czas; $x++ ) {

 // ile samochód przejedzie w danym dniu (ile przejedzie dziennie * dzień eksploatacji)
 $jaz	= (int) $_POST['p'] * $x;

 //cena oleju napędowego na dany dzień (cena przejechania kilometra * liczba przejechanych)
 $cjd	= $ckd * $jaz;

 //Cena wszystkich przeglądów samochodów na diesel (np. samochód przejedzie 18tys kilometrów a przegląd trzba robić co 4tys, zatem 4*cena przeglądu)
 $cwpd   = floor( $jaz / $pd ) * $cpd;

 //cena benzyny na dany dzień (cena przejechania kilometra * liczba przejechanych)
 $cjb	= $ckb * $jaz;

 //Cena wszystkich przeglądów samochodu na benzynę (np. samochód przejedzie 18tys kilometrów a przegląd trzba robić co 4tys, zatem 4*cena przeglądu)
 $cwpb   = floor( $jaz / $pb ) * $cpb;

 $zm1	= floor( $jaz / $pb );
 $zma	= $cjd + $cwpd + (int) $_POST['a'];
 $zmb	= $cjb + $cwpb + (int) $_POST['b'];


 echo <<<EOT

<tr>
	<td width='80px'>$x</td>
	<td width='80px'>$zma</td>
	<td width='80px'>$zm1</td>
	<td width='80px'>$zmb</td>
	<td width='80px'>$zm1</td>
</tr>

 EOT;

}

Edytowano przez xorg (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

^ Może się czepiam, ale po co spacje przy nawiasach listy parametrów funkcji? To nie jest dobry nawyk. Żaden z podstawowych frameworków nie pozwala na coś takiego, a w standardzie PSR-2 wyraźnie zapisano "There MUST NOT be a space after the opening parenthesis, and there MUST NOT be a space before the closing parenthesis."

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tylko i wyłącznie dlatego, że kod jest dużo czytelniejszy w programach niepodświetlających składni danego języka, czyli np. forum. Normalnie nie używam spacji między nawiasami choćby z prostego powodu - nie widzę sensu dodawania sobie żmudnej pracy w postaci dodawania spacji. ;)

 

Żaden z podstawowych frameworków nie pozwala na coś takiego
Tzn ? PHP to PHP, i nie spotkałem się aby gdzieś coś nie działało przez dodatkową spację. Chętnie zobaczę przykład, zainteresowało mnie to :) chyba, że masz na myśli "nie pozwala" = "łamie wytyczne" :) Edytowano przez xorg (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Delikatnie odchodząc od głównego wątku, ciężko mi też uznać PSR-2 jako ogólnie przyjęte zasady...

 

... bo generalnie nie rozumiem narzucania czegoś w momencie gdy to kompletnie nic nie zmienia w kwestii działania / wydajności (mowa oczywiście o wciąż o wspominanym punkcie).

 

Kogoś kod jest gorszy bo używa funkcja( x ) zamiast funkcja(x), bo tak powiedział "ktoś z góry" ;)

 

Oczywiście nie neguję całej konwencji, bo większość punktów jest co najmniej wymagana, ale są takie z którymi się nie zgadzam.

Edytowano przez xorg (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dobra dzięki za pomoc. Wystarczyło utworzyć dodatkowe 4 zmienne przed echami... W sumie mam już 76 zmiennych, to chyba jakiś rekord jak na takie zadanie. Puki co poprawiona wersja jest na stronie informatyka.tx9.pl więc jak by się komuś nudziło to sobie może policzyć. Zrobię jeszcze lepszą grafikę, ale z tym mam nadzieję poradzę sobie bez waszej pomocy. Temat do zamknięcia, chyba, że ma ktoś coś do dodania...

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

^ Może się czepiam, ale po co spacje przy nawiasach listy parametrów funkcji? [...]

 

Zawsze możesz sobie kod przeformatować jakimś programem według własnego gustu. To dużo łatwiejsze niż toczenie świętych wojen o spacje, nawiasy i przecinki. ;-)

 

Tutaj jest długa lista odpowiednich narzedzi: http://coding.smashi...-and-formatter/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

... bo generalnie nie rozumiem narzucania czegoś w momencie gdy to kompletnie nic nie zmienia w kwestii działania / wydajności (mowa oczywiście o wciąż o wspominanym punkcie).

 

Widocznie nigdy nie pracowałeś nad dużymi projektami, gdzie pracuje wiele osób. Jednolity styl programowania to podstawa. Stawianie spacji po otwarciu nawiasu niestety od standardów odbiega, pozatym w języku interpretowanym jak php nadużywanie znaków, ma wpływ na "szybkość" interpretacji.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dobra skorzystam z tego, że jeszcze nikt nie zamknął wątku. Więc próbuję jakoś urozmaicić skrypt, mam czas do końca miesiąca więc mogę się jeszcze pobawić. Dodałem już wysyłanie raportu na maila, jednak ciekawi mnie jeszcze jedno. Czy można przedstawić sumę kosztów z pętli w formie wykresu? Tzn. pionowo idzie koszty a poziomo dni i puścić dwie linie i np. czerwona oznacza koszty dla diesla a zielona dla benzyny.

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wykresy to raczej już HTML, CSS, ew JavaScript, w PHP możesz co najwyżej podstawić dane do wykresu, lecz nie go narysować...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czy można przedstawić sumę kosztów z pętli w formie wykresu? Tzn. pionowo idzie koszty a poziomo dni i puścić dwie linie i np. czerwona oznacza koszty dla diesla a zielona dla benzyny.

 

Możesz skorzystać z jakiejś biblioteki PHP do robienia wykresów albo obrazków. Poszukaj w Google "php chart" i/lub "php graph".

Jedna z wielu dyskusji na ten temat: http://stackoverflow...s-charts-in-php

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

poszukałem trochę i chyba najlepszym rozwiązaniem jest "open flash chart" z resztą sami oceńcie http://teethgrinder.co.uk/open-flash-chart/

Ale w moim przypadku i tak to odpada, bo wartości osi trzeba samemu podać a w tym skrypcie ktoś może zrobić kalkulację na 10 albo 10 tys. dni.

 

@xorg możesz rozwinąć myśl? Wykres w Html i Css?

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

poszukałem trochę i chyba najlepszym rozwiązaniem jest "open flash chart" z resztą sami oceńcie http://teethgrinder.co.uk/open-flash-chart/

Ale w moim przypadku i tak to odpada, bo wartości osi trzeba samemu podać a w tym skrypcie ktoś może zrobić kalkulację na 10 albo 10 tys. dni.

 

@xorg możesz rozwinąć myśl? Wykres w Html i Css?

 

Pozdrawiam

 

Nie używaj flash, jest to już przestarzała technologia. Jeśli chodzi o html i css, dużo jest gotowych bibliotek, np. http://www.flotcharts.org/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

a co jest nie tak z flashem? Jedyny minus jaki słyszałem to problem z wyszukiwaniem (poprawna interpretacja przez google). Powiem szczerze, że sugerowałem się tylko estetyką, bo jak dla mnie wygląda lepiej od libchart itp. Właściwie rozwiązałem już problem osi, wstawię po prostu zmienną. Nie będzie można najechać na dowolny dzień ale będzie wykres od pierwszego do ostatniego. Teraz pozostał wybór biblioteki. Coś poza wyżej wymienioną polecasz?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

a co jest nie tak z flashem? Jedyny minus jaki słyszałem to problem z wyszukiwaniem (poprawna interpretacja przez google). Powiem szczerze, że sugerowałem się tylko estetyką, bo jak dla mnie wygląda lepiej od libchart itp. Właściwie rozwiązałem już problem osi, wstawię po prostu zmienną. Nie będzie można najechać na dowolny dzień ale będzie wykres od pierwszego do ostatniego. Teraz pozostał wybór biblioteki. Coś poza wyżej wymienioną polecasz?

 

Flash nie działa dobrze na wielu platformach, zużywa dużo zasobów - a co za tym idzie i prądu, przez co używanie go na urządzeniach mobilnych nie jest wskazane. Stosuje się go już chyba tylko tam gdzie html5 sobie nie radzi, to jest przy streamingu z kamer, sam Adobe wycofuje flash z urządzeń mobilnych i zaleca używanie html5.

 

Całkiem dobrą biblioteką jest też http://www.highcharts.com/products/highcharts darmowa do zastosowań niekomercyjnych.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×