Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Funkcje w PHP- gubienie wartości zmiennych
Forum PHP.pl > Forum > Przedszkole
fotexxx
witam
próbuje napisać funkcję która zwróci mi nazwę na podstawie numeru id z bazy danych i natrafia problem którego nie potrafię rozwiązać.

funkcja wyzklan ma za zadanie zwrocic nazwe na podstawie id który jest wywoływany jako argument finkcji w tej linii:
  1. $wyzywajacy_klan = wyzklan($wyz_klan);


Niestety to nie działa argument przekazywany do funkcji nie ma żadnej wartości pomimo ze zmienna $wyz_klan zawiera prawidłową wartość. Dodatkowo po odpaleniu skryptu nie wywala błędów ale wygląda tak jakby po wywołaniu funkcji zatrzymywał resztę wykonywania kodu.
Bardzo prosze o jakieś wskazówki.
  1. <?php
  2.  
  3. function wyzklan($id){
  4. $sql2744="SELECT * FROM clans WHERE id=$id";
  5. $sql_result2744=mysql_query($sql2744,$connection) or die(mysql_error() );
  6. while($row_wyz=mysql_fetch_array($sql_result2744)) {
  7. $wyzywajacy_klan = $row_wyz['nazwa'];
  8. }
  9. return $wyzywajacy_klan;
  10. }
  11.  
  12. $profileID = getID( $_GET['ID'] );
  13. $userid = (int)$_COOKIE['memberID'];
  14.  
  15. echo '<div id="tabs">
  16. <ul class="clans">
  17.  
  18. <li><a href="#tab-1">Moje klany</a></li>
  19. <li><a href="#tab-0">Dodaj klan</a></li>
  20. <li><a href="#tab-2">Klany do których należę</a></li>
  21. <li><a href="#tab-3">Statystyki</a></li>
  22. <li><a href="#tab-4">Użytkownicy</a></li>
  23. <li><a href="#tab-5">Mecze</a></li>
  24. </ul>
  25.  
  26. <div id="tab-1">
  27. <h3>Moje klany</h3><table width="100%" border="0"><tbody>
  28.  
  29. <tr style="background-color:#333;color:#fff;font-weight:bold;text-align:center;">
  30.  
  31. <td style="background-color:#fff;"><b><center></center></b></td>
  32. <td><b><center>Liga</center></b></td>
  33. <td><b><center>Nazwa klanu</center></b></td>
  34. <td><b><center>Opis</center></b></td>
  35. <td><b><center>WWW</center></b></td>
  36. <td><b><center>Data utworznia</center></b></td>
  37. <td><b><center>Rodzaj gry</center></b></td>
  38. <td><b><center>Usuń</center></b></td>
  39. </tr>';
  40. $sql="SELECT * FROM (clans INNER JOIN gry ON clans.gra = gry.id) INNER JOIN clans_ligi ON clans.liga = clans_ligi.nazwa_ligi WHERE clans.autor=$profileID";
  41. $sql_result=mysql_query($sql,$connection) or die(mysql_error() );
  42. while($row=mysql_fetch_array($sql_result)) {
  43. $id=$row["id"];
  44. $id_klanu = $row["0"];
  45. $autor=$row["autor"];
  46. $nazwa=$row["nazwa"];
  47. $opis=$row["opis"];
  48. $www=$row["www"];
  49. $data=$row["data"];
  50. $gra=$row["skrot_nazwy_gry"];
  51. $kraj=$row["kraj"];
  52. $nazwaligi=$row["nazwa_ligi"];


  1.  
  2. <div id="tab-5">
  3. <h3>Mecze moich klanów</h3>
  4. <p><br><font color="orange" size="2"><b>Oczekujace na zatwierdzenie</b></font><br><br>';
  5. //oczekujace
  6. $sql274="SELECT * FROM mecze WHERE wyzwany=$profileID AND status=1";
  7. echo'<table width="100%"><tr>
  8. <td>Wyzywający</td>
  9. <td>Gra</td>
  10. <td>Data meczu</td>
  11. <td>Serwer</td>
  12. <td>Info</td>
  13. </tr>
  14. ';
  15. $sql_result274=mysql_query($sql274,$connection) or die(mysql_error() );
  16. while($row=mysql_fetch_array($sql_result274)) {
  17.  
  18.  
  19. $wyzywajacy = $row['wyzywajacy'];
  20. $wyz_klan = $row['wyzywajacy_klan'];
  21. $ip = $row['ip'];
  22. $info = $row['info'];
  23. $gra = $row['gra'];
  24. $data_meczu = $row['data_meczu'];
  25. $wyzywajacy_nick = getNickName( $ID = ''.$wyzywajacy.'' );
  26. $wyzywajacy_klan = wyzklan($wyz_klan);
  27. echo'<tr><td>'.$wyzywajacy_nick.' wyzywający: '.$wyzywajacy_klan.'</td>
  28. <td>'.$gra.'</td>
  29. <td>'.$data_meczu.'</td>
  30. <td>'.$ip.'</td>
  31. <td>'.$info.'</td></tr>';
  32. }
  33.  
  34. echo'</table><br><font color="blue" size="2"><b>W trakcie</b></font><br><br>
  35. <br><font color="green" size="2"><b>Zakończone</b></font><br><br>
  36. </p>
  37. </div>
  38. </div>';
  39.  
  40. ?>

całość skryptu zawarta jest w jednym pliku ale musialem go troche skrocic bo limit wielkosci postu nie pozwala umiescic calego.

Ps: po usunieciu wywolania funkcji wszystko dziala prawidłowo
kadlub
  1. $sql_result2744=mysql_query($sql274,$connection) or die(mysql_error() );


$sql274 a nie powinno być $sql2744
mortus
Poza tym zdaje się, że funkcja ma coś zwracać, a Twoja wyświetla:
  1. function wyzklan($id) {
  2. $sql2744 = "SELECT * FROM clans WHERE id = $id";
  3. $sql_result2744 = mysql_query($sql2744, $connection) or die(mysql_error());
  4. // id klanu powinno być unikalne, a co za tym idzie nie potrzeba tu pętli while
  5. $row_wyz = mysql_fetch_array($sql_result2744)
  6. $wyzywajacy_klan = $row_wyz['nazwa'];
  7. return $wyzywajacy_klan;
  8. }
fotexxx
poprawilem kod jednak nadal to samo

bledy jakie sie pojawily w kodzie i na ktore zwrociliscie uwage wynikaly z moich prob ustalenia sedna sprawy i poprostu wkleilem rozgrzebany kod



poprostu w mojej ocenie wartość argumentu podawana w wywolaniu funkcji nie dociera do niej...niewiem tylko czym to jest spowodowane
kadlub
ta zmienna $wyz_klan jest na pewno liczbąquestionmark.gif
fotexxx
tak napewno jest liczbą

powinien przyjac wartość 80


co ciekawe nawet przy dodaniu do zapytania id na chama i wywolaniu funkcji bez zadnego argumentu efekt jest identyczny
mortus
Na samym początku daj:
  1. ini_set('display_errors', 1);

Upewnij się, że połączenie z bazą danych ($connection) nawiązujesz przed utworzeniem funkcji wyzklan(), bo wygląda na to, że skrypt zatrzymuje się na die(mysql_error()), przy czym nie wyświetla błędu MySQL, bo go nie ma. Jest natomiast błąd PHP dotyczący drugiego argumentu funkcji mysql_query(), czyli wspomnianej $connection.
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.