Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dane liczbowe
Forum PHP.pl > Forum > Przedszkole
fokra
mam taki problemik-pewnie dlatego że jestem w tym "zielony"- z poziomu formularza html wysyłam różne dane do skryptu php, między innymi liczbowe. dane o charakterze liczb całkowitych są interpretowane w skrypcie prawidłowo, natomiast te co mają coś po przecinku (lub kropce-próbowałem i tak i tak) niestety parser na serwerze do obróbki bierze tylko pierwszą liczbę (tylko to co przed znakiem , lub . ) co z tym począć?? i pliski nie wściekajcie się że zadaję takie pytanie...
mike
A możesz podać kod, króry załatwia przetwarzanie danych przychodzących. Podaj też kod HTML formularza jeśli to istotne.

Trochę w ciemno ciężko coś poradzić.

Jasnowidzownie wyginęli tongue.gif
fokra
kod html:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  3. <base href="kable">
  4. <title>kable_form</title>
  5. </head>
  6. <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" alink="#FF0000" vlink="#800080"><hr><hr>
  7. <form action="kable.php" method="get" enctype="text/plain" target="_self" accept-charset="iso-8859-2" style="border: medium none">
  8. długość obwodu w metrach
  9. <input type="text" name="dlug" value="10" size="6" maxlength="4" align="middle"><br>
  10. przekrój przewodu w mm<sup>2</sup>
  11. <input type="text" name="przekroj" value="1"size="5" maxlength="3" align="middle"><br>
  12. materiał przewodu
  13. <select name="material" size="1">
  14. <option value="57">MiedĽ</option>
  15. <option value="36">Aluminium</option>
  16. napięcie względem ziemi przy zwarciu
  17. <select name="uo" size="1">
  18. <option value="230">230 V</option>
  19. <option value="500">500V</option>
  20. warunki środowiskowe
  21. <select name="warsrod" size="1">
  22. <option value="2/10">I </option>
  23. <option value="4/10">II</option>
  24. <input type="submit" value="Wyślij"><br>
  25. <input type="reset" value="Popraw">
  26. </form><hr><hr>
  27.  
  28. <!-- To jest miejsce na treść dokumentu -->
  29.  
  30. </body>
  31. </html>



kod php:
  1. <?php
  2. $Zs=(2*$_GET[dlug])/($_GET[material]*$_GET[przekroj]);
  3. $ia=$_GET[uo]/$Zs;
  4. echo "rezystancja petli zwarcia Rs = <big> <TT><br><B>", (2*$_GET[dlug])/($_GET[material]*$_GET[przekroj]) , "</B></TT></big> &#937<br> Można w zasadzie przyjąć, że impedancja pętli zwarcia <B>Z<sub>s</sub></B> jest zwykle bardzo bliska rezystancji pętli zwarcia <B>R<sub>s</sub></B>, jeśli oczywiście rozpatrujemy obwody do 1kV w typowych instalacjach a więc <B>Z<sub>s</sub> = R<sub>s</sub><br><center><big><TT> WARUNEK SZYBKIEGO WYَCZENIA</TT></big></center><br>U<sub>o</sub> &#8260 Z<sub>s</sub> &#8805 I<sub>a</sub></b><br> Prąd powodujący zadziałanie zabezpieczenia w dostatecznie krótkim czasie musi by
    ć mniejszy lub równy<br><b><big><TT>"
    ,$ia,"</TT></big> </b> A<br><br> Jeżeli jest to niemożliwe do spełnienia, bo już mamy zainstalowany jakiś bez
    piecznik, to sprawdzamy: <br><br><center><big><TT><B> WARUNEK BEZPIECZNEGO NAPICIA DOTYKU</B></TT></big></center><br><big><b>U<sub>d</sub> &#8805 Z<sub>pe</sub> * I<sub>s</sub></b></big><br>
  5. gdzie:<br>
  6. U<sub>d</sub> = dopuszczalne napięcie dotykowe w danych warunkach środowiskowych (50 lub 25 V AC / 50Hz), w [V],<br>
  7. Z<sub>pe</sub> = impedancja przewodu ochronnego (zwykle połowa impedancji zwarcia <b>Zs</B>), w &Omega,<br>I<sub>s</sub> = spodziewany prąd zwarcia, w [A].</b></big><br>Jeśli urządzenie jest chronione  żyłą PE z tego samego kabla co przewód fazowy, to można przyjąć, że <b>Z<sub>pe</sub></b> = 1/2 <b>Z<sub>s</sub></b>. W przeciwnym wypadku należy zmierzyć rzeczywistą wartość tej rezystancji";
  8. ?>

