Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z pętlami
Forum PHP.pl > Forum > PHP
SeSO
Mój problem jest taki że gdy używam pętli w php to zostaje wyświetla mi pusta strona zaś gdy wykasuję linijkę z pętlą to działa. Zdaje mi się że czegoś nie ustawiłem w konfiguracji php. Dopiero zaczynam się uczyć wiec nie wiem co może być nie tak.

Dziękuję i proszę o pomoc.

POZDRAWIAM.
Cezar708
widzę pierwszy post.. może podasz w jakiś przykład? Znacznie ułatwi to nam pomoc. winksmiley.jpg
SeSO
Treść index.html :
  1. <form action="php.php" method=post>
  2.  
  3. <table border=0>
  4.  
  5. <tr bgcolor=#CCCCCC>
  6. <td>KALKULATOR</td>
  7. </tr>
  8.  
  9. <tr>
  10. <td>Pierwsza zmienna</td>
  11. <td align="center"><input type="text" name="zmienna_a" size="5" maxlength="5"></td>
  12. </tr>
  13.  
  14. <tr>
  15. <td>Druga zmienna</td>
  16. <td align="center"><input type="text" name="zmienna_b" size="5" maxlength="5"></td>
  17. </tr>
  18.  
  19. <tr>
  20. <td>Podaj wysokość potęgi</td>
  21. <td align="center"><input type="text" name="wysokosc_potegi" size="5" maxlength="2"></td>
  22. </tr>
  23.  
  24. <tr>
  25. <td>DOKONAJ WYBORU: </td>
  26. <td>
  27. <select name="dzialanie">
  28. <option value = "dodawanie"> Dodawanie
  29. <option value = "odejmowanie"> Odejmowanie
  30. <option value = "mnozenie"> Mnożenie
  31. <option value = "dzielenie"> Dzielenie
  32. <option value = "potegowanie"> Potęgowanie
  33. </select>
  34. </td>
  35. </tr>
  36.  
  37. <tr>
  38. <td colspawn="2" align="center"><input type="submit" value="WYKONAJ"></td>
  39. </tr>
  40.  
  41. </table>
  42.  
  43. </form>


Treść php.php:
  1. <body>
  2. <?php
  3.  /* *********Sprawdza wysokość potęgi********* */
  4.  //if($potega==0)
  5.  // $potega=2;
  6.  /* *********Deklarowanie zmiennej wynik********* */
  7.  $wynik=0;
  8.  /* *********Funkcja switch********* */
  9.  switch($dzialanie)
  10. {
  11.  case 'dodawanie':
  12. $wynik=$zmienna_a+$zmienna_b;
  13. break;
  14.  case 'odejmowanie':
  15. $wynik=$zmienna_a-$zmienna_b;
  16. break;
  17.  case 'dzielenie':
  18. $wynik=$zmienna_a/$zmienna_b;
  19. break;
  20.  case 'mnozenie':
  21. $wynik=$zmienna_a*$zmienna_b;
  22. break;
  23.  case 'potegowanie':
  24. $wynik=$zmienna_a*$zmienna_a;
  25.  for($i = 0 ; $i < $potega ; i++)
  26. {
  27. $wynik*=$zmienna_a;
  28. }
  29. break;
  30. }
  31. echo '<P>Wynik: '.$wynik;
  32. ?>
  33. </body>
  34. </html>


Gdy tylko usunę pętle wszystko działa poprawnie.

Kiedy nie ma pętli jest wszystko dobrze zaś gdy ją umieszczę jest już źle sad.gif

Myślę że coś nie tak z konfiguracją Apache albo php sad.gif

Dzięki za zainteresowanie smile.gif

Acha i nie chodzi czy pętla się dobrze wykonuje tylko o to dla czego nie wyświetlają się żadne informacje chociaż by o tym że jest jakiś błąd.

POZDRAWIAM smile.gif
kwiateusz
nie problem z php a z Twoim sposobem pisania smile.gif od dawna register_globals sa na off i wszelkie dane post przejmujemy tak $_POST['cos'] smile.gif
Cezar708
kilka spraw:

1. nie masz w formatce zmiennej i nazwie 'potega' tylko ewentualnie 'wysokosc_potegi'

2. aby wykonać potegowanie użyj po prostu funkcji pow($podstawa_potegi, $wykladnik); http://pl2.php.net/manual/en/function.pow.php

3. Jeśli zaczynasz naukę to od razu ustaw w konfiguracji register_globals na 'Off', i ucz się zapisu
  1. <?php
  2. switch ($_POST['dzialanie']){
  3.  // case'y
  4. }
  5. ?>


zamiast

  1. <?php
  2. switch ($dzialanie){
  3.  // case'y
  4. }
  5. ?>


ma to duże znaczenie jeśli chodzi o bezpieczeństwo
... innego problemu tu nie widzę... może masz jakiś error_log albo inny sposób na zgłaszanie błędów?
SeSO
Cytat(Cezar708 @ 15.02.2007, 00:37:03 ) *
3. Jeśli zaczynasz naukę to od razu ustaw w konfiguracji register_globals na 'Off'


