Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] klasa
Forum PHP.pl > Forum > PHP
shovit
Witam! mam problem przy tworzeniu klasy odpowiedzialnej za obsluge systemu newsow - napisalem to kiedys na funkcjach i zmiennych globalnych ale postanowilem przerobic na klase.
  1. <?php
  2. class newsy {
  3.  
  4. var $news_id;
  5. var $news_tresc;
  6. var $news_tytul;
  7.  
  8. function admin_news(parametry dotyczace wygladu panelu) {
  9.  
  10. if(isset($_POST['news_id_edytuj'])) {
  11.  
  12. $this->news_id=$_POST['news_id_edytuj'];
  13.  
  14. $odczyt=mysql_query("select * from newsy where nr='$this->news_id'");
  15. while($row=mysql_fetch_array($odczyt)) {
  16.  
  17. $this->news_tytul=$row['tytul'];
  18. $this->news_tresc=$row['tresc'];
  19. }
  20.  
  21. $this->rysuj_formularz($_PHP['self'], 'edytuj', $this->news_tytul, $this->news_tresc);
  22. }
  23.  
  24. else { //czesc kodu odpowiedzialna za wysiwtlanie panelu administracji newsami przesyla m
    .in  
  25.  zmienna $news_id_edytuj jesli zostanie nacisniety przycisk "edytuj"// 
  26.  
  27.  
  28. }
  29.  
  30. }
  31.  
  32.  function rysuj_formularz($action, $value, $tytul_value, $tresc_value) {
  33.  //wysyla wartosci w zmiennych $tytul_edit i $tresc_edit
  34. }
  35.  
  36.  function edytuj_news() {
  37.  
  38. if(isset($_POST['tytul_edit']) && isset($_POST['tresc_edit'])) {
  39. echo $this->news_id;
  40. $tytul=addslashes($_POST['tytul_edit']);  
  41.  $tresc=addslashes($_POST['tresc_edit']);
  42. $edytuj=mysql_query("update newsy set tytul='$tytul', 
  43. tresc='$tresc' where nr='$this->news_id'");
  44. }
  45. }
  46.  
  47. // pozostale funckje
  48.  
  49. }
  50. ?>



a to fragment kodu w pliku .php

  1. <?php
  2. include ('newsy.inc');
  3.  
  4.  
  5.  
  6. // laczenie z baza mysql
  7.  
  8.  
  9.  
  10. $mynews = new newsy();
  11. $mynews->edytuj_news();
  12. $mynews->admin_news(parametry wygladu panelu);
  13. ?>


Problem polega na tym ze zapytanie mysql w funkcji edytuj_news nie wykonuje sie:
  1. <?php
  2. $edytuj=mysql_query("update newsy set tytul='$tytul', 
  3. tresc='$tresc' where nr='$this->news_id'");
  4. ?>


jesli zamiast tego wpisze kod

  1. <?php
  2. $edytuj=mysql_query("update newsy set tytul='$tytul', 
  3. tresc='$tresc' where nr=20");
  4. ?>


czyli zmienna $this->$news_id zastapie konkretna liczba to caly skrypt dziala dobrze wiec porblem tkwi w tym ze nie moge odczytac tej zmiennej, probowalem ja wyswietlac przez echo i tez nie dziala wiec zmienna jest na 100% pusta, ale gdy wyswietle ja przez echo $this->news_id zaraz po tym jak jej wartosc zostaje ustawiona w funkcji admin_news() w ten sposob
  1. <?php
  2. if(isset($_POST['news_id_edytuj'])) {
  3.  
  4. $this->news_id=$_POST['news_id_edytuj'];
  5. echo $this->news_id;
  6. }
  7. ?>


to zostaje wyswietlona poprawnie jej wartosc. POMOCY w czym tkwi problem? niedawno zabralem sie za obiektowe programowanie wiec jestem w tym bardzo slaby.
kamikaze_
Zauważ, że:

  1. <?php
  2. $mynews = new newsy();
  3. $mynews->edytuj_news(); // <- tu korzystasz z $this->news_id
  4. $mynews->admin_news(parametry wygladu panelu); // <- a tu jest ustawiana wartość $this->news_id
  5. ?>


więc jakoś nie po kolei albo źle masz to zaprojektowane. Muszisz mieć ustawioną wartoś news_id przed użyciem w zapytaniu.
shovit
Cytat(kamikaze_ @ 7.08.2006, 20:53 ) *
Zauważ, że:

  1. <?php
  2. $mynews = new newsy();
  3. $mynews->edytuj_news(); // <- tu korzystasz z $this->news_id
  4. $mynews->admin_news(parametry wygladu panelu); // <- a tu jest ustawiana wartość $this->news_id
  5. ?>


więc jakoś nie po kolei albo źle masz to zaprojektowane. Muszisz mieć ustawioną wartoś news_id przed użyciem w zapytaniu.


zmienilem na
  1. <?php
  2. $mynews = new newsy();
  3. $mynews->admin_news(parametry panelu);
  4. $mynews->edytuj_news();
  5. ?>


i tez nie dziala. pozatym nie wydaje mi sie by w tym tkwil problem poniewaz dane z funkcji rysuj_formularz() wywolywanej przez edytuj_news() sa przesylane do $_PHP['self'] wiec caly kod laduje sie od nowa
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.