Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z if/elseif, :/
artur81
post
Post #1





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

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


Witam, problem jak widać podstawowy ale już na tyle razy zmieniałem kod że zauważyłem iż wstawiam już te ify na "łapu capu", mogłby mi ktoś powiedzieć jak to poprawić, ja już nie mam koncepcji ( wyskakuje mi taki błąd Parse error: parse error, unexpected T_ELSE in c:\program files\easyphp1-7\www\praca\logowanie.php on line 52 ). chodzi o to żeby sprawdzić czy zmienna test jest ustawiona na "tak" czy na "nie", Jesli na tak to wyswietlic komunikat "Nie można 2 razy rozwiązywać testu" i zakonczyc skrypt a jesli na nie to ustwic ją na "tak" i przejsc dalej.
Kod:
  1. <?php
  2. include ('header.inc');
  3.  
  4. if (isset ($_POST['submit'])) {
  5. require_once('./polacz_z_baza.php');
  6.  
  7.  
  8. $wiadomosc = NULL;
  9.  
  10. if (empty($_POST['uzytkownik'])) {
  11. $u=false;
  12. $wiadomosc.='<p>Wprowadź nazwę użytkownika</p>';
  13. } else {
  14.  
  15.  $u=($_POST['uzytkownik']);
  16. }
  17.  
  18. if (empty($_POST['haslo'])) {
  19. $p=false;
  20. $wiadomosc.='<p>Wprowadź hasło</p>';
  21. } else {
  22. $p=($_POST['haslo']);
  23. }
  24.  
  25. if ($u && $p) {//Nazwa użytkownika i hasło są podane
  26.  
  27.  
  28.  
  29.  
  30. $zapytanie = &#092;"SELECT nr, uzytkownik, test FROM uzytkownicy WHERE uzytkownik = '$u' AND haslo = '$p'\";
  31. $wynik = mysql_query ($zapytanie);
  32. $wiersz = mysql_fetch_array ($wynik);
  33.  
  34. if ($wiersz) {
  35. //Rejestruję sesję i przekierowuję użytkownika do egzaminu.
  36.  
  37.  
  38. $_SESSION['uzytkownik'] =$wiersz[1];
  39. $_SESSION['nr'] =$wiersz[0];
  40. $test = $wiersz[3];
  41.  
  42.  
  43.  
  44.  if ($test = tak) {
  45.  print 'Nie można 2 razy rozwiązywać testu '; //jesli test juz byl rozwiazywany
  46.  } else {
  47.  //jesli nie byl rozwiazywany - poczatek
  48. /* po pierwszym zalogowaniu ustalam wartość pola logicznego w bazie na tak,
  49.  aby zapobiec ponownemu rozwiązywaniu testu przez danego użytkownika */
  50. mysql_query(&#092;"UPDATE uzytkownicy SET test = 'tak' WHERE uzytkownik = '$u'\");
  51. } else {
  52.  
  53. $wiadomosc ='<p>Błedny login lub hasło</p>';
  54. }
  55. } else {
  56. $wiadomosc.='<p>Spróbuj ponownie.</p>';
  57. }
  58. }
  59. if (isset($wiadomosc)) {
  60. echo '<font color =\"red\">', $wiadomosc , '</font>';
  61. }
  62.  
  63.  
  64. $_SESSION['data']= date('Y-m-j H:i:s');
  65.  //jesli nie byl - koniec
  66. ?>


Ten post edytował artur81 1.02.2005, 19:48:58
Go to the top of the page
+Quote Post
hmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


ladnie napisany kod - czytelnie :P
korzystasz czasem z jakiejs ksiazki? bo jedna mi nachodzi na mysl ...

na pierwszy rzut oka brakuje mi kilku domkniec nawiasow klamrowych.
nie wczytuje sie w kod, ale albo nie domknales else dla if ($test = tak) albo zamiast drugiego else powinienes wstawic elseif

posprawdzaj domkniecia.
Go to the top of the page
+Quote Post
ennics
post
Post #3





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


  1. <?php
  2.  
  3. //...
  4. if ($test = &#092;"tak\") {
  5. //..
  6.  
  7. ?>

?
Go to the top of the page
+Quote Post
artur81
post
Post #4





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

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


@ hmmm :A zgadza się, poczytna książeczka (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Swoją drogą podomykane mam wszystkie if'y, sprawdzalem, tak mysle ze jak nie dojde jak to zrobic to bede musial dac przed tą strona jeszcze jedną i tam sprawdzic ten warunek. Pod górę, ale trudno... (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
hmmm
post
Post #5





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


to policz :P

chodzi mi o ta czesc kodu:
  1. <?php
  2.  
  3. if ($test = tak) {
  4.  print 'Nie można 2 razy rozwiązywać testu '; //jesli test juz byl rozwiazywany
  5.  } else {
  6.  //jesli nie byl rozwiazywany - poczatek
  7. /* po pierwszym zalogowaniu ustalam wartość pola logicznego w bazie na tak,
  8.  aby zapobiec ponownemu rozwiązywaniu testu przez danego użytkownika */
  9. mysql_query(&#092;"UPDATE uzytkownicy SET test = 'tak' WHERE uzytkownik = '$u'\");
  10. header (&#092;"Location: http://localhost/praca/egzamin.php\");
  11. } else {
  12.  
  13. ?>
po header nie domknales nawiasu ... ;)
Go to the top of the page
+Quote Post
artur81
post
Post #6





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

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


Teraz to już przegiąłem na maxa ( zmiany w kodzie- sam się już pogubiłem), aha i tak nawiasem mówiąc mogłbu któryś z moderatorów usunąc tego posta (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Proponuję taki układ: ja poczytam manuala, a Wy uznajcie że nie było tematu (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Sorki za zajęcie czasu.

Ten post edytował artur81 1.02.2005, 19:52:52
Go to the top of the page
+Quote Post
hmmm
post
Post #7





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


wyrzuca blad, bo wychodzi cos takiego
  1. <?php
  2.  
  3. if (warunek) {
  4. //wykonaj1
  5. } else {
  6. //wykonaj2
  7. } else {
  8. //wykonaj3
  9. }
  10.  
  11. ?>
a przeciez else moze byc tylko jedno ...
wstaw domkniecie nawiasu i sprawdz, a jezeli tego domkniecia tam nie powinno byc, bo zamien srodkowe else na elseif
Go to the top of the page
+Quote Post
ennics
post
Post #8





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


nie czytasz dokładnie postów,
primo
  1. <?php
  2.  
  3. if ($test = tak) {
  4.  
  5. ?>

tak nie może być !
'tak' jest ciągiem i musi być zapisany w podwójnym apostrofie ""
po drugie jak już pisał hmm
  1. <?php
  2.  
  3.  
  4.             } else {
  5.  
  6.                     $wiadomosc ='<p>Błedny login lub hasło</p>';
  7.                     }
  8.             mysql_close();
  9.             } else { // --------------- jeśli robisz else może być tylko ostatnie, jeśli
  10. // masz kilka tego typu warunków musi być else if
  11.                     $wiadomosc.='<p>Spróbuj ponownie.</p>';
  12.                     }
  13.             } // --------------- ta klamra jest nie potrzebna
  14.             if (isset($wiadomosc)) {
  15.  
  16. ?>


Ten post edytował ennics 1.02.2005, 19:54:23
Go to the top of the page
+Quote Post
hmmm
post
Post #9





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


@ennics co do primo to sie zgodze, a do drugiej uwagi tylko po czesci, bo tamta klamra, przy ktorej napisales komentarz w kodzie, ze jest niepotrzebna, w rzeczywistosci jest potrzebna ;)
Go to the top of the page
+Quote Post
ennics
post
Post #10





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


muszę przyznać Ci rację, jakby to powiedzieć... przeliczyłem się :roll2:
Go to the top of the page
+Quote Post
artur81
post
Post #11





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

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


Dziękuję jeszcze raz za pomoc , ale po moich przeróbkach kod już wcale nie przypomina tego który jest na górze, na dzisiaj to ja już podziękuję, jutro przeanalizuje kod jeszcze raz, uwzględnie Wasze poprawki i ewentualnie się odezwę ... Sorki za zajęcie czasu (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Puciek
post
Post #12


TAO programowania


Grupa: Zarejestrowani
Postów: 340
Pomógł: 3
Dołączył: 25.03.2003
Skąd: ze słoika

Ostrzeżenie: (30%)
XX---


ennics: jeszcze jedno, niekoniecznie w podwojnym apostrofie, duzo lepiej umiescic w pojedynczym ' '
Go to the top of the page
+Quote Post
hmmm
post
Post #13





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


twoj kod, z trzema poprawkami:
1. domkniecie nawiasu
2. == zamiast =
3. warunek powinien byc w apostrofie: 'tak'
nie wiem, czy gdzies jeszcze sa bledy :P

  1. <?php
  2. include ('header.inc');
  3.  
  4. if (isset ($_POST['submit'])) {
  5. require_once('./polacz_z_baza.php');
  6.  
  7.  
  8. $wiadomosc = NULL;
  9.  
  10. if (empty($_POST['uzytkownik'])) {
  11. $u=false;
  12. $wiadomosc.='<p>Wprowadź nazwę użytkownika</p>';
  13. } else {
  14.  
  15.  $u=($_POST['uzytkownik']);
  16. }
  17.  
  18. if (empty($_POST['haslo'])) {
  19. $p=false;
  20. $wiadomosc.='<p>Wprowadź hasło</p>';
  21. } else {
  22. $p=($_POST['haslo']);
  23. }
  24.  
  25. if ($u && $p) {//Nazwa użytkownika i hasło są podane
  26.  
  27.  
  28.  
  29.  
  30. $zapytanie = &#092;"SELECT nr, uzytkownik, test FROM uzytkownicy WHERE uzytkownik = '$u' AND haslo = '$p'\";
  31. $wynik = mysql_query ($zapytanie);
  32. $wiersz = mysql_fetch_array ($wynik);
  33.  
  34. if ($wiersz) {
  35. //Rejestruję sesję i przekierowuję użytkownika do egzaminu.
  36.  
  37.  
  38. $_SESSION['uzytkownik'] =$wiersz[1];
  39. $_SESSION['nr'] =$wiersz[0];
  40. $test = $wiersz[3];
  41.  
  42.  
  43.  
  44.  if ($test == 'tak') {
  45.  print 'Nie można 2 razy rozwiązywać testu '; //jesli test juz byl rozwiazywany
  46.  } else {
  47.  //jesli nie byl rozwiazywany - poczatek
  48. /* po pierwszym zalogowaniu ustalam wartość pola logicznego w bazie na tak,
  49.  aby zapobiec ponownemu rozwiązywaniu testu przez danego użytkownika */
  50. mysql_query(&#092;"UPDATE uzytkownicy SET test = 'tak' WHERE uzytkownik = '$u'\");
  51.  }
  52. } else {
  53.  
  54. $wiadomosc ='<p>Błedny login lub hasło</p>';
  55. }
  56. } else {
  57. $wiadomosc.='<p>Spróbuj ponownie.</p>';
  58. }
  59. }
  60. if (isset($wiadomosc)) {
  61. echo '<font color =\"red\">', $wiadomosc , '</font>';
  62. }
  63.  
  64.  
  65. $_SESSION['data']= date('Y-m-j H:i:s');
  66.  //jesli nie byl - koniec
  67. ?>
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


A teraz spojrzcie na ten sposob kodowania, widac gdzier sie ktore if i else zaczynaja i widac od razu bledy
  1. <?php
  2. include ('header.inc');
  3.  
  4. if (isset ($_POST['submit']))
  5. {
  6.     require_once('./polacz_z_baza.php');
  7.     $wiadomosc = NULL;
  8.  
  9.     if (empty($_POST['uzytkownik']))
  10.     {
  11.         $u=false;
  12.         $wiadomosc.='<p>Wprowadź nazwę użytkownika</p>';
  13.     }
  14.     else
  15.     {
  16.        $u=($_POST['uzytkownik']);
  17.     }
  18.  
  19.     if (empty($_POST['haslo']))
  20.     {
  21.         $p=false;
  22.         $wiadomosc.='<p>Wprowadź hasło</p>';
  23.     }
  24.     else
  25.     {
  26.         $p=($_POST['haslo']);
  27.     }
  28.  
  29.     if ($u && $p)
  30.     {
  31.         //Nazwa użytkownika i hasło są podane
  32.  
  33.         $zapytanie = &#092;"SELECT nr, uzytkownik, test  FROM uzytkownicy WHERE uzytkownik = '$u' AND haslo = '$p'\";
  34.         $wynik = mysql_query ($zapytanie);
  35.         $wiersz = mysql_fetch_array ($wynik);
  36.  
  37.         if ($wiersz)
  38.         {
  39.             //Rejestruję sesję i przekierowuję użytkownika do egzaminu.
  40.  
  41.             $_SESSION['uzytkownik'] =$wiersz[1];
  42.             $_SESSION['nr'] =$wiersz[0];
  43.             $test = $wiersz[3];
  44.  
  45.  
  46.  
  47.             if ($test = tak)
  48.             {
  49.                 print 'Nie można 2 razy rozwiązywać testu ';    //jesli test juz byl rozwiazywany
  50.             }
  51.             else
  52.             {
  53.                 //jesli nie byl rozwiazywany -  poczatek
  54.                 /* po pierwszym zalogowaniu ustalam wartość pola logicznego w bazie na tak,
  55.                 aby zapobiec ponownemu rozwiązywaniu testu przez danego użytkown
  56. ka */
  57.                 mysql_query(&#092;"UPDATE uzytkownicy SET test = 'tak' WHERE uzytkownik = '$u'\");
  58.                 // FIXED
  59.                 // header (\"Location: http://localhost/praca/egzamin.php\");
  60.                 header (&#092;"Location: http://localhost/praca/egzamin.php\");
  61.             }
  62.             else
  63.             {
  64.                 // BLAD!!!
  65.                 $wiadomosc ='<p>Błedny login lub hasło</p>';
  66.             }
  67.             
  68.             mysql_close();
  69.         } // EDIT: o jeden tab mniej
  70.         else
  71.         {
  72.             $wiadomosc.='<p>Spróbuj ponownie.</p>';
  73.         }
  74.    
  75.     }
  76.     
  77.     if (isset($wiadomosc))
  78.     {
  79.         echo '<font color =\"red\">', $wiadomosc , '</font>';
  80.     }
  81.  
  82.  
  83.     $_SESSION['data']= date('Y-m-j H:i:s');
  84.        //jesli nie byl -  koniec
  85.        
  86.    // BLAD!!! -- brakuje ostatniej zamykacej klamry
  87. ?>


Ten post edytował dr_bonzo 1.02.2005, 20:11:07
Go to the top of the page
+Quote Post
hmmm
post
Post #15





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


piszac w kodzie na samym dole komentarz
  1. <?php
  2. // BLAD!!! -- brakuje ostatniej zamykacej klamry
  3.  
  4. ?>
ktos moze pomyslec, ze to akurat tam ja trzeba wstawic ...

a co do czytelnosci ... to zaczal dobrze, zle skonczyl :P
jak dla mnie zapis:
  1. <?php
  2. if (warunek)
  3. {
  4. //wykonaj1
  5. }
  6. else
  7. {
  8. //wykonaj2
  9. }
  10.  
  11. ?>
jest malo czytelny ... chyba kwestia przyzwyczajenia.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat(hmmm @ 2005-02-01 20:18:26)
piszac w kodzie na samym dole komentarz
  1. <?php
  2. // BLAD!!! -- brakuje ostatniej zamykacej klamry
  3.  
  4. ?>
ktos moze pomyslec, ze to akurat tam ja trzeba wstawic ...

No bo tam jej brakuje, tylko nie wstawilem jej bo nie sprawdzalem logiki programu, byc moze miala by byc przed $_SESSION...

Cytat
a co do czytelnosci ... to zaczal dobrze, zle skonczyl (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ja? On?
Go to the top of the page
+Quote Post
hmmm
post
Post #17





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


hehe. co do czytelnosci to on - @artur81 ;)

a na logike, to domkniecia brakuje tam gdzie je dostawilem - na moja logike.
no ale moge sie mylic :P
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 11:00