Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z if, elseif, else
Forum PHP.pl > Forum > Przedszkole
neoski
Mam problem z użyciem if, elseif, else. Zresztą już nie pierwszy raz...

Skrypt służy do zmiany hasła.

  1. <?php $pw=$_POST["pw"];
  2. $pwn1=$_POST["pwn1"]
  3. ;$pwn2=$_POST["pwn2"];
  4.  
  5. $error=0;
  6. if (empty($pwn1) or empty($pwn2) or empty($pw)) { $error++; }
  7. elseif ($error==0) {
  8. $sql1="SELECT id, password FROM users WHERE id='$myid'";
  9. $data=mysql_query($sql1, $db);
  10. while($mypw=mysql_fetch_object($data)) { $password=$mypw->password; }
  11. $md5pw=md5($pw);
  12. if ($password != $md5pw) { print "<br>Podałeś <b>złe</b> stare hasło!<br><br>"; }
  13. elseif ($password == $md5pw) { print "<br>Nowe hasła nie pasują do siebie!<br><br>"; }
  14. else ($pwn1 == $pwn2) { $md5pw2=md5($pwn2);
  15. $update = "UPDATE users SET password='$md5pw2' WHERE id=$myid";
  16. $sqlaction = mysql_query($update);
  17. print "<br>Hasło pomyślnie zmienione<br><br><a href=\"index.php?id=news/index\">dalej</a><br><br>"; } }
  18. else { print "<br>Przed zmianą hasła uzupełnij wszystkie pola!<br><br>"; } ?>


Błąd który się pojawia:
Cytat
Parse error: syntax error, unexpected '{' in /cms1/modules/profile/actionpassword.php on line 23


