Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] problem z $this
pawel06281990
post
Post #1





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

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


Witam,

Nie wiem dla czego działa mi $this na class mam taki komunikat.

Fatal error: Uncaught Error: Using $this when not in object context in /home/twoj-host/web/test.twoj-host.eu/public_html/wp-content/plugins/wp-zmarli/inc/function/function_licz.php:14 Stack trace: #0 /home/twoj-host/web/test.twoj-host.eu/public_html/wp-content/plugins/wp-zmarli/admin/zmarli_list.php(72): liczenie::count_sql() #1 /home/twoj-host/web/test.twoj-host.eu/public_html/wp-content/plugins/wp-zmarli/inc/instalation.php(78): require_once('/home/twoj-host...') #2 /home/twoj-host/web/test.twoj-host.eu/public_html/wp-includes/class-wp-hook.php(303): wp_zmarli->list_zmarli() #3 /home/twoj-host/web/test.twoj-host.eu/public_html/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /home/twoj-host/web/test.twoj-host.eu/public_html/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /home/twoj-host/web/test.twoj-host.eu/public_html/wp-admin/admin.php(259): do_action() #6 {main} thrown in /home/twoj-host/web/test.twoj-host.eu/public_html/wp-content/plugins/wp-zmarli/inc/function/function_licz.php on line 14

W witrynie wystąpił błąd krytyczny. W wiadomości wysłanej na adres e-mail administratora strony umieszczono dodatkowe instrukcje