A gdzie to ustawić?


Ok. Już znalazłem ale dalej mi nie działa sad.gif

Może mógłbyś napisać taki mały skrypt z pętlą nie wiem żeby działał.

Plisss a ja zobaczę co jest nie tak.

Cytat(kwiateusz @ 15.02.2007, 00:36:26 ) *
nie problem z php a z Twoim sposobem pisania smile.gif od dawna register_globals sa na off i wszelkie dane post przejmujemy tak $_POST['cos'] smile.gif



Acha sorki tamta część mi uciekła nie zauważyłem tongue.gif

  1. <?php
  2.  /* *********Delkarowanie zmiennych********* */
  3.  $zmienna_a=$_POST['zmienna_a'];
  4.  $zmienna_b=$_POST['zmienna_b'];
  5.  $wysokosc_potegi=$_POST['wysokosc_potegi'];
  6. ?>


Tak już miałem od samego początku tylko nie dodałem do komentarza sad.gif

Tak czy siak nie działa mi dalej. Jeszcze raz zamieszczę całość:
php.php:
  1. <?php
  2.  /* *********Delkarowanie zmiennych********* */
  3.  $dzialanie=$_POST['dzialanie'];
  4.  $zmienna_a=$_POST['zmienna_a'];
  5.  $zmienna_b=$_POST['zmienna_b'];
  6.  $potega=$_POST['wysokosc_potegi'];
  7. ?>
  8.  
  9. <html>
  10. <head>
  11.  <h1>WYNIK</h1>
  12. </head>
  13. <body>
  14. <?php
  15.  /* *********Sprawdza wysokość potęgi********* */
  16.  //if($potega==0)
  17.  // $potega=2;
  18.  /* *********Deklarowanie zmiennej wynik********* */
  19.  $wynik=0;
  20.  /* *********Funkcja switch********* */
  21.  switch($dzialanie)
  22. {
  23.  case 'dodawanie':
  24. $wynik=$zmienna_a+$zmienna_b;
  25. break;
  26.  case 'odejmowanie':
  27. $wynik=$zmienna_a-$zmienna_b;
  28. break;
  29.  case 'dzielenie':
  30. $wynik=$zmienna_a/$zmienna_b;
  31. break;
  32.  case 'mnozenie':
  33. $wynik=$zmienna_a*$zmienna_b;
  34. break;
  35.  case 'potegowanie':
  36. $wynik=$zmienna_a*$zmienna_a;
  37.  for($i = 0 ; $i < $potega ; i++);
  38.  // {
  39.  //  $wynik*=$zmienna_a;
  40.  // }
  41. break;
  42. }
  43. echo '<P>Wynik: '.$wynik;
  44. ?>
  45. </body>
  46. </html>


index.html:
  1. <form action="php.php" method=post>
  2.  
  3. <table border=0>
  4.  
  5. <tr bgcolor=#CCCCCC>
  6. <td>KALKULATOR</td>
  7. </tr>
  8.  
  9. <tr>
  10. <td>Pierwsza zmienna</td>
  11. <td align="center"><input type="text" name="zmienna_a" size="5" maxlength="5"></td>
  12. </tr>
  13.  
  14. <tr>
  15. <td>Druga zmienna</td>
  16. <td align="center"><input type="text" name="zmienna_b" size="5" maxlength="5"></td>
  17. </tr>
  18.  
  19. <tr>
  20. <td>Podaj wysokość potęgi</td>
  21. <td align="center"><input type="text" name="wysokosc_potegi" size="5" maxlength="2"></td>
  22. </tr>
  23.  
  24. <tr>
  25. <td>DOKONAJ WYBORU: </td>
  26. <td>
  27. <select name="dzialanie">
  28. <option value = "dodawanie"> Dodawanie
  29. <option value = "odejmowanie"> Odejmowanie
  30. <option value = "mnozenie"> Mnożenie
  31. <option value = "dzielenie"> Dzielenie
  32. <option value = "potegowanie"> Potęgowanie
  33. </select>
  34. </td>
  35. </tr>
  36.  
  37. <tr>
  38. <td colspawn="2" align="center"><input type="submit" value="WYKONAJ"></td>
  39. </tr>
  40.  
  41. </table>
  42.  
  43. </form>


Wszystko było dobrze ale coś jednak z pętlą for gdy wykorzystałem do...while poszło. Ale co z tą pętlą?? Może wy wiecie?

Tak wygląda ta pętla:
  1. <?php
  2. for($i = 0 ; $i < $potega ; i++)
  3. {
  4.  $wynik*=$zmienna_a;
  5. }
  6. ?>


Taki komunikat:
Parse error: parse error, unexpected T_INC, expecting ')' in D:\Programy\EasyPHP 2.0b1\www\php.php on line 39" title="Zobacz w manualu php" target="_manual

Dzięki smile.gif
Wave
"i++" ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.