Oczywiście nawiązuje wcześniej połączenie do bazy... kiedyś ktoś mi to wypomniał winksmiley.jpg.
crash
A od kiedy to przy else podaje się warunki? I nie ma co się dziwić, że będą pojawiać się głupie błędy przy takim stylu pisania kodu...
neoski
Przy takim czymś wywala "Nowe hasła nie pasują do siebie!", po czym wysyła do bazy i zmienia...

  1. <?php ...
  2. if (empty($pwn1) or empty($pwn2) or empty($pw)) { $error++; }
  3. if ($error==0) {
  4. $sql1="SELECT id, password FROM users WHERE id='$myid'";$data=mysql_query($sql1, $db);
  5. while($mypw=mysql_fetch_object($data)) { $password=$mypw->password; }
  6. $md5pw=md5($pw);
  7. if ($password != $md5pw) { print "<br>Podałeś <b>złe</b> stare hasło!<br><br>"; }
  8. if ($password == $md5pw) { print "<br>Nowe hasła nie pasują do siebie!<br><br>"; }
  9. if ($pwn1 == $pwn2) { $md5pw2=md5($pwn2);
  10. ... ?>


Cytat
A od kiedy to przy else podaje się warunki?
Hm, od kiedy zwraca się tak do użytkowników? Tym bardziej, że jest to dział dla początkujących :/.

Cytat
I nie ma co się dziwić, że będą pojawiać się głupie błędy przy takim stylu pisania kodu...
To może zamiast gadać, że źle, źle pokażecie w końcu jak jest dobrze?

Odczuwam bardzo nie miłą atmosferę na tym forum. To już nie pierwszy raz kiedy zwracają się do mnie osoby o parę książek do przodu w ten sposób.
Speedy
Cytat
Hm, od kiedy zwraca się tak do użytkowników


Cytat
To może zamiast gadać, że źle, źle pokażecie w końcu jak jest dobrze?


Hm... a od kiedy tak się zwraca do użytkowników?
Jeśli już krytykujesz czyjeś wypowiedzi i uważasz, że są one niemiłe, to przynajmniej sam staraj się zachować jak należy, bo wygląda to tragicznie...

http://phppl.ezpublish.no/phppl/wortal/art...ch_programistow

Cytat
Odczuwam bardzo nie miłą atmosferę na tym forum. To już nie pierwszy raz kiedy zwracają się do mnie osoby o parę książek do przodu w ten sposób.


Więc może warto trochę poczytać snitch.gif ...
cadavre
  1. <?php
  2. (...)
  3. if (empty($pwn1) or empty($pwn2) or empty($pw)) { 
  4. $error++; 
  5. }
  6. if ($error==0) {
  7. $sql1="SELECT id, password FROM users WHERE id='$myid'";
  8. $data=mysql_query($sql1, $db);
  9. while($mypw=mysql_fetch_object($data)) {
  10. $password=$mypw->password; 
  11. }
  12. $md5pw=md5($pw);
  13. if ($password != $md5pw) { 
  14. print "<br>Podałeś <b>złe</b> stare hasło!<br><br>"; 
  15. }
  16. elseif ($password == $md5pw) { 
  17. print "<br>Nowe hasła nie pasują do siebie!<br><br>";
  18. }
  19. elseif ($pwn1 == $pwn2) { 
  20. $md5pw2=md5($pwn2);
  21. }
  22. }
  23. (...)
  24. ?>

Wygląda lepiej? tongue.gif

BTW Nie wypada dodać else przed niektóre ify? ^
neoski
Cytat
Jeśli już krytykujesz czyjeś wypowiedzi i uważasz, że są one niemiłe, to przynajmniej sam staraj się zachować jak należy, bo wygląda to tragicznie...
Po raz kolejny słuchając tylko wytyczek niestety nerwy puściły. Oczywiście jeżeli wygląda to tragicznie to tragiczne są też wypowiedzi poprzedników.

Cytat
Dziękuję.

Cytat
Więc może warto trochę poczytać snitch.gif ...
Niektórzy nie mają czasu szperać w paru książkach. Właśnie do tego między innymi są fora na których inni ludzie wiedzą i pomagają w zdecydowanie szybszy sposób.

Cytat
Wygląda lepiej? tongue.gif
Masz rację bardziej przejrzyście smile.gif.

Cytat
BTW Nie wypada dodać else przed niektóre ify? ^
Właśnie dodałem i mam ten efekt co przed tem...

Cytat
Parse error: syntax error, unexpected '{' in /cms1/modules/profile/actionpassword.php on line 31


A jak mam if'y to ten else na samym dole krzyczy, że jest coś też nie tak.
cadavre
To może to jakiś błąd w pliku, który include'ujesz do skryptu? Napisz która linijka to 31 w tym co wkleiłeś, bo widzę (...) tutaj.
neoski
Tak dokładnie wygląda cały plik:

  1. <?php if($access<1) { print "$noacc"; } else { ?>
  2.  
  3. <TABLE width="<?php print "$width0" ?>" bgcolor="<?php print "$bgcolor0" ?>" border="0" cellspacing="1" cellpadding="3">
  4. <TR>
  5. <TD background="<?php print "$background0" ?>" align="center" colspan="2"><span class="content-title">Profil - zmiana hasła</span></TD>
  6. </TR>
  7.  
  8. <TR bgcolor="<?php print "$bgcolor1" ?>">
  9. <TD>
  10. <?php $pw=$_POST["pw"];
  11. $pwn1=$_POST["pwn1"];
  12. $pwn2=$_POST["pwn2"];
  13. $error=0;
  14.  
  15. if (empty($pwn1) or empty($pwn2) or empty($pw)) { 
  16. $error++; 
  17. }
  18. if ($error==0) {
  19. $sql1="SELECT id, password FROM users WHERE id='$myid'";
  20. $data=mysql_query($sql1, $db);
  21. while($mypw=mysql_fetch_object($data)) {
  22. $password=$mypw->password; 
  23. }
  24. $md5pw=md5($pw);
  25. if ($password != $md5pw) { 
  26. print "<br>Podałeś <b>złe</b> stare hasło!<br><br>"; 
  27. }
  28. elseif ($password == $md5pw) { 
  29. print "<br>Nowe hasła nie pasują do siebie!<br><br>";
  30. }
  31. else ($pwn1 == $pwn2) { 
  32. $md5pw2=md5($pwn2);
  33. }
  34.  
  35. $update = "UPDATE users SET password='$md5pw2' WHERE id=$myid";
  36. $sqlaction = mysql_query($update);
  37. print "<br>Hasło pomyślnie zmienione<br><br><a href=\"index.php?id=news/index\">dalej</a><br><br>"; } ?>
  38. </TD>
  39. </TR>
  40. </TABLE>
  41.  
  42. <?php } ?>


W tym przypadku to będzie linijka 32.
crash
To, że uznałeś moją wypowiedź za atak na Twoją osobę nie znaczy, że nie napisałem tam co masz źle... I dalej masz ten sam bląd.
  1. <?php
  2. if( $access < 1 )
  3. {
  4.    echo $noacc;
  5. }
  6. else
  7. {
  8.  
  9. ?>
  10. <TABLE width="<?= $width0; ?>" bgcolor="<?= $bgcolor0; ?>" border="0" cellspacing="1" cellpadding="3">
  11.    <TR>
  12.        <TD background="<?= $background0; ?>" align="center" colspan="2"><span class="content-title">Profil - zmiana hasła</span></TD>
  13.    </TR>
  14.    <TR bgcolor="<?= $bgcolor1; ?>">
  15.       <TD>
  16.          <?php
  17.          
  18.          $pw   = $_POST[ 'pw' ];
  19.          $pwn1 = $_POST[ 'pwn1' ];
  20.          $pwn2 = $_POST[ 'pwn2' ];
  21.  
  22.          $error = 0;
  23.  
  24.          if( empty( $pwn1 ) or empty( $pwn2 ) or empty( $pw ) )
  25.          { 
  26.             $error++; 
  27.          }
  28.  
  29.          if( $error == 0 )
  30.          {
  31.             $sql1 = 'SELECT id, password FROM users WHERE id= ' . $myid; // zakładając, że pole id jest liczbą
  32.             $data = mysql_query( $sql1, $db );
  33.             
  34.             while( $mypw = mysql_fetch_object( $data ) )
  35.             {
  36.                $password = $mypw->password; 
  37.             }
  38.             
  39.             $md5pw = md5( $pw );
  40.             
  41.             if( $password != $md5pw )
  42.             { 
  43.                echo '<br>Podałeś <b>złe</b> stare hasło!<br><br>'; 
  44.             }
  45.             elseif( $pwn1 != $pwn2 )
  46.             { 
  47.                echo '<br>Nowe hasła nie pasują do siebie!<br><br>'; // jako to nie pasują?! Zły warunek miałeś...
  48.             }
  49.             else
  50.             { 
  51.                $md5pw2 = md5( $pwn2 );
  52.             }
  53.         
  54.             $update = 'UPDATE users SET password = "' . $md5pw2 . '" WHERE id= ' . $myid;
  55.             $sqlaction = mysql_query( $update );
  56.             
  57.             echo '<br>Hasło pomyślnie zmienione<br><br><a href="index.php?id=news/index">dalej</a><br><br>';
  58.         }
  59.         else
  60.         {
  61.            echo 'Wypełnij wszystkie pola!';
  62.         }
  63.         
  64.         ?>
  65.         </TD>
  66.     </TR>
  67. </TABLE>
  68.  
  69. <?php }

Nie wygląda to czytelniej?
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.