Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Wybór maili i wysyłka po wyborze
Forum PHP.pl > Forum > Przedszkole
dudziec
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!
erix
Cytat
input type=checkbox name=jaki

Tutaj będziesz miał tylko ostatni z wybranych. Zrób z tego tablicę, którą wepchniesz do sesji.
dudziec
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źć?
erix
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
dudziec
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ść.
erix
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
dudziec
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?
nospor
jedno slowo: CRON
dudziec
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.
nospor
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
dudziec
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
erix
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.
ShadowD
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...
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.