Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php-function-if-trouble
Forum PHP.pl > Forum > Przedszkole
Darek1985
Cześc,słuchajcie mam do Was duża prośbę,otóż od paru godzin piszę kod(zgadujący czy użytkownik to dziewczyna czy chłopak tongue.gif potem ma zapisywać tą osobę do pliku textowego.Niestety coś tu nie działa i zabardzo nie wiem juz się strasznie pogubiłem.Oto kod funkcji.
  1. <?php
  2. function zgaduj($imie){
  3.  $ostatnia=substr($imie,strlen($imie)-1,1);
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  if ($ostatnia=='a'){
  10.  $kobiety=$kobiety++;
  11.  echo '<p style="position:absolute;top:100px;left:100px;color:blue;">Jestes kobieta</p>';
  12.  return $kobiety;
  13. }  
  14.  else{
  15.  $mezczyzni=$mezczyzni++;
  16. echo '<p style="position:absolute;top:100px;left:100px;color:blue;">Jestes mezczyzna</p>';
  17.  return $mezczyzni;
  18.  
  19. }
  20. if (file_exists("C:phpzgadujimie.txt")){
  21.  
  22. $plik=fopen("C:phpzgadujimie.txt","a+b");
  23.  echo '<p style="color:red;position:absolute;top:100px;right:100px;">Imie zostało dopisane<p>';
  24. $wyjscie=$imie."/n";
  25. fputs($plik,$wyjscie);
  26. fclose($plik);
  27. }
  28.  else{
  29. $plik=fopen("C:phpzgadujimie.txt","a+b");
  30. if (!$plik){
  31. echo '<p>cos tu nie tak z tym plikiem</p>';
  32.  }
  33.  else{echo '<p style="color:red;position:absolute;top:100px;right:100px;">Imie zostało dopisane<p>';
  34.  $wyjscie=$imie."/n";
  35.  fputs($plik,$wyjscie);
  36.  fclose($plik);
  37. }  
  38.  }
  39. ?>

Wiem że to pewnie jakaś drobnostka ale nie chce mi yworzyćpliku textowego i za cholere nie wiem czemu.Z góry dzięki za odpowiez.
Ludvik
Plik nie jest otwierany, bo w pierwszym wyrażeniu warunkowym zwracana jest wartość z funkcji. A poza tym dopisywanie do pliku przekombinowałeś. Przy trybie dopisywania plik jest tworzony automatycznie, więc nie musisz pisać tych kolejnych if-ów, które z resztą są identyczne...
Darek1985
Dobra,chcę mięc pewnośc a dręczy mnie jeszcze pare tametów.Otóż,powiedzmy że wpisane imię to rzeczywiście dziewczyna czy jeżeli funkcja zwróci result to nie jest wykonywana dalej?.Tzn. czy nie utworzy pliku do zapisu.Jeżeli tak tojak powinien wyglądać kod aby działałto prawidłowo.Z góry dzięki za odpowiedzi.
Ludvik
Jeżeli funkcja zwraca wartość, to logiczne, że dalszy kod nie zostanie wykonany. Niektóre edytory wyrzucają ostrzeżenie: unreachable code.

Pisane z głowy:
  1. <?php
  2.  
  3. function zgaduj($imie, $mezczyzni, $kobiety){
  4. if ($imie{strlen($imie) - 1} == 'a') {
  5. $mezczyzna = false;
  6. $kobiety++;
  7. echo '<p style="position:absolute;top:100px;left:100px;color:blue;">' .
  8.  'Jestes kobieta</p>';
  9. } else {
  10. $mezczyzna = true;
  11. $mezczyzni++;
  12. echo '<p style="position:absolute;top:100px;left:100px;color:blue;">' .
  13.  'Jestes mezczyzna</p>';
  14. }
  15.  
  16. $plik=fopen('C:phpzgadujimie.txt','a+b');
  17.  
  18. if (!$plik) {
  19. echo '<p>Błąd przy próbie otwarcia pliku.</p>';
  20. return $mezczyzna ? $mezczyzni : $kobiety;
  21. }
  22.  
  23. echo '<p style="color:red;position:absolute;top:100px;right:100px;">' .
  24.  'Imie zostało dopisane<p>';
  25.  
  26. $wyjscie = $imie . "/n";
  27. fputs($plik,$wyjscie);
  28. fclose($plik);
  29.  
  30. return $mezczyzna ? $mezczyzni : $kobiety;
  31. }
  32.  
  33. ?>


Zmieniłem interfejs funkcji, bo nie miałeś zmiennych $mezczyzni i $kobiety.
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.