Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Instrukcja if
Niedowiarek
post 26.12.2011, 17:06:55
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 28.04.2011

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


Witam, oto mam taki kod:

  1. <?php
  2.  
  3. $ig = $_POST['ig'];
  4. $ic = $_POST['ic'];
  5.  
  6. if(isset($ig && $ic)) {
  7. echo 'Twoja zamówienie wygląda następująco: ';
  8. echo $ic. 'cuksów oraz '.$ig.' gum.';
  9. } else {
  10. echo 'Nic nie zamówiłeś!';
  11. }
  12.  
  13. ?>


No i wywala mi taki błąd: Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')' in C:\Program Files\WebServ\httpd\works.php on line 6

Coś linijką szóstą, chyba oczekuje ',' albo ')' - ale nie za bardzo rozumiem gdzie to wstawić.
Go to the top of the page
+Quote Post
skowron-line
post 26.12.2011, 17:08:14
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Brakuje CI nawiasów.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Niedowiarek
post 26.12.2011, 17:14:01
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 28.04.2011

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


Jak to brakuje, przcież tak wygląda isset
a if
  1. if()
no imam 4 nawiasy, gdzie mam jeszcze dodać?
Go to the top of the page
+Quote Post
skowron-line
post 26.12.2011, 17:15:45
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. if(isset($ig && $ic))

na
  1. if(isset($ig) && isset($ic))

lub
  1. if(isset($ig, $ic))


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Niedowiarek
post 26.12.2011, 17:18:25
Post #5





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 28.04.2011

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


Aaaa, myślałem że w isset można łączyć przez && brzydal.gif Dzięki wielkie

Okej, tyko teraz inny problem. Kiedy nic nie wpiszę w pola powinno się wyświetlić "Nic nie zamówiłeś!" a jest puste miejsce w polu na liczbę produktów.

Ten post edytował Niedowiarek 26.12.2011, 17:20:50
Go to the top of the page
+Quote Post
Niktoś
post 26.12.2011, 17:32:07
Post #6





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


To powinieneś raczej użyć zamiast
1.
1.
if(isset($ig) && isset($ic))
instrukcje or
1.
if(isset($ig) || isset($ic))

Nie to i to -lecz to lub to

Ten post edytował Niktoś 26.12.2011, 17:39:18
Go to the top of the page
+Quote Post
Niedowiarek
post 26.12.2011, 17:41:19
Post #7





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 28.04.2011

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


Ale to nie rozwiązuje problemu tego że jak nic nie wpiszę w pola ilość cuksów i ilość gum to powinno się wyświetlić 'Nic nie zamówiłeś!' a tak nie jest ;/

Całość teraz wygląda tak:

  1. <title>Test</title>
  2. <form action="works.php" method="POST">
  3. <table border="1">
  4. <tr>
  5. <td>Ilość gum</td><td><input type="text" size="3" name="ig"></td>
  6. <tr></tr>
  7. <td>Ilość cuksów</td><td><input type="text" size="3" name="ic"></td>
  8. </tr><tr>
  9. <td><input type="submit" value="Wyślij"></td>
  10. </tr>
  11. </form>
  12. </body>
  13. </html>


  1. <?php
  2.  
  3. $ig = $_POST['ig'];
  4. $ic = $_POST['ic'];
  5.  
  6. if(isset($ig) || isset($ic)) {
  7. echo 'Twoje zamówienie wygląda następująco: ';
  8. echo $ic.' cuksów oraz '.$ig.' gum.';
  9. } else {
  10. echo 'Nic nie zamówiłeś!';
  11. }
  12.  
  13. ?>


Ten post edytował Niedowiarek 26.12.2011, 17:45:06
Go to the top of the page
+Quote Post
Niktoś
post 26.12.2011, 17:48:03
Post #8





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