nie wszystkie zmienne są wykorzystane z tego względu że to "coś" znajduje się w fazie projektu..

----edit----
Proszę używać tagó bbCode, w przyszłości to wstawiania kodów źródłowych.
~mike_mech
dr_bonzo
Skonwertuj wszystkie dane do float'ow
float( $_GET[ 'material' ]) bo inaczej bedzie wykonywalo obliczenia na integerach, gdy jeden z argumentow bedzie int'tem.

( $_GET[ 'material' ] nie $_GET[ material ] )
fokra
niestety nie działa..
dr_bonzo
A chcesz sie zalozyc?
Pokaz jak to zrobiles i co nie dziala (tresc bledu + wskaz linijke w kodzie).
fokra
już zmieniłem na to co było wcześniej.. a każdym razie mi wyrzucało takie coś że funkcja float nieobsługiwana.. czy coś w tym stylu.. jutro (znaczy dzisiaj o "ludzkiej porze" napiszę" dokładnie..
dr_bonzo
Moj blad: floatval( $x ), lub (float)$x
fokra
dzięki za rady. częściowo pomogło tylko został taki problemik, że zwykle na klawiaturze numerycznej jako znak dziesiętny jest wprowadzany przecinek, a php lubi kropkę... ale se poradziłem w taki sposób:
  1. <?php
  2. $przekroj=(string)$_GET['przekroj'];
  3. $realprzekr=str_replace(",", ".", $przekroj);
  4. $Zs=(2*$_GET['dlug'])/($_GET['material']*$realprzekr);
  5. $ia=$_GET['uo']/$Zs;
  6. echo "rezystancja petli zwarcia Rs = <big> <TT><br><B>", $Zs , "</B></TT></big> &#937<br> Można w zasadzie przyj&plusmn;ć, że impedancja pętli zwarcia <B>Z<sub>s</sub></B> jest zwykle bardzo bliska rezystancji pętli zwarcia <B>R<sub>s</sub></B>, je&para;li oczywi&para;cie rozpatrujemy obwody do 1kV w typowych instalacjach a więc <B>Z<sub>s</sub> = R<sub>s</sub><br><center><big><TT> WARUNEK SZYBKIEGO WYَCZENIA</TT></big></center><br>U<sub>o</sub> &#8260 Z<sub>s</sub> &#8805 I<sub>a</sub></b><br> Pr&plusmn;d powoduj&plusmn;cy zadziałanie zabezpieczenia w dostatecznie krótkim czasie musi być 
    mniejszy lub równy<br><b><big><TT>"
    ,$ia,"</TT></big> </b> A<br><br> Jeżeli jest to niemożliwe do spełnienia, bo już mamy zainstalowany jaki&para; bezpiecznik, to sprawdzamy: <br><br><center><big><TT><B> WARUNEK BEZPIECZNEGO NAPICIA DOTYKU</B></TT></big></center><br><big><b>U<sub>d</sub> &#8805 Z<sub>pe</sub> * I<sub>s</sub></b></big><br>
  7. gdzie:<br>
  8. U<sub>d</sub> = dopuszczalne napięcie dotykowe w danych warunkach &para;rodowiskowych (50 lub 25 V AC / 50Hz), w [V],<br>
  9. Z<sub>pe</sub> = impedancja przewodu ochronnego (zwykle połowa impedancji zwarcia <b>Zs</B>), w &Omega,<br>I<sub>s</sub> = spodziewany pr&plusmn;d zwarcia, w [A].</b></big><br>Je&para;li urz&plusmn;dzenie jest chronione  żył&plusmn; PE z tego samego kabla co przewód fazowy, to można przyj&plusmn;ć, że <b>Z<sub>pe</sub></b> = 1/2 <b>Z<sub>s</sub></b>. W przeciwnym wypadku należy zmierzyć rzeczywist&plusmn; warto&para;ć tej rezystancji";
  10. ?>
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.