Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z klasą php
Forum PHP.pl > Forum > PHP
Posio
Dzis zacząłem "coś" tworzyć używając klas i czuje ze nie idzie mi to póki co najlepiej ale napisalem takie oto cudo: (podaje kawałek)

  1. class register {
  2. public $username = null;
  3. public $usernameOn = null;
  4.  
  5.  
  6.  
  7. public function validUsername($username)
  8. {
  9. $this->usernameOn = 1;
  10.  
  11. $valdiation = preg_replace('/[^A-Za-z0-9\-$]/', '', $username);
  12. $characters = strlen($username);
  13.  
  14.  
  15. if($username !== $valdiation){
  16. $shEr[1] = 1;
  17. return false;
  18. }
  19.  
  20. if($characters > 12 or $characters < 4){
  21. $shEr[2] = 1;
  22. return false;
  23. }
  24.  
  25. $this->username = trim($username);
  26.  
  27. return true;
  28. }
  29.  
  30.  
  31. public function addToBase()
  32. {
  33. if($this->usernameOn and $this->validUsername($this->username)){
  34.  
  35. $sql = mysql_query("INSERT INTO `users` (`username`) VALUES ('$this->username')");
  36.  
  37. }
  38.  
  39.  
  40. }
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47. }




I wszystko by mi odpowiadało i śmigało jak należy , gdyby nie zakończenie.
W ten sam sposób co username sprawdzam hasło emaila etc. i gdy wszystkie dane w formularzu są wymagane to nie ma problemu bo w $sql daje wszystko na sztywno.

Problem pojawia się kiedy nie wszystkie funkcje mają być użyte np. imie etc.
Nie mam pomysłu jak zrobić aby w zapytaniu sql pojawiało się to co mam użyte np. ($this->imieOn $this->nazwiskoOn)

Wpadłem tylko na pomysł, żeby po zapytaniu przesyłającym dane wymagane przesyłać pojedyńczo dane niewymagane (WHERE)

Ale, może jest lepszy sposób ?
sebastian.rozmus
Jeśli dobrze zrozumiałem chodzi o coś takiego? Bo nie bardzo rozumiem wink.gif

  1. $dat = array();
  2.  
  3. if($this->usernameOn)
  4. $dat['username'] = $this->username;
  5.  
  6. if($this->mailOn)
  7. $dat['mail'] = $this->mail;
  8.  
  9. $fields = array_keys($dat);
  10. $values = array_values($dat);
  11.  
  12. foreach($fields as $f) $fls .= "`$f`,";
  13. foreach($values as $v) $vls .= "'$f',";
  14.  
  15.  
  16.  
  17. $sql = 'INSERT INTO `users` ('. substr($fls, 0, -1) .') VALUES ('. substr($vls, 0, -1) .')';
  18.  
maniana
Można skrócić to do:
  1. $dat = array();
  2. if($this->usernameOn) $data['username'] = $this->username;
  3. if($this->mailOn) $data['mail'] = $this->mail;
  4. $sql = "INSERT INTO `users` (`".implode("`,`",array_keys($dat))."`) VALUES ('".implode("','",array_values($dat))."')";
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.