![]() |
![]() ![]() |
![]() |
-petylyl- |
![]()
Post
#1
|
Goście ![]() |
Witam,
Mam pewnien problem. Chciałbym, aby PHP sprawdził, czy zbiór zmiennych istnieje. Jeśli przynajmniej jedna z nich nie istnieje (uzytkownik nie wpisał danych), to wyskakuje komunikat o określonej treści. Wymyśliłem coś takiego: Kod if (isset($imie) && isset($nazwisko) && isset($ulica) && isset($numer_domu) && isset($kodp) && isset($miejsc)) { echo '<h1> Zamówienie zostanie wysłane na adres:</h1>'.'<br />'; echo '<font size="5">'; echo $imie; echo ' '; echo $nazwisko.'<br />'; echo $ulica; echo ' '; echo $numer_domu.'<br />'; echo $kodp; echo ' '; echo $miejsc; echo '<font/>'; } else { echo 'Na poprzedniej stronie nie został podany adres!'; } Teraz problemy: 1) Rezultaty są nie do końca takie, jakie bym chciał. Wystarczy bowiem, że wpiszę w formularz chociażby jedną zmienną, na przykład $imie, a zostaje ona wydrukowane. 2) Gdy nie wpiszę żadnej zmiennej (zostawie te pola puste, php mimo wszystko nie drukuje mi komunikatu zawartego w "else". Bardzo proszę o podpowiedzi, jak sobie z tym problemem poradzić. Szukałem w google takich informacji, ale tam wyjaśnienia dotycza funkcji isset() do jjednej zmiennej, a mnie chodzi zastosowanie jej do kilku zmiennych. Pozdrawiam D.Z
Powód edycji: dodalem tag (cysiaczek)
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
isset to nie jest dobre rozwiązanie: po wysłaniu formularza wszystkie zmienne z niego istnieją, mogą jedynie być puste jeżeli nie wypełniono pola - isset() zwróci true dla każdej z nich.
Zamiast isset() uzyj empty() a więc:
Poza tym jeżeli te zmienne pochodzą z formularza (metodą POST) to:
|
|
|
-petylyl- |
![]()
Post
#3
|
Goście ![]() |
Czyli przy posługiwaniu się zmiennymi w funkcjach (np. empty), jeśli pochodzą one z formularza przesłanego metodą $_POST, należy to zrobić tak?
Kod if (!empty($_POST['imie']) && !empty($_POST['nazwisko']) && !empty($_POST['ulica']) && !empty($_POST['numer_domu']) && !empty($_POST['kodp']) && !empty($_POST['miejsc']) { echo '<h1> Zamówienie zostanie wysłane na adres:</h1>'.'<br />'; echo '<font size="5">'; echo $imie; echo ' '; echo $nazwisko.'<br />'; echo $ulica; echo ' '; echo $numer_domu.'<br />'; echo $kodp; echo ' '; echo $miejsc; echo '<font/>'; } else { echo 'Na poprzedniej stronie nie został podany adres!'; } Zrobiłem tak jak sugerowałeś, ale coś jest nie tak, bo nic się nie wyświetla (mam w Linuxie chyba wyłączone komunikaty o błędach). Dla pewności przesyłam cały kod skryptu (jak widac pochodzi on z książki Vademecum Prof. - staram się dodac coś od siebie np. ta procedura sprawdzająca zmienne (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ): Kod <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" /> <meta name="Description" content=" [wstaw tu opis strony] " /> <meta name="Keywords" content=" [wstaw tu slowa kluczowe] " /> <meta name="Author" content=" [dane autora] " /> <meta name="Generator" content="kED" /> <title>Sklep</title> </head> <body> <h1>Cz�i samochodowe </h1> <h2>Wyniki zam�ienia</h2> <?php $iloscopon = $_POST['iloscopon']; $iloscoleju = $_POST['iloscoleju']; $iloscswiec = $_POST['iloscswiec']; $jak = $_POST['jak']; $imie = $_POST['imie']; $nazwisko = $_POST['nazwisko']; $ulica = $_POST['ulica']; $numer_domu = $_POST['numer_domu']; $kodp = $_POST['kodp']; $miejsc = $_POST['miejsc']; $ilosc = 0; $ilosc = $iloscopon + $iloscoleju + $iloscswiec; $wartosc = 0.00; define('CENAOPON', 20.4); define('CENAOLEJU', 5.5); define('CENASWIEC', 50.1); //oblicza cen�netto $wartosc = $iloscopon * CENAOPON + $iloscoleju * CENAOLEJU + $iloscswiec * CENASWIEC; //Oblicza cen�brutto $stawkavat = 0.22; //Stawka VAT wynosi 22% $resztavat = 0.00; $brutto = 0.00; $resztavat = $wartosc * $stawkavat; $brutto = $wartosc + $resztavat; if( $iloscoleju < 10) $znizka = 0.00; if( $iloscoleju >= 10 && $iloscopon <= 49) $znizka = 0.05; if( $iloscoleju >= 50 && $iloscopon <= 99) $znizka = 0.10; $rabat = 0.00; if( $znizka > 0) $rabat = $brutto * $znizka; $cenaporabacie = $brutto - $rabat; //warunek wywietlajcy tekst adekwatny to wprowadzonych danych if( $ilosc == 0 ) { echo '<font color="red"><b>'; echo 'Na poprzedniej stronie nie zostao zoone adne zam�ienie<br />'; echo '</font></b>'; } if( $ilosc > 0) { echo 'Zam�ionych cz�i: '.$ilosc.'<br />'; if( $iloscopon > 0) echo $iloscopon.' opon<br />'; if( $iloscoleju > 0) echo $iloscoleju.' oleju<br />'; if( $iloscswiec > 0) echo $iloscswiec.' wiec<br />'; echo 'Cena netto: '.number_format($wartosc, 2).' '.PLN.'<br />'; echo 'Cena brutto: '.number_format($brutto, 2).' PLN<br />'; echo 'Tw� rabat: '.number_format($rabat, 2).' PLN<br />'; if($znizka > 0) echo 'Cena brutto (z rabatem): '.number_format($cenaporabacie, 2).' PLN<br />'; if( $ilosc > 0) echo '<p>Zam�ienie przyj�e o '; echo date('H:i. jS F'); echo '</p>'; } if (!empty($_POST['imie']) && !empty($_POST['nazwisko']) && !empty($_POST['ulica']) && !empty($_POST['numer_domu']) && !empty($_POST['kodp']) && !empty($_POST['miejsc'])) { echo '<h1> Zamówienie zostanie wysłane na adres:</h1>'.'<br />'; echo '<font size="5">'; echo $imie; echo ' '; echo $nazwisko.'<br />'; echo $ulica; echo ' '; echo $numer_domu.'<br />'; echo $kodp; echo ' '; echo $miejsc; echo '<font/>'; } else { echo 'Na poprzedniej stronie nie został podany adres!'; } /*switch($jak) { case 'a'; echo '<p>Stały klient.'; break; case 'b'; echo '<p>Reklama telewizyjna.'; break; case 'c'; echo '<p>Książka telefoniczna.'; break; case 'd'; echo '<p>Znajomi.'; break; } */ ?> </body> </html> |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Przy posługiwaniu się gdziekolwiek w skrypcie, nie tylko w funkcjach. Po prostu dane pochodzące z formularza znajdują się w tablicach globalnych _POST lub _GET w zależności od użytej metody.
Ale zauważ, że w Twoim skrypcie na początku następuje przypisanie wszystkich zmiennych z tablicy _POST do zwykłych zmiennych:
więc możesz używać tych skróconych, wcześniej nie wiedziałem o tym fragmencie kodu (chociaż nie wiem po co to przypisywanie). 2. Po prostu włącz sobie raportowanie błędów bo bez tego ciężko pracować - delikatnie mówiąc. Jak chcesz znajdować swoje błędy? 3. Nie pokazałeś formularza, którym wysyłasz dane - może masz tam jakiś błąd bo gdy podstawiam na sztywno wartości pod zmienne $iloscopon itd to wszystko wygląda dobrze. Pokaż formularz albo opisz dokładniej co, kiedy i gdzie się nie wyświetla (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
-petylyl- |
![]()
Post
#5
|
Goście ![]() |
Jeśli chodzi o kod formularza to jest on na 100% poprawny, ponieważ wcześniej zanim zacząłem kombinować z funkcją emnty to wyświetlało dane z formularza (także adres). Włączyłem obsługę błędów i pokazuje mi się coś takiego:
Kod Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0 Fatal error: Unknown: Failed opening required '/srv/www/htdocs/przetworzzamowienie.php' (include_path='.:/usr/share/php5:/usr/share/php5/PEAR') in Unknown on line 0 Hm... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 896 Pomógł: 76 Dołączył: 15.11.2003 Skąd: Sosnowiec/Kraków Ostrzeżenie: (0%) ![]() ![]() |
No co można dodać - problem z plikiem przetworzzamowienie.php - sprawdź ścieżki, kod includowania, plik...
Ten post edytował Foxx 10.11.2007, 03:37:13 |
|
|
-petylyl- |
![]()
Post
#7
|
Goście ![]() |
Otwarłem ten plik z innego katalogu w takiej postaci, w jakiej był wcześniej i wtedy znalazłem błąd:
Kod echo 'Cena netto: '.number_format($wartosc, 2).'[b] '.PLN.'<br />';[/b] echo 'Cena brutto: '.number_format($brutto, 2).' PLN<br />'; echo 'Tw� rabat: '.number_format($rabat, 2).' PLN<br />'; Później po dodaniu instrukcji if-else zadziałało! Dziękuję za pomoc. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 19:46 |