Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa i wyświetlenie danych
Forum PHP.pl > Forum > PHP
pjamorski
Witam.
Napisałem sobie klasę. Poniżej przedstawię funkcję ktora ma pobrać dane i przekazać je w odpowiednie miejsce i wyświetlić:

  1. var $nick;
  2. var $passwd;
  3. var $role;
  4. function Set_nick($nickname)
  5. {
  6. $this->nick = $nickname;
  7. }
  8. function Get_nick()
  9. {
  10. return $this->nick;
  11. }
  12. function Set_password($password)
  13. {
  14. $this->passwd = $password;
  15. }
  16. function Get_password()
  17. {
  18. return $this->passwd;
  19. }
  20.  
  21. var $row;
  22.  
  23. class MySQL_class
  24. {
  25. function Display_users()
  26. {
  27. require_once("globals.php");
  28. $this->server = DB_SERVER;
  29. $this->username = DB_USER;
  30. $this->password = DB_PASS;
  31. $this->db_name = DB_NAME;
  32. $this->db_connection = mysql_connect($this->server, $this->username, $this->password) or die("Connection failed. Error: " . mysql_error());
  33. $this->db = mysql_select_db(DB_NAME,$this->db_connection) or die("Database selection failed. Error " . mysql_error());
  34.  
  35. $querry = "SELECT nick, passwd FROM users";
  36. $equal = mysql_query($querry) or die("Error DB querry. Error: " . mysql_error());
  37.  
  38. while($this->row = mysql_fetch_array($equal))
  39. {
  40. $nick[] = $this->row['nick'];
  41. $passwd[] = $this->row['passwd'];
  42.  
  43. /*
  44. $this->Set_nick($this->row['nick']);
  45. $this->Set_password($this->row['passwd']);
  46. */
  47. $this->counter++;
  48. }
  49. for ($i = 0; $i < $this->counter; $i++)
  50. {
  51. $this->Set_nick($nick[$i]);
  52. $this->Set_password($passwd[$i]);
  53. return true;
  54. }
  55. return false;
  56. }
  57. }


Dane próbuję przekazać w ten sposób, ale wyświetlana jest tylko ostatnia osoba n razy.
Dzięki za pomoc
nospor
Przeciez Set_nick() za kazdym razem zapisuje do tej samej jednej zmiennej. Kazde wywolanie Set_nick nadpisuje poprzednią wartość
pjamorski
Zgadza się, to czego mogęu użyć. Tablic?questionmark.gif
nospor
Teoretycznie tak.
W praktyce pewnie też smile.gif
pjamorski
Kurcze zrobiułem tak:

  1. function Login()
  2. {
  3. require_once("globals.php");
  4. $this->server = DB_SERVER;
  5. $this->username = DB_USER;
  6. $this->password = DB_PASS;
  7. $this->db_name = DB_NAME;
  8. $this->db_connection = mysql_connect($this->server, $this->username, $this->password) or die("Connection failed. Error: " . mysql_error());
  9. $this->db = mysql_select_db(DB_NAME,$this->db_connection) or die("Database selection failed. Error " . mysql_error());
  10.  
  11. $nick = $this->nick;
  12. $haslo = $this->passwd;
  13. $haslo_crypt=crypt($this->passwd,'bab');
  14. $querry = "SELECT nick, passwd, role FROM users WHERE nick='$nick' AND passwd='$haslo_crypt'";
  15. $result = mysql_query($querry) or die("Error DB querry. Error: " . mysql_error());
  16. while ($this->row = mysql_fetch_array($result))
  17. {
  18. $this->r[] = $this->row['role'];
  19. $this->n[] = $this->row['nick'];
  20. $this->p[] = $this->row['passwd'];
  21. $this->counter++;
  22. }
  23. if ($nick && $haslo)
  24. {
  25. for ($i = 0; $i < $this->counter; $i++)
  26. {
  27. $this->Set_role($this->r[$i]);
  28. $this->Set_nick($this->n[$i]);
  29. $this->Set_password($this->p[$i]);
  30. return true;
  31. }
  32. }
  33. else
  34. {
  35. echo 'There is a problem with login In, please contact to administrator: pjamorski@interia.pl';
  36. }
  37. return false;
  38. }


i chcę wyświetlić, niestety nie w dalszym ciągu nie mogę:

  1. <?php
  2. require_once('sql_class.php');
  3. $object = new MySQL_class();
  4. for($i=0;$i<=$object->counter;$i++)
  5. {
  6. echo $object->n[$i];
  7. } ?>
nospor
przeciez funkcja Set_nick nadal robi to samo... to ją miałeś zmienić a nie jej wywołania.
pjamorski
czyli?questionmark.gif
skowron-line
  1. function Set_nick($nickname)
  2. {
  3. $this->nick = $nickname; // <--- Tu miałeś zrobić tablicę.
  4. }
pjamorski
To przyszło mi do głowy:

  1. var $nick = array();
  2. function Set_nick($nickname)
  3. {
  4. for($i=0;$i<=$this->counter;$i++)
  5. {
  6. $this->nick[$i] = $nickname[$i];
  7. }
  8. }


Niestety dalej bez pozytywnej reakcji. Nie mogę zaskoczyć. Nie zajmuję się PHP, proszę brać to pod uwagę.
nospor
skoro przekarzesz tablice to wystarczy:
$this->nick = $nickname;
bez zadnej petli
skowron-line
  1. function Set_nick($nickname)
  2. {
  3. $this->nick[] = $nickname; // <--- Tu miałeś zrobić tablicę.
  4. }


W taki sposób przy każdym wywołaniu metody Set_nick nowy nick będzie przypisany do tablicy.
pjamorski
deklaracja ma być taka:

  1. var $nick;


czy

  1. var $nick = array();


?
Błędów php nie mam ale teraz mi wywala mój komunikat że logowanie nie jest możliwe.

skowron-line
Cytat(pjamorski @ 29.06.2010, 09:16:50 ) *
deklaracja ma być taka:

  1. var $nick;


czy

  1. var $nick = array();


?

No sam zgadnij skoro ta zmienna ma być tablicą questionmark.gif
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.