Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja i jej wywolanie
Forum PHP.pl > Forum > Przedszkole
kewes
Witam,
Stworzyłem prosty formularz zawierający pola Checkbox i Opcion multiple:
  1. <p>Jakiej przeglądarki WWW używasz najcześciej?</p>
  2. <p><input type="checkbox" name="przeg[]" value="Firefox"/> Firefox</p>
  3. <p><input type="checkbox" name="przeg[]" value="Safari"/> Safari</p>
  4. <p><input type="checkbox" name="przeg[]" value="Opera"/> Opera</p>
  5. <p><input type="checkbox" name="przeg[]" value="Chrome"/> Chrome</p>
  6. <p><input type="checkbox" name="przeg[]" value="Internet Explorer"/> Internet Explorer</p>
  7. <p><input type="checkbox" name="przeg[]" value="Netscape Navigator"/> Netscape Navigator</p>
  8. <p><input type="checkbox" name="przeg[]" value="Ghost Navigator"/> Ghost Navigator</p>
  9. <p><input type="checkbox" name="przeg[]" value="inna"/> inna</p>
  10. <p style="text-align:center">Jakie popularne czasopisma komputerowe czytasz? </p><p style="text-align:center">eśli chcesz zaznaczyć wiecej niż jedną odpowiedĽ naciśnij klawisz CTRL</p>
  11. <p><select name="gazeta[]" size="8" multiple="multiple">
  12. <option value="PC World Komputer"> PC World Koputer </option>
  13. <option value="PC Format"> PC Format </option>
  14. <option value="Xploit"> Xploit </option>
  15. <option value="NEXT"> NEXT </option>
  16. <option value="Komputer Świat Ekspert"> Komputer Świat Ekspert </option>
  17. <option value="Komputer Świat"> Komputer Świat </option>
  18. <option value="Chip"> CHIP </option>
  19. <option value="Inne"> inne </option>


Przetwarzam sobie go skryptem php, jako że pola wielokrotnego wyboru to zrobiłem sobie prostą funkcję do wypisywania tych pól:
  1. <?php
  2. function prze()
  3. {
  4. for ($i=0; $i<count($_POST['przeg']);$i++) {
  5. echo " ".$_POST['przeg'][$i];
  6. };
  7.  
  8. }
  9. function gazeta()
  10. {
  11. for ($i=0; $i<count($_POST['gazeta']);$i++) {
  12. echo " ".$_POST['gazeta'][$i];
  13. };
  14.  
  15. }
  16. echo "Korzystasz z nastepujacych przegladarek: "; prze();
  17.  
  18. echo ' .<br />Czytasz nastepujace gazety: '; gazeta(); echo ' .';
  19. ?>


Wszystko działa, tj wypisuje to co ma wypisywać, lecz problem pojawia się gdy chce wysłać te dane mailem,
Napisałem Sobie prosty skrypt do wysyłania mailem:
  1. <?php
  2. $uwagi =$_POST['uwagi'];
  3. $imie=$_POST['podajimie'];
  4. $nazwisko=$_POST['podajnazwisko'];
  5. $wiek=$_POST['wiek'];
  6. $plec=$_POST['plec'];
  7. $adresat=$_POST['podajmail'];
  8. $ip=$_SERVER['REMOTE_ADDR'];
  9. $odbiorca="baranmic@gmail.com";
  10. $tytul = "$dataa$imie$nazwisko";
  11. $headers  = 'MIME-Version: 1.0' . "r\n";
  12. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "r\n";
  13. $headers .= "From: $adresat";
  14. $uwagi=$_POST['uwagi'];
  15. $tresc =' ';
  16. $tresc .='<table border="1"><tr><td>Imie</td><td>'.$imie.'</td></tr>';
  17. $tresc .='<tr><td>Nazwisko</td><td>'.$nazwisko.'</td></tr>';
  18. $tresc .='<tr><td>Adres IP</td><td>'.$ip.'</td></tr>';
  19. $tresc .='<tr><td>Plec</td><td>'.$plec.'</td></tr>';
  20. $tresc .='<tr><td>Wiek</td><td>'.$wiek.'</td></tr>';
  21. $tresc .='<tr><td>Adres E-mail</td><td>'.$adresat.'</td></tr>';
  22. $tresc .='<tr><td>Uwagi</td><td>'.prze().'</td></tr>';
  23. $tresc .='<tr><td>Gazety:</td><td>'.gazeta().'</td></tr>';
  24. @mail("$odbiorca","$tytul","$tresc","$headers");
  25. echo '<br /><br /><br /><br /><center>wiadomosc wyslano</center>';
  26. ?>



