Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekazywanie zmiennej z funkcji do funkcji
Forum PHP.pl > Forum > PHP
Fixus
Witam...zwracam się do was (prawdopodobnie z dośc trywialnym) problemem. Otóż stawiam kroki coraz mocniejsze w programowaniu obiektowym w php
Kod
function checkEmails() {
        
            $sql = "SELECT * FROM newsletter";
            $result = mysql_query($sql);
            if(!$result) {
                echo "Problem z pobraniem danych z bazy";
            }
            $rekordy = mysql_num_rows($result);
            
            if(isset($_POST['all'])) {
            for($i=1; $i<=$rekordy; $i++) {
                $item = mysql_fetch_array($result);
                $email[] = $item['Email'];
            }
            $adresses = implode(",", $email);
            echo $adresses."<br />";
            return $adresses;
        } else {
            for($i=1; $i<=$rekordy; $i++) {
                $zlozenie = $i.'0';
                if(isset($_POST[$i])) {
                    $email[] = $_POST[$zlozenie];
                }
            }
            $adresses = implode(",", $email);
            echo $adresses."<br />";
            return $adresses;
        }
    }
    
    function sendEmail($adresses) {
        echo "<b>".$adresses."</b>";
    }

Problem polega na tym, że kiedy wywołuje metody:
Kod
<?php
include('included/DataBase.php');
include('class.newsletter.php');

$newsletter = new newsletter();
$newsletter->checkEmails();
$newsletter->sendEmail($adresses);
?>

adresy wyświetlają się raz...czyli wyświetla je metoda checkEmails()...jak przekazać zmienną $adresses do metody sendEmail?
qwaq
powinno pomóc dodanie w drugiej funkcji
  1. <?php
  2. function sendEmail($adresses) {
  3. global $adresses; //tu dodana linijka
  4. echo "<b>".$adresses."</b>";
  5. ?>


pod warunkiem oczywiście, że wywołasz ją po pierwszej funkcji
Cysiaczek
Czy mi się wydaje, czy napisałeś "obiektowo"? Skoro obiektowo, to może wykorzystasz podstawowe możliwości obiektów, czyli składowanie danych?
Używasz klas - bo to na pewno nie jest kod obiektowy (np. ta $_POST). Jak pójdziesz za radą kolegi ~qwaqa, to to już wogóle nie będzie miało sensu. Przypisz ten adres do jakiejś składowej obiektu i w innej metodzie ją odczytaj.

Pozdrawiam.
UDAT
Zapisz te adresy w zmiennej(właściwości) obiektu .

Cytat(qwaq @ 16.07.2007, 14:35:35 ) *
powinno pomóc dodanie w drugiej funkcji
  1. <?php
  2. function sendEmail($adresses) {
  3. global $adresses; //tu dodana linijka
  4. echo "<b>".$adresses."</b>";
  5. ?>


pod warunkiem oczywiście, że wywołasz ją po pierwszej funkcji


Co to ma wspólnego z programowaniem obiektowym!!!!!!
Fixus
a wywołanie ma wyglądać tak?
Kod
$newsletter = new newsletter();
$newsletter->checkEmails();
$newsletter->sendEmail($adresses);

bo nie działa tongue.gif

Cysiaczek a możesz powiedzieć jak to przypisać ?
delfinium
  1. <?php
  2. class newsletter {
  3. private $emails;
  4.  
  5. function checkEmails() {
  6. // ...
  7. // Twój kod
  8. // ...
  9. // zamień linie ( masz je 2 razy!! )
  10. // $adresses = implode(',', $email);
  11. // echo $adresses."<br />";
  12. // return $adresses;
  13. // na tę poniżej
  14.  $this->emails = implode(',', $email);
  15. }
  16.  
  17. function sendEmail() {
  18.  echo $this->emails;
  19. }
  20. }
  21. ?>


i wywołanie
  1. <?php
  2. include('included/DataBase.php');
  3. include('class.newsletter.php');
  4.  
  5. $newsletter = new newsletter();
  6. $newsletter->checkEmails();
  7. $newsletter->sendEmail()
  8. ?>
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.