Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Funkcja i jej wywolanie
kewes
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.05.2009

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


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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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

Ten post edytował marcio 27.05.2009, 15:18:46
Go to the top of the page
+Quote Post
kewes
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.05.2009

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


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 ?
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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...
Go to the top of the page
+Quote Post

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.08.2025 - 16:06