a tak wygląda function count_sql()

  1. class liczenie extends wp_zmarli {
  2.  
  3. function count_sql($name_db, $wartosc =''){
  4.  
  5. $count_sql = $this->wpdb->get_var("SELECT COUNT($wartosc) FROM ".$name_db."");
  6.  
  7. if(!$count_sql){
  8. $count_sql .='0';
  9. }
  10. return $count_sql;
  11. }


A tak wygląda główna classa

  1. $wp_zmarli = new wp_zmarli();
  2. class wp_zmarli {
  3. private $wpdb;
  4.  
  5. private $wyszukiwarka_table;
  6. private $wygasa_table;
  7. private $parafianin_table;
  8. private $info_cmentarz_table;
  9. private $zapal_znicz_table;
  10. private $zapal_znicz_ile_table;
  11. private $groby_table;
  12. private $historia_zmarli_table;
  13. private $zamow_msze_email_templates_table;
  14. private $users;
  15.  
  16.  
  17. function wp_zmarli(){
  18. global $wpdb;
  19. $this->wpdb = $wpdb;
  20. $this->wyszukiwarka_table = $wpdb->prefix . 'wyszukiwarka';
  21. $this->wygasa_table = $wpdb->prefix . 'wygasa';
  22. $this->parafianin_table = $wpdb->prefix . 'parafianin';
  23. $this->info_cmentarz_table = $wpdb->prefix . 'info_cmentarz';
  24. $this->zapal_znicz_table = $wpdb->prefix . 'zapal_znicz';
  25. $this->zapal_znicz_ile_table = $wpdb->prefix . 'zapal_znicz_ile';
  26. $this->groby_table = $wpdb->prefix . 'groby';
  27. $this->historia_zmarli_table = $wpdb->prefix . 'historia_zmarli';
  28. $this->zamow_msze_email_templates_table = $wpdb->prefix . 'zamow_msze_email_templates';
  29. $this->users_table = $wpdb->prefix . 'users';
  30.  
  31.  
  32. require_once(WPNW_DIR.'/inc/function/function_licz.php');
  33. }


I próbowałem już wszystkiego co robię źle??. Pomóżcie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pawel06281990
post
Post #2





Grupa: Zarejestrowani
Postów: 298
Pomógł: 0
Dołączył: 10.01.2014

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


I nadal mam ten problem z $this a zrobiłem tak jak mówiliście.

Tak wygląda plik sprawdzający czy data minęła.

  1. class sprawdzanie extends wp_zmarli{
  2.  
  3.  
  4.  
  5. public function __construct() {
  6.  
  7. $this->wpdb;
  8. }
  9.  
  10.  
  11. public function sprawdz_zapalone_znicze(){
  12. global $wpdb;
  13. $res1 = $wpdb->get_results("SELECT swieczki_czas, Id_wyszukiwarka FROM $this->'zapal_znicz_table' WHERE aktywuj_czas='1' ORDER BY swieczki_czas ASC");
  14. if ($res1) {
  15. foreach ($res1 as $data) {
  16. if ($data->swieczki_czas < date("Y-m-d H:i:s", time()) && $data->swieczki_czas != "0000-00-00 00:00:00") {
  17. $wpdb->query("UPDATE ".$this->wyszukiwarka_table." SET ile_zapalono = ile_zapalono -1, ile_zniczy = ile_zniczy +1 WHERE Id='".$data->Id_wyszukiwarka ."'");
  18. $wpdb->delete($this->zapal_znicz_table, array('swieczki_czas' => $data->swieczki_czas));
  19. }
  20. }
  21. }
  22.  
  23. }
  24.  
  25. public function waznosc_wygasa_pokladne(){
  26. global $wpdb;
  27. $res2 = $wpdb->get_results("SELECT wyszukiwarka.*, wygasa.zmarly_id FROM $this->wyszukiwarka_table wyszukiwarka
  28. LEFT JOIN $this->wygasa_table wygasa ON wygasa.zmarly_id=wyszukiwarka.Id
  29. WHERE wyszukiwarka.oplata_pokladne<>'' AND if(length(wyszukiwarka.oplata_pokladne)=4,concat('31/12/',wyszukiwarka.oplata_pokladne),concat(replace(substring(wyszukiwarka.oplata_pokladne, 7, 4),'/','0'),'/',replace(substring(wyszukiwarka.oplata_pokladne, 4, 2),'/','0'),'-',replace(substring(wyszukiwarka.oplata_pokladne, 1, 2),'/','0')))<=curdate()
  30. ");
  31. var_dump($res2);
  32. if ($res2) {
  33.  
  34. foreach ($res2 as $data) {
  35.  
  36. if ($data->zmarly_id) {
  37. $wpdb->query("UPDATE $this->wygasa_table SET imie='".$data->imie."', nazwisko='".$data->nazwisko."', data_urodzienia = '".$data->data_urodzienia."', data_smierci='".$data->data_smierci."', sektor='".$data->sektor."', rzad='".$data->rzad."', pole_grobu='".$data->pole_grobu."', oplata_pokladne='".$data->oplata_pokladne."', zmarly_id='".$data->Id."', status='wygasa' WHERE zmarly_id='".$data->Id."'");
  38. }else{
  39. $wpdb->query("INSERT INTO $this->wygasa_table SET imie='".$data->imie."', nazwisko='".$data->nazwisko."', data_urodzienia = '".$data->data_urodzienia."', data_smierci='".$data->data_smierci."', sektor='".$data->sektor."', rzad='".$data->rzad."', pole_grobu='".$data->pole_grobu."', oplata_pokladne='".$data->oplata_pokladne."', zmarly_id='".$data->Id."', status='wygasa' ");
  40. }
  41. }
  42. }
  43.  
  44. }
  45.  
  46. }
  47. (new wp_zmarli());
  48. $c=new wp_zmarli();
  49. //echo $c;
  50. $sprawdzanie=new sprawdzanie();


EDIT:

Zadziałało mi to tak jak chciałem trochę się pomęczyłem, ale mam teraz jak powinno być.

A to rozwiązanie które znalazłem
  1. $sprawdzanie=new sprawdzanie($wp_zmarli);
  2. echo $sprawdzanie->waznosc_wygasa_pokladne();

i dodałem to
  1. protected $wpdb;//zawardość całej bazy wordpressa
  2. public $wyszukiwarka_table; //table z Wyszukiwaniem zmarłych
  3. public $wygasa_table; //Tabela wygasające pokładne
  4. public $parafianin_table; // tabela z parafianinem
  5. public $info_cmentarz_table;// informacje dla administratora i użytkownika
  6. public $zapal_znicz_table; // zapalone znicze
  7. public $zapal_znicz_ile_table; //ile zniczy zostało zapalonych na daną osobe
  8. public $groby_table; // zdjęcia z pomnikami
  9. public $historia_zmarli_table; //historia operacji na wyszukiwarce
  10. public $zamow_msze_email_templates_table; // tamplatki e-mail
  11. private $users; // baza z uzytkonikami
  12.  
  13. public function __construct() {
  14.  
  15. global $wpdb;
  16. $this->wpdb = $wpdb;
  17. $this->wyszukiwarka_table = $wpdb->prefix.'wyszukiwarka';
  18. $this->wyszukiwarka_table = $wpdb->prefix.'wyszukiwarka';
  19. $this->wygasa_table = $wpdb->prefix.'wygasa';
  20. $this->parafianin_table = $wpdb->prefix.'parafianin';
  21. $this->info_cmentarz_table = $wpdb->prefix.'info_cmentarz';
  22. $this->zapal_znicz_table = $wpdb->prefix.'zapal_znicz';
  23. $this->zapal_znicz_ile_table = $wpdb->prefix.'zapal_znicz_ile';
  24. $this->groby_table = $wpdb->prefix.'groby';
  25. $this->historia_zmarli_table = $wpdb->prefix.'historia_zmarli';
  26. $this->zamow_msze_email_templates_table = $wpdb->prefix.'zamow_msze_email_templates';
  27. $this->users_table = $wpdb->prefix . 'users';
  28. }


I mi zadzialało.


Ten post edytował pawel06281990 3.01.2022, 15:15:08
Go to the top of the page
+Quote Post

Posty w temacie


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: 24.12.2025 - 19:18