if(strlen($ig>0) || strlen($ic)>O) {
Tutorial co robi isset.
Go to the top of the page
+Quote Post
Niedowiarek
post 26.12.2011, 17:50:06
Post #9





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 28.04.2011

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


Dzięki, a isset sprawdza czy dana zmienna istnieje, tak? W takim razie jak jej nie przypiszę wartość to ona istnieje, i jest pusta?
Go to the top of the page
+Quote Post
Ulysess
post 26.12.2011, 17:55:06
Post #10





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


jeśli nie przypiszesz do zmiennej wartości tylko po prostu nagle gdzieś jej użyjesz to wtedy APACHE powinnien wywalić notice o ile jest odpowiednio oczywiście skonfigurowany.


Go to the top of the page
+Quote Post
Niktoś
post 26.12.2011, 18:01:51
Post #11





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
Dzięki, a isset sprawdza czy dana zmienna istnieje, tak?

Jeśli nic nie wpiszesz zmienna będzie istnieć ,ale będzie " " lub null tego do końca jeszcze nie rozwikłałem.
Badanie długości znaków jest jednym ze sposobów czy ktoś coś wpisał.
Go to the top of the page
+Quote Post
mortus
post 26.12.2011, 18:26:48
Post #12





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(Niedowiarek @ 26.12.2011, 17:50:06 ) *
Dzięki, a isset sprawdza czy dana zmienna istnieje, tak? W takim razie jak jej nie przypiszę wartość to ona istnieje, i jest pusta?

Nie, jeśli nie przypiszesz jakiejś zmiennej wartości (oprócz null), to ta zmienna nie istnieje. Przykład:
  1. if(isset($a)) {
  2. echo 'zmienna a istnieje<br/>';
  3. } else {
  4. echo 'zmienna a nie istnieje<br/>';
  5. }
  6.  
  7. $a = ''; // przypisujemy wartość, która jest pusta (empty), ale nie jest niczym (null)
  8. if(isset($a)) {
  9. echo 'zmienna a istnieje<br/>';
  10. } else {
  11. echo 'zmienna a nie istnieje<br/>';
  12. }

Podczas pierwszego uruchomienia Twojego skryptu zmienne $_POST['ig'] i $_POST['ic'] nie istnieją, czyli mają wartość null, zatem i zmienne $ig oraz $ic mają wartość null. Tutaj PHP powinien zgłosić uwagę.

Cytat(Ulysess @ 26.12.2011, 17:55:06 ) *
jeśli nie przypiszesz do zmiennej wartości tylko po prostu nagle gdzieś jej użyjesz to wtedy APACHE powinnien wywalić notice o ile jest odpowiednio oczywiście skonfigurowany.

W powyższym przykładzie PHP nie zgłosi żadnej uwagi i właśnie do tego służy isset().
Go to the top of the page
+Quote Post
Niktoś
post 26.12.2011, 18:39:13
Post #13





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Nie wiem jak za bardzo jest w PHP bo ja programuje w c#,ale
robisz Posta ,pola pozostają puste to w c#
jakaś zmienna string przyjmuje prawdopodobnie null lub "" właśnie tego nie wiem ,bo w przypadku int od razu wysypuję błędami .Dlaczego? Bo zarówno podczas konwersji "" lub null na int-nie może tego dokonać ,gdyż " " nie jest liczbą ,ani int nie jest typu nullable(można powiedzieć ,że w int null to 0).
Dlatego trudno mi się zorientować ,czy przy requesciie w PHP $_POST na pustą zmienną jest zwracany "" czy null coś zwracane musi być i tutaj nie ma ale.

Ten post edytował Niktoś 26.12.2011, 18:39:59
Go to the top of the page
+Quote Post
mortus
post 26.12.2011, 18:47:39
Post #14





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Pole formularza HTML jest polem tekstowym, więc jak można się domyślić, w przypadku gdy takie pole nie zostanie uzupełnione, w tablicy $_POST pod indeksem będącym nazwą takiego pola zostanie przesłany pusty łańcuch znaków (czyli "" lub '' - jak kto woli).

Jeśli pole nie jest polem tekstowym (i chyba również polem select, czyli listą rozwijaną), to jego zawartość zostanie przesłana tylko wtedy, gdy zostanie określenia jego wartość (checkbox, radio muszą być np. zaznaczone).

Ten post edytował mortus 26.12.2011, 18:50:49
Go to the top of the page
+Quote Post
Niktoś
post 26.12.2011, 19:02:03
Post #15





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Dzięki mortus trochę mi rozjaśniłeś.
Tak więc w wyżej wymienionym przypadku jak nic nie wpisze to isset i tak nie zadziała ,bo wartość będzie istnieć i przyjmie pusty łąńcuch znaków " ".
Więc badanie długości znaków ma tam sens.

A powiedz mi jeszcze po stronie klienta to chyba trochę inaczej wygląda,wartość niezdefiniowana przyjmuje undefined,tam jest tego trochę nawet więcej NaNA,undefined,null i " ".Czy sposób kreowania zmiennych po stronie klienta różni się od tego po stronie serwera??

Ten post edytował Niktoś 26.12.2011, 19:06:53
Go to the top of the page
+Quote Post
mortus
post 26.12.2011, 19:33:41
Post #16





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Sprawdzanie długości przesłanego łańcucha znaków ma wtedy sens, jeśli rzeczywiście oczekujemy, że w polu znajdzie się łańcuch znaków i będzie on miał lub nie będzie miał określonej długości. Aby sprawdzić, czy pole tekstowe zostało wypełnione jakąś wartością wystarczy użyć w PHP funkcji empty(), ale stosuje się również porównanie do pustego łańcucha znaków, czyli:
  1. if(isset($_POST['login']) && $_POST['login'] != '') {
  2. // pole login zostało wypełnione
  3. }
  4. // jeśli pole jest polem tekstowym, to możemy użyć czegoś takiego
  5. if(!empty($_POST['login'])) {
  6. // pole login zostało wypełnione
  7. }

Inaczej wygląd sytuacja jeśli mówimy o polach typu checkbox, bo przy tego typu polach isset() bardzo się przydaje, żeby nie rzec, że jest koniecznością.

Jeśli chodzi o typy zmiennych w JS, po stronie przeglądarki, to:
NaN - Not a Number - przypisywana zmiennej, która nie jest prawidłowym wynikiem działań arytmetycznych,
undefined - to taka zmienna, która nie została zadeklarowana (słówko var) lub taka, która jest argumentem funkcji lub właściwością/polem obiektu i nigdy nie otrzymała wartości,
null - to zmienna pusta,
"" - to po prostu pusty łańcuch znaków (jego długość to 0).
Trochę więcej na ten temat możesz znaleźć tutaj (zajrzyj również do źródła artykułu).
Go to the top of the page
+Quote Post
Niktoś
post 26.12.2011, 20:03:27
Post #17





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Jeszcze raz dziękuje -masz plus ode mnie w profilu ;)Fajny tutorial JS -dodam do zakładki. .Jeszcze,aż tak się nie zagłębiałem w strukture html ,ale wydaje mi się ,że nawet select,checkbox jest tam traktowany jako tekst.Tzn.Przy zaznaczeni daje 1 przy odznaczeniu 0. Skrypt PHP ,czy c# obojętnie jaki traktuje to wartściami boolean czyli dla 1 True,dla 0 false ,ale mogę być w błędzie.W przypadku indeksowania 0 będzie wartością -1;

W JS po obserwacji ,to tam jest chyba ściśle odseparowane od typów int i string w przeciwieństwie do HTML gdzie wszystko traktowane jest jako string,ale tutaj też mogę być w błędzie.To takie moje indywidualne spostrzeżenia,które mogą być błędne.

Ten post edytował Niktoś 26.12.2011, 20:10:04
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 16.06.2025 - 21:13