Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP]Własna funkcja w php przestała działać, Własna funkcja w php działająca w jednym pliku w drugim już nie działa
rulfy
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 7.06.2011

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


Witam.
Napisałem własną funkcję do wyboru nazw drużyn z bazy danych za pomocą: <select name=""> o nazwie drużyna.
Kiedy użyłem ją we wcześniejszym pliku działała bez zarzutu, ale po próbie wykorzystania jej w następnym już nie. Jak ktoś jest wstanie mi powiedzieć dlaczego to by było super (IMG:style_emoticons/default/smile.gif)

Ciąg Dalszy Postu (IMG:style_emoticons/default/smile.gif)

Kod Funkcji druzyna($a) z pliku o nazwie druzyna.php:

  1. <?php
  2. function druzyna($a)
  3. {
  4.  
  5.  
  6. $zapytanie = mysql_query("SELECT nazwa FROM druzyny");
  7. if($a == 2)
  8. {
  9. echo '<select name="goscie">';
  10. echo '<option> --- </option>';
  11. while($wynik = mysql_fetch_array($zapytanie))
  12. {
  13. echo '<option value="'.$wynik['nazwa'].'">';
  14. echo $wynik['nazwa'];
  15. echo '</option>';
  16. }
  17.  
  18. if(isset($_POST['goscie']))
  19. {
  20. $dr = $_POST['goscie'];
  21. }
  22.  
  23. echo '</select>';
  24. }
  25.  
  26. if($a == 1)
  27. {
  28. echo '<select name="gospodarze">';
  29. echo '<option> --- </option>';
  30. while($wynik = mysql_fetch_array($zapytanie))
  31. {
  32. echo '<option value="'.$wynik['nazwa'].'">';
  33. echo $wynik['nazwa'];
  34. echo '</option>';
  35. }
  36.  
  37. if(isset($_POST['gospodarze']))
  38. {
  39. $dr = $_POST['gospodarze'];
  40. }
  41.  
  42. echo '</select>';
  43. }
  44.  
  45. return $dr;
  46. }
  47. ?>

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





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

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


W funkcji druzyna() masz przypisania:
  1. // ...
  2. $dr = $_POST['gospodarze'];
  3. // ...
  4. $dr = $_POST['goscie'];

Jeśli w tablicy $_POST nie przekażesz choćby pustej wartości zmiennej $_POST['gospodarze'] lub/i $_POST['goscie'], to do przypisania nigdy nie dojdzie. Dodatkowo zmienna $dr nie jest nigdzie zainicjowana domyślną wartością. Tak na dobrą sprawę funkcja zwraca to, o czym pisałem w poprzednim poście. Jest to błąd logiczny, ponieważ w tablicy $_POST nie zawsze będą znajdować się odpowiednie dane. Poza tym sama funkcja ze zmiennych $_POST['gospodarze'] i $_POST['goscie'] nie korzysta, a jedynie je zwraca - bez sensu, bo tutaj funkcji nie potrzeba.

Przeanalizuj cały skrypt jeszcze raz, bo ewidentnie coś jest nie tak z logiką biznesową aplikacji.

Poza tym niby tworzysz funkcję, ale nadal nie przestrzgasz reguły DRY. Przecież ta funkcja może wyglądać lepiej:
  1. <?php
  2. function druzyna($a) {
  3. $zapytanie = mysql_query("SELECT nazwa FROM druzyny");
  4. $name = ($a == 2 ? 'goscie' : 'gospodarze');
  5. echo '<select name="'.$name.'">';
  6. echo '<option> --- </option>';
  7. while($wynik = mysql_fetch_array($zapytanie)) {
  8. echo '<option value="'.$wynik['nazwa'].'">';
  9. echo $wynik['nazwa'];
  10. echo '</option>';
  11. }
  12. echo '</select>';
  13. // Uważam, że poniższy kod jest bez sensu i nie ma prawa bytu, a przepisałem go tylko po to, żeby pokazać, jak może wyglądać Twoja funkcja
  14. if(isset($_POST[$name])) {
  15. $dr = $_POST[$name];
  16. }
  17. return $dr;
  18. }
  19. ?>

Co do uwagi aachi: Twoja funkcja nazywa się druzyna() a wywołujesz funkcję druzyny().
Go to the top of the page
+Quote Post

Posty w temacie
- rulfy   [HTML][PHP]Własna funkcja w php przestała działać   15.06.2011, 15:16:16
- - Hpsi+   CytatKiedy użyłem ją we wcześniejszym pliku działa...   15.06.2011, 15:19:01
- - rulfy   Ciąg Dalszy Postu Kod z którym ta funkcja nie dz...   15.06.2011, 15:24:39
- - sarxos   Cytat(rulfy @ 15.06.2011, 16:16:16 ) ...   15.06.2011, 15:27:18
- - rulfy   Ciąg Dalszy postu Kod z którym ta funkcja działa...   15.06.2011, 15:30:05
- - Hpsi+   OMFG. sorry 99% kodu jest niepotrzebna tego co dał...   15.06.2011, 15:32:23
- - rulfy   Nie wyskakują żadne błędy, ale wygląda na to jak b...   15.06.2011, 15:36:46
- - Hpsi+   A przyczepionych tematów się nie czyta? Temat: Jak...   15.06.2011, 15:38:40
- - rulfy   Po włączeniu będów wyskoczyło takie coś. Notice: ...   15.06.2011, 16:06:46
- - modern-web   To nie błąd tylko informacja, która nie ma prawa s...   15.06.2011, 16:28:28
- - Hpsi+   CytatDodaj znacznik @ przed definiowaniem zmiennej...   15.06.2011, 16:30:07
- - modern-web   Owszem, zły nawyk ale gdy włącza się wyświetlanie ...   15.06.2011, 16:35:43
- - rulfy   No cóż po patrze jeszcze trochę w kod może coś zna...   15.06.2011, 16:56:48
- - Fifi209   A połączenie z bazą masz w momencie wywołania funk...   15.06.2011, 18:26:25
- - rulfy   Połączenie z bazą mam na pewno bo inne aktualizowa...   16.06.2011, 07:50:30
- - mortus   Ale Panie. Przecież Twoja funkcja zwraca zawartość...   16.06.2011, 08:02:01
|- - rulfy   Cytat(mortus @ 16.06.2011, 09:02:01 )...   17.06.2011, 10:02:04
- - aachi   Ja patrzę w ten plik w którym funkcja nie działa i...   16.06.2011, 09:35:15
- - mortus   W funkcji druzyna() masz przypisania:[PHP] pobierz...   17.06.2011, 10:17:55
- - rulfy   Zmieniłem trochę funkcję druzyna($a) i zaczęł...   20.06.2011, 19:37:39
- - mlawnik   http://pl.wikipedia.org/wiki/DRY http://pl.wikipe...   20.06.2011, 20:10:03
- - mortus   Jak pisałem, trochę bez sensu jest przepisywanie z...   20.06.2011, 22:16:14


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: 13.10.2025 - 09:56