Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Wybór maili i wysyłka po wyborze
dudziec
post 17.11.2008, 11:50:45
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 3.06.2005
Skąd: Knurów

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


Witam serdecznie,
mam taki problem i myśle nad nim juz kilka godzin. Otóż
W bazie danych mam kilkaset e-maili i wyswietla sie wszystko :

  1. <?php
  2. while ($row=mysql_fetch_array($result)) {
  3.                  // tutaj powinien znaleźć się kod który wyświetli dane np. na ekranie
  4.                  $email = $row["email"];
  5. ?>


co zrobic by wybrac z posród powiedzmy 100 maili te które nas interesuja - aby uzytkownik wybrał te ktore chce.
pozniej wysłał do nich wiadomosc.

mam takie cos aktualnie:


  1. <? {  //WYSYŁANIE DO WYBRANYCH
  2.         if($go==wyslijwybrany)
  3.            {
  4.       ?>
  5.       <BR><BR>
  6.        <TABLE border=0 cellPadding=0 cellSpacing=0>
  7.             <TBODY><form action=admin.php3<?echo("?adminpass=$adminpass&adminlogin=$adminlogin&go=wybierzemail");?> method=post>                      
  8.           <TR><TD class=text width=200><B>adres e-mail</B><BR></TD><TD class=text width=10><B>zaznacz</B><BR></TD></TR>
  9.              <?
  10.              $limit=500; // ilość wierszy która ma zostać pobrana
  11.              // połączenie z bazą danych
  12.                  $connection = mysql_connect("$host", "$user", "$password");
  13.  
  14.                  // testowanie połączenia z baza danych
  15.                  if (!$connection) {
  16.                  echo " Niemożliwe połączenie z bazą danych!";
  17.                  exit;
  18.                  }
  19.                  $db = mysql_select_db("$database", $connection);
  20.  
  21.                  // testowanie wyboru bazy danych
  22.                  if (!$db) {
  23.                  echo " Niemożliwe pobranie bazy!";
  24.                  exit;
  25.                  }
  26.                  $numresults=mysql_query("select * from biuletyn_program order by email", $connection);
  27.                  $numrows=mysql_num_rows($numresults);
  28.  
  29.                  // jeżeli skrypt został już wywołany to zmienna $offset=1 inaczej $offset=0
  30.                  if (empty($offset)) {
  31.                  $offset=0;
  32.                  }
  33.  
  34.                  // pobranie zbioru wyników z bazy danych
  35.                  $result=mysql_query("select * from biuletyn_program order by id desc limit $offset,$limit");
  36.  
  37.                  // teraz można wyświetlić zbiór wyników jakie posiad baza danych
  38.                  while ($row=mysql_fetch_array($result)) {
  39.                  // tutaj powinien znaleźć się kod który wyświetli dane np. na ekranie
  40.                  $email = $row["email"];
  41.                  ?>
  42.               <TR><TD class=text width=250><?echo("$email");?></TD><TD class=text width=10><input type=checkbox name=jaki value=<?echo$id?></TD></TR>
  43.                  <?
  44.                  }
  45.                  ?>
  46.               <TR><BR><TD class=text colspan=3 align=right><input type=submit value="Wyślij do  zaznaczonych"></TD></TR>
  47.               </form>
  48.             </TBODY>
  49.            </table>
  50.            <TABLE border=0 cellPadding=0 cellSpacing=0>
  51.             <TBODY>
  52.             <TR><TD align=center>
  53.       <?
  54.             // następnie musimy zrobić linki do pozostałych wyników ktore maj abyc wyswietlone
  55.                  if ($offset!=0) { // ominięcie POPRZEDNI jeżeli offset=0
  56.                  $prevoffset=$offset-$limit;
  57.                  print "<a class=bialy href=\"$PHP_SELF?offset=$prevoffset&&adminpass=$adminpass&adminlogin=$adminlogin&&go=wyslijwybrany\">&laquo;&laquo; wstecz</a> &nbsp; \n";
  58.                  }
  59.  
  60.                  // obliczenie liczby stron które potrzebują linki
  61.                  $pages=intval($numrows/$limit);
  62.  
  63.                  // zmienna $pages zawiera teraz całkowitą liczbę potrzebnych stron
  64.                  if ($numrows%$limit) {
  65.                  // jeżeli występuje reszta z dzielenia to dodajemy jeszcze jedną stronę
  66.                  $pages++;
  67.                  }
  68.  
  69.                  for ($i=1;$i<=$pages;$i++) { // wyswietlenie 1 2 3 4 ...
  70.                  $newoffset=$limit*($i-1);
  71.                  print "<a class=bialy href=\"$PHP_SELF?offset=$newoffset&&adminpass=$adminpass&adminlogin=$adminlogin&&go=wyslijwybrany\">strona $i</a> &nbsp; \n";
  72.                  }
  73.  
  74.                  // sprawdzenie czy bieżąca strona nie jest ostatnią
  75.                  if (!((($offset/$limit)+1)==$pages) && $pages!=1) {
  76.                  // niejest ostatnią stroną więc wyświetl NASTĘPNY
  77.                  $newoffset=$offset+$limit;
  78.                  print "<a class=bialy href=\"$PHP_SELF?offset=$newoffset&&adminpass=$adminpass&adminlogin=$adminlogin&&go=wyslijwybrany\">więcej &raquo;&raquo;</a><p>\n";
  79.                  }
  80.             echo("</td></tr></tbody></table>");
  81.            }
  82.       ?>
  83.        <BR><BR>
  84.        <TABLE border=0 cellPadding=0 cellSpacing=0>
  85.             <TBODY>                      
  86.             </TBODY>
  87.            </table>
  88.       <?
  89.           }
  90.       ?>



Wybieram interesujace mnie maile i dalej co robic? by te wybrane maile były uzywane dalej questionmark.gifquestionmark.gifquestionmark.gif
jak je zapamietac?
Prosze was o Pomoc... dzieki!

Ten post edytował dudziec 17.11.2008, 13:58:57
Go to the top of the page
+Quote Post
erix
post 17.11.2008, 16:48:24
Post #2





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




Cytat
input type=checkbox name=jaki

Tutaj będziesz miał tylko ostatni z wybranych. Zrób z tego tablicę, którą wepchniesz do sesji.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dudziec
post 18.11.2008, 08:53:32
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 3.06.2005
Skąd: Knurów

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


Zrobiłem takie cos

  1. <?php
  2. if($go==wybierzemail)
  3.          {
  4.          echo("Wybrano adresy:");
  5.          $tablica[] = array() ;
  6.          $tablica[] = $_POST['tablica'];
  7.          for($index=0;$index<5;$index++)
  8.  {
  9.  
  10.          echo $tablica[$index];
  11. }
  12. ?>



jesli chodzi o pole input to wyglada tak :

  1. <input type=checkbox name=tablica[] value=<?echo $email;?>

Na moj rozum powinno się wyswietkac wybrane adresy koło siebie
Czy cos zwaliłem?questionmark.gif?
Bo ja juz sam nie wiem o co chodzi.

boo
  1. <?php
  2. $tablica[0]
  3. ?>
- pierwszy wybór ma pokazywac
  1. <?php
  2. $tablica[2]
  3. ?>
- drugi wybór ma pokazywac i tak dalej ...

z tym ze nie wiemy ile tych adresow email wybierzemy więc trzeba inna petle zastosowac - ale nawet na for pokazuje tylko jeden email.
Co jest nie tak ?

Zrobiłem mały test :

  1. <?php
  2. print_r( array_keys( $_POST['tablica'] ) );
  3. ?>


wypluło mi cos tam .. po zaznaczeniu np 4 pól :

Wybrano adresy:Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )


Czyli cos tam jest przechowywane w tablicach ?

jak to ugryźć?

Ten post edytował dudziec 18.11.2008, 11:46:46
Go to the top of the page
+Quote Post
erix
post 18.11.2008, 15:36:42
Post #4





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




Cytat
Na moj rozum powinno się wyswietkac wybrane adresy koło siebie

Koło siebie, czyli jak?

Cytat
Zrobiłem mały test :

Adresy masz nie w kluczach, a w wartościach tablicy. winksmiley.jpg Powinieneś już dojść do rozwiązania. winksmiley.jpg


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dudziec
post 19.11.2008, 08:19:37
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 3.06.2005
Skąd: Knurów

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


Tak tak doszedłem juz do tego by wyswietlało adresy, teraz zabardzo nie wiem jak wysłac na te adresy wiadomośc, a jest ich koło 5000. macie moze jakiś pomysł? Myslalem by zapisac je do bazy - tymczasowo i później wysyłac wiadomośc do nich.
powiedzmy ze w bazie danych tworze tymczasowa tabele - najpierw te adresy zostaja zapisane w bazie danych w tabeli tymczasowe i póżniej wysyła się je - nie wiem czy to dobry pomysł? Pozatym nie wiem zabardzo jak zrobic by się PHP nie zapchał :| Ma ktos jakiś pomysl - adresów jest 5000 jedna wiadomość.
Go to the top of the page
+Quote Post
erix
post 19.11.2008, 16:54:18
Post #6





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




PHP raczej się nie zapcha, problem w tym, żeby raz - uzgodnić z administracją serwera, jakie są nałożone limity na wysyłanie maili, dwa - odpowiednio wysyłać, żebyś nie został uznany za spammera.

Używaj czasem wyszukiwarki tongue.gif
http://forum.php.pl/index.php?showtopic=74...mp;#entry384108

Ten post edytował erix 19.11.2008, 16:54:47


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dudziec
post 21.11.2008, 09:08:17
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 3.06.2005
Skąd: Knurów

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


Teraz mam takie pytanie, jak zrobić by wiadomosci były wysyłane powiedzmy 50 wiadomości wysłanych 10 minut przerwy i poźniej znowu 50 wiadomości wysłanych itd, aż wszytskie się wyślą, czy jest taka funkcja PHP kontrolujaca to?
Go to the top of the page
+Quote Post
nospor
post 21.11.2008, 10:56:09
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jedno slowo: CRON


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dudziec
post 21.11.2008, 12:23:59
Post #9





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 3.06.2005
Skąd: Knurów

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


Rozumiem, i wiem ze CROn - tylko jak to połaczyć bo umiem tworzyc wiadomosc za pomoca mail() jednak jak to wszytsko powiazac - chodzi mi o to ż enigdy Crona nie uzywałem i pytanie jest takie:

Pisze normalnie pętle i wysyła wiadomości - wszytskie na raz, a cron to kontroluje?
Czuy jakoś to tzreba zamiescic w kodzie PHP?
Tak jak wspomnialem - nei kozystałem jescze z CRONA nigdy i jestem poprostu zielony w tych sprawach.

pozdrawiam
K.
Go to the top of the page
+Quote Post
nospor
post 21.11.2008, 12:30:08
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




cron to nic innego jak wywolywanie twojego skryptu co jakis czas (czas ty okreslasz)
napisz skrypt co bedzie wysylal x maili i wywoluj go co x czasu poprzez crona


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dudziec
post 5.12.2008, 09:27:46
Post #11





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 3.06.2005
Skąd: Knurów

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


nie qumam sad.gif

ale jak cron ma rozluznic ze wysyła maile pakietami:

100 ________ odstep czasowy _______100________ odstep czasowy _______100________ odstep czasowy _______100 itd...


a jak to w php dac?

naprawde nie qumam tego
Go to the top of the page
+Quote Post
erix
post 5.12.2008, 19:06:37
Post #12





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




Zapisuj sobie gdzieś, na które mailem zostały wysłane wiadomości. Przy każdym następnym wywołaniu pomijaj te, które zapisałeś.

Możesz albo poszczególne maile zapisywać (IMHO mało efektywne) albo przy wyciąganiu listy zapisuj sobie pozycję LIMIT 0,50, przy następnym wywołaniu LIMIT 50,50, itp.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ShadowD
post 5.12.2008, 19:25:20
Post #13





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Możesz też:

Pobierasz z pliku wartość i zapisujesz ją do $id
zapytanie które wyświetla wszystkie maile które mają id większe niż $id
for($i=0;$i<=50;$i++)
{
//następne pole mysql i pobranie emaila
mail(.......)
}
$id=$id+50;
i zapisujesz do pliku zmienną $id. (nawpisujesz)

A cronem odpalasz ten skrypt co 10min i tyle...


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 09:06