Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [PHP]Problem z krótkim kodem
7sekund
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Witam,

chciałbym zapytać co zrobić aby poniższy skrypt wypisywał na ekran tyle linii, jaka jest wartość zmiennej $wierszy.
W pierwszej linii znajdować się powinna jedna *, każdy kolejny wiersz, to o jedną * więcej.
W efekcie działania skryptu wiersze powinny wyglądać następująco:

*
**
***
****
*****

Tyle udało mi się napisać:
  1. <?php
  2. $wierszy = 5;
  3. for($i=0; $i<5; $i++){
  4. for($j=0; $j<5; $j++){
  5. echo ' ';
  6. }
  7. echo $wierszy.="*";
  8. }
  9. ?>


Czy mógłbym prosić o wskazówkę, jak ten skrypt poprawić , aby działał tak, jak opisałem wyżej?
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




Sobie czasami tak zycie utrudniacie na wlasne zyczenie....

  1. $wierszy = 5;
  2. for($i=1; $i<=$wierszy; $i++){
  3. echo str_repeat("*", $i) . '<br />;
  4. }

Chyba ze to nie na ekran a do pliku to wtedy nie '<br />' a "\n"


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
7sekund
post
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Dzięki tyle, że ja nie znam tej funkcji str_repeat() , bo ćwiczę dopiero najprostsze podstawy i jestem na etapie pętli , ale na pewno przyda mi się to w dalszym etapie nauki.
Mam nadzieję, że będą te dalsze etapy, bo jak na razie to jest tak, że nad jednym prostym skryptem siedzę 2 godziny i nic nie posuwam się do przodu. Obawiam się tylko tego, żebym się nie zniechęcił do programowania w PHP:-(

Czy jest jakiś sposób, żeby samemu umieć dochodzić do rozwiązania problemu, przynajmniej w tak prostych skryptach?
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Cytat
Obawiam się tylko tego, żebym się nie zniechęcił do programowania w PHP
Nie ma znaczenia czy to php, java czy inny jezyk. Petle to petle wink.gif

  1. $wierszy = 5;
  2. for($i=1; $i<=$wierszy; $i++){
  3. for($j=1; $j<=$i; $j++){ // ta petla bedzie isc w gore do wartosci z $i i odpowiada za liczbe gwiazdek w wierszu
  4. echo '*';
  5. }
  6. echo '<br />'; //nowa linia
  7. }


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
7sekund
post
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Super , to działa teraz !
Bardzo Ci dziękuję, także za te komentarze w kodzie ! :-) :-)

Witam ponownie.
Mam w ramach ćwiczenia taki oto kod:

  1. <?php
  2. define("KOSZULKA", 14.99); // cena koszulki jako stała
  3. define("SPODNIE", 45.99); //cena spodni
  4. define("BUTY", 30.00); // cena butów
  5. define("CZAPKA", 9.63); // cena czapki
  6. define("P_VAT", 0.23); // wysokość podatku vat
  7.  
  8. //przypisanie zmiennych formularza
  9. $ile_koszulki = $_POST['koszulki'];
  10. $ile_spodnie = $_POST['spodnie'];
  11. $ile_buty = $_POST['buty'];
  12. $ile_czapki = $_POST['czapki'];
  13. $ile_zaplata = $_POST['zaplata'];
  14.  
  15. //wartość netto zamówionych przedmiotów
  16. $kwota_koszulki_netto = $ile_koszulki * KOSZULKA;
  17. $kwota_spodnie_netto = $ile_spodnie * SPODNIE;
  18. $kwota_buty_netto = $ile_buty * BUTY;
  19. $kwota_czapki_netto = $ile_czapki * CZAPKA;
  20.  
  21. //cena netto całego zamówienia
  22. $kwota_zamowienia_netto = $kwota_koszulki_netto + $kwota_spodnie_netto + $kwota_buty_netto + $kwota_czapki_netto;
  23.  
  24. //wartości brutto
  25. $kwota_koszulki_brutto = $kwota_koszulki_netto + $kwota_koszulki_netto * P_VAT;
  26. $kwota_spodnie_brutto = $kwota_spodnie_netto + $kwota_spodnie_netto * P_VAT;
  27. $kwota_buty_brutto = $kwota_buty_netto + $kwota_buty_netto * P_VAT;
  28. $kwota_czapki_brutto = $kwota_czapki_netto + $kwota_czapki_netto * P_VAT;
  29. $kwota_zaplata_brutto = $ile_zaplata;
  30.  
  31. //cena zamówienia brutto
  32. $kwota_zamowienia_brutto = $kwota_koszulki_brutto + $kwota_spodnie_brutto + $kwota_buty_brutto + $kwota_czapki_brutto
  33.  
  34. //wydawana reszta od zapłaconej kwoty
  35. $reszta = $kwota_zaplata_brutto - $kwota_zamowienia_brutto;
  36. ?>


Czy mógłby ktoś podpowiedzieć czemu wychodzi błąd o tym, że zmienna $reszta jest niezdefiniowana ?

Ten post edytował 7sekund 7.03.2022, 20:42:04
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Bo zmienne $_POST są niezdefiniowane?


--------------------
Go to the top of the page
+Quote Post
7sekund
post
Post #7





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Ok już wiem, głupi błąd, polegający na tym, że po poprzedniej zmiennej nie było tam średnika....
Nie wiem dlaczego serwer wypisuje wtedy błąd o niezdefiniowanej zmiennej.

Dalej jest taki kod w pliku html:

  1. <form action="zamowienie.php" method="post">
  2. Liczba zamawianych koszulek:
  3. <input type="text" name="koszulki" size=3 maxsize=3 /><br />
  4. Liczba zamawianych spodni:
  5. <input type="text" name="spodnie" size=3 maxsize=3 /><br />
  6. Liczba zamawianych par butów:
  7. <input type="text" name="buty" size=3 maxsize=3 /><br />
  8. Liczba zamawianych czapek:
  9. <input type="text" name="czapki" size=3 maxsize=3 /><br />
  10. <label for="zaplata">Zapłata: </label>
  11. <input type="text" name="zaplata" size=3 maxsize=3 value=""/><br />
  12. <input type="submit" value="Złóż zamówienie" />
  13. </form>
  14. </body>


Mam takie pytanie: jak przekazać wartość zapłaty za produkty, wykorzystując funkcję echo w atrybucie value pola typu hidden ?

Jak zrobię input type="hidden" , to wtedy tej wartości zapłaty nie ma gdzie wpisać , bo pole "Zapłata" nie będzie widoczne na stronie....


Ten post edytował 7sekund 11.03.2022, 12:59:08
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




No jesli to jest doslownie plik .html to nic nie zrobisz. Co innego gdyby to byl plik php generujacy html smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
7sekund
post
Post #9





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Ok, dzięki za podpowiedź.
Chodzi o wykorzystanie wtedy funkcji $_SERVER['PHP_SELF']; w atrybucie action formularza?
Go to the top of the page
+Quote Post
gino
post
Post #10





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


Powinien wypisać błąd typu "Unexpected variable...".
Nie chodzi o wykorzystanie $_SERVER['PHP_SELF'], tylko o wygenerowanie całego pliku przez php, czyli zamiast rozszerzenia html musi być php.
Go to the top of the page
+Quote Post
viking
post
Post #11





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Stosuj też kod
  1. $ile_koszulki = $_POST['koszulki'] ?? 0;

Skoro to liczba to czemu nie https://developer.mozilla.org/en-US/docs/We...nt/input/number ?


--------------------
Go to the top of the page
+Quote Post
7sekund
post
Post #12





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


gino - tak wtedy będzie to plik *.php a nie *.html .
viking - dzięki za podpowiedź odnośnie type="number" zamiast "text".

Cześć,
mam teraz tabliczkę mnożenia do zrobienia w PHP i napisałem taki skrypt:

  1. <?php
  2. echo "<table>";
  3. for ($i=1; $i<=25; $i++) //wypisywanie w kolumnach - oś Y
  4. {
  5. echo "<tr>";
  6. for ($j=1; $j<=25; $j++) //wypisywanie w wierszach - oś X
  7. {
  8. echo '<td align="right">'; //wyrównanie do prawej w komórkach
  9. if ($i>0 && $j>0)
  10. {
  11. echo '<span style="color: blue">' . $i*$j . '</span>'; //niebieskie liczby parzyste
  12. }
  13.  
  14. ........
  15. {
  16. echo '<span style="color: red">' . $i*$j . '</span>'; //czerwone liczby nieparzyste
  17. }
  18.  
  19.  
  20. echo "</td>";
  21. }
  22. echo "</tr>";
  23. }
  24. echo "</table>";
  25. ?>


i nie wiem jaki warunek wpisać w te kropeczki, żeby uzyskać czerwone liczby nieparzyste.
Czy może ktoś podpowiedzieć? ;-)
Go to the top of the page
+Quote Post
trueblue
post
Post #13





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Proponuję wrócić do podstaw: https://www.matemaks.pl/liczby-parzyste-i-nieparzyste.html


--------------------
Go to the top of the page
+Quote Post
7sekund
post
Post #14





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Wiem jakie są zasady matematyczne, niemniej dzięki za podpowiedź aby szukać w tym kierunku ! To bardzo pomogło i efekt osiągnięty.
Teraz skrypt działa, a kod wygląda tak:

  1. <?php
  2. echo "<table>";
  3. for ($i=1; $i<=25; $i++) //wypisywanie w kolumnach - oś Y
  4. {
  5. echo "<tr>";
  6. for ($j=1; $j<=25; $j++) //wypisywanie w wierszach - oś X
  7. {
  8. echo '<td align="right">'; //wyrównanie do prawej w komórkach
  9. if ($i>0 && $j>0)
  10. {
  11. if (($i%2 == 0) || ($j%2 == 0))
  12. {
  13. echo '<span style="color: blue">' . $i*$j . '</span>'; //niebieskie liczby parzyste
  14. }
  15. else
  16. {
  17. echo '<span style="color: red">' . $i*$j . '</span>'; //czerwone liczby nieparzyste
  18. }
  19. }
  20. echo "</td>";
  21. }
  22. echo "</tr>";
  23. }
  24. echo "</table>";
  25. ?>

Go to the top of the page
+Quote Post
viking
post
Post #15





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Staraj się zawsze tak pisać kod aby modyfikować jak najmniejszy zakres danych powiązany z zadaniem. Co gdybyś miał tam inne, bardziej zaawansowane warunki dla span?
  1. if ($i>0 && $j>0)
  2. {
  3. $clEvenOdd = (($i%2 == 0) || ($j%2 == 0)) ? 'even' : 'odd';
  4. echo '<span class="'.$clEvenOdd.'">' . $i*$j . '</span>';
  5. }

Generujesz pełno zbędnego kodu dla align="right"? Dlaczego nie jedna definicja w css?
Dodatkowo echo "</table>"; Nie potrzebujesz parsować stringu zatem echo '</table>';


--------------------
Go to the top of the page
+Quote Post
7sekund
post
Post #16





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Cześć,
to się zgadza i kod, który napisałeś pewnie działa prawidłowo, ale ja jeszcze takich funkcji nie znam , bo ćwiczę podstawy, a tutaj chodziło po prostu o użycie pętli , więc tak zrobiłem.



Chciałbym zapytać o taki skrypt:

  1. <?php
  2. $ile = 1;
  3. for ($i=5; $i>=$ile; $i--)
  4. {
  5. for ($j=5; $j>=$i; $j--) //idzie w dół do wartości $i i wyswietla $j gwiazdek
  6. {
  7. echo '*';
  8. }
  9. echo '<br />';
  10. }
  11. ?>


Nie umiem tu zrobić tak, aby te pętle spowodowały efekt:
*****
****
***
**
*

Siedzę znowu z 1,5 godziny nad tym i nie wiem gdzie robię błąd! Czy ktoś mógłby podpowiedzieć jak to poprawić, żeby ten efekt był taki, jak wyżej z tymi gwiazdkami?
Go to the top of the page
+Quote Post
nospor
post
Post #17





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




Programowanie to tez myslenie, a nie ze ty odwracasz moj skrypt w calosci i zadowolony.
Skoro nie rozumiesz petli to usiadz przy nich dluzej


Przeciez o to
for ($j=5; $j>=$i; $j--) jest totalnie zle.
Ta druga petla ma nadal byc jak byly czyli
for ($j=1; $j<=$i; $j++)
przeciez $i zaczyna sie od pieciu i spada w dol a ty chcesz robic tylko gwiazdek ile ma $i a nie na odwrot


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
7sekund
post
Post #18





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


No właśnie siedzę przy tych pętlach już trzy dni z rzędu i umiem tylko z jedną zmienną zrobić, natomiast nie rozumiem jak działa skrypt, który zawiera dwie zmienne, jak tutaj $i i $j :-(
Szukałem tego w necie ale nic nie ma na ten temat, a przecież są takie możliwości , żeby dwie zmienne były w zagnieżdżonych pętlach lub w jednej.
Może źle szukam, nie wiem...:-(
Go to the top of the page
+Quote Post
nospor
post
Post #19





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




no przeciez ci podalem poprawny kod post wczesniej


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
7sekund
post
Post #20





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Tak, teraz sprawdziłem, dzięki - działa, ale chciałbym zrozumieć to działanie drugiej pętli.
Nie wiem gdzie szukać w necie jakichś omówień takich przykładów.. szukałem ale bez skutku :-(
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 23:37