Jednak pola gdzie teoretycznie chciałem otrzymać z wywołania funkcji nie wysyłają sie wraz z resztą danych na maila, tylko po prostu wyświetlają.
Co zrobić aby to zmienić?
marcio
Poniewaz w funkcjach gazeta() i prze() masz echo() ktore wyrzuca dane na ekran nigdzie ich nie zapisuje i jesli dane chcesz przeslac za pomoca mail() te 2 funkcje musza cos zwracac za pomoca return.

Czyli:
  1. <?php
  2. function prze() {
  3.  
  4. for ($i=0; $i<count($_POST['przeg']);$i++) return $_POST['przeg'][$i];
  5.  
  6. }
  7.  
  8.  
  9. function gazeta() {
  10.  
  11. for ($i = 0; $i < count($_POST['gazeta']); $i++) return $_POST['gazeta'][$i];
  12.  
  13. }
  14. ?>

I potem ustawiasz sobie:
  1. <?php
  2. $agent = prze();
  3. $gazeta = gazeta();
  4. $tresc ='';
  5. $tresc .='<table border="1"><tr><td>Imie</td><td>'.$imie.'</td></tr>';
  6. $tresc .='<tr><td>Nazwisko</td><td>'.$nazwisko.'</td></tr>';
  7. $tresc .='<tr><td>Adres IP</td><td>'.$ip.'</td></tr>';
  8. $tresc .='<tr><td>Plec</td><td>'.$plec.'</td></tr>';
  9. $tresc .='<tr><td>Wiek</td><td>'.$wiek.'</td></tr>';
  10. $tresc .='<tr><td>Adres E-mail</td><td>'.$adresat.'</td></tr>';
  11. $tresc .='<tr><td>Uwagi</td><td>'.$agent.'</td></tr>';
  12. $tresc .='<tr><td>Gazety:</td><td>'.$gazeta.'</td></tr>';
  13. ?>


P.S powinno dzialac jak nie ustaw $agent i $prze jako tablice czyli $zmienna[] ale powinno dzialac
kewes
Cytat(marcio @ 27.05.2009, 16:14:23 ) *
Poniewaz w funkcjach gazeta() i prze() masz echo() ktore wyrzuca dane na ekran nigdzie ich nie zapisuje i jesli dane chcesz przeslac za pomoca mail() te 2 funkcje musza cos zwracac za pomoca return.

Czyli:
  1. <?php
  2. function prze() {
  3.  
  4. for ($i=0; $i<count($_POST['przeg']);$i++) return $_POST['przeg'][$i];
  5.  
  6. }
  7. function gazeta() {
  8.  
  9. for ($i = 0; $i < count($_POST['gazeta']); $i++) return $_POST['gazeta'][$i];
  10.  
  11. }
  12. ?>

I potem ustawiasz sobie:
  1. <?php
  2. $agent = prze();
  3. $gazeta = gazeta();
  4. $tresc ='';
  5. $tresc .='<table border="1"><tr><td>Imie</td><td>'.$imie.'</td></tr>';
  6. $tresc .='<tr><td>Nazwisko</td><td>'.$nazwisko.'</td></tr>';
  7. $tresc .='<tr><td>Adres IP</td><td>'.$ip.'</td></tr>';
  8. $tresc .='<tr><td>Plec</td><td>'.$plec.'</td></tr>';
  9. $tresc .='<tr><td>Wiek</td><td>'.$wiek.'</td></tr>';
  10. $tresc .='<tr><td>Adres E-mail</td><td>'.$adresat.'</td></tr>';
  11. $tresc .='<tr><td>Uwagi</td><td>'.$agent.'</td></tr>';
  12. $tresc .='<tr><td>Gazety:</td><td>'.$gazeta.'</td></tr>';
  13. ?>


P.S powinno dzialac jak nie ustaw $agent i $prze jako tablice czyli $zmienna[] ale powinno dzialac

No niestety działa, ale w mailu dostaje tylko ostatnią ze zaznaczonych opcji.
Mam zmienić w takim wypadku
$agent = prze();
$gazeta = gazeta();
na tablice czy też wywołanie w $tresc ?
erix
A nie możesz po prostu wkleić tego kodu do pętli, tylko tworzysz niepotrzebną funkcję...? return" title="Zobacz w manualu PHP" target="_manual przerywa jej działanie, to trudno, aby zwracało więcej niż jeden rekord...
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.