Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Odczyt danych z bazy, formowanie tresci wiadomosci i wysylka mailem
php__amator
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


Witajcie,

Jak codzien, kolejna porcja glupawych pytan z nadzieja na uzyskanie odpowiedzi.

Panowie .... i Panie, wiem jak z formularza wygenerowac tresc i wyslac wiadomosc na maila ale jak sie ma ta operacja do zbioru danych z bazy ?
Jak odczytac i umiescic wymagane informacje do wyslania ?

Odczytac wiem jak, nie wiem tylko jak zbudowac - i tu zdradze ze radze sobie juz z budowaniem np tabelek i umieszczaniem danych w tych tabelach, czy przygotowanie danych do umieszczenia wiadomosci wyglada podobnie ?

Mam nadzieje, ze dostatecznie jasno sie opisalem ?

Poradzcie cos.

Przyszlo mi do glowy cos takiego, zeby zdeklarowac jakas zmienna powiedzmy $linia = $tresc.$a ($row[''].$row'[''].$row['']); umiescic to w petli podcas odczytu z bazy w efekcie czego otrzymamy okreslona ilosc linii z kolejnymi numerami, te z kolei zmienne umieszcze w tresci wiadomosci.

Ale czy to zadziala ..... nie wiem smile.gif
ale moze macie jakies sprawdzone metody ?

Czy zamiast tego wygenerowac poprostu plik np html i wysylac go jako zalacznik ?
Co radzicie ?

Ten post edytował phpamator 28.11.2013, 14:45:47
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Cytat(phpamator @ 28.11.2013, 14:33:49 ) *
Czy zamiast tego wygenerowac poprostu plik np html i wysylac go jako zalacznik ?

Oj nie, to jest zły pomysł.

Tak naprawdę najładniej byłoby mieć plik PHP, który zawierałby treść HTML maila i potem jego treść przekazać do funkcji mail np. przez file_get_contents. Jeśli chcesz wszystko mieć w jednym pliku, to elegancko byłoby zrobić to z buforowaniem, czyli coś na ten kształt:
  1. <?php ob_start() ?>
  2. <html>
  3. <head>
  4. ...
  5. </head>
  6. <body>
  7. ...
  8. </body>
  9. </html>
  10. <?php $message = ob_get_clean();
  11. mail($to, $subject, $message);
Go to the top of the page
+Quote Post
php__amator
post
Post #3





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


Hejka Smoku,

Nooo fajnie, tylko jak umiescic w tresci wiadomosci te dane, z reszta sobie poradze tylko nie wiem jak wygenerowac te wlasnie tresc.

w zasadzie to mam nawet skrypt ktory napisalem kiedys kiedys kiedys i dzialal ale jako formularz z opcja wysylki na maila.
Nie wiem tylko jak utworzyc i zapakowac dane z bazy do tego maila.
Kurcze powtarzam sie smile.gif

Uzycie file_get_contents mialo by wyciagnac tresc z pliku wygenerowanego i wyslac jak rozumiem ?

Wyjasnij prosze

Poczytalem wlasnie o file_get_contents, nie glupie smile.gif

i w sumie chyba tego sie uczepie na chwile i bede testowal.

Nie wiem po co to robie tak naprawde, bo zamiast automatycznie sprawdzac i wysylac, wystarczy odpalic system zalogowac sie i sprawdzic stany smile.gif

No ale mam takich leniwcow i chcialbym dac im to na talerzu, codziennie prosto na maila wszystkie stany pomiedzy '0' a np. '15' co by wiedzialy gamonie ile czego jest a i sobie ulatwic zycie bo lataja i zawracaja glowe, czlowiek pograc nie moze spokojnie.




Ten post edytował phpamator 28.11.2013, 17:56:49
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


file_get_contents pobiera po prostu zawartość pliku i ją zwraca. Jeśli to plik PHP, to oczywiście przed zwróceniem zostanie zinterpretowany przez serwer i dostaniesz to, co serwer wypluje.

Pracowałeś kiedyś z bazami danych? Bo tutaj pobranie wyników będzie się odbywało tak jak zwykle, normalnie.

Ten post edytował SmokAnalog 28.11.2013, 17:51:16
Go to the top of the page
+Quote Post
php__amator
post
Post #5





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


Cytat(SmokAnalog @ 28.11.2013, 17:50:50 ) *
file_get_contents pobiera po prostu zawartość pliku i ją zwraca. Jeśli to plik PHP, to oczywiście przed zwróceniem zostanie zinterpretowany przez serwer i dostaniesz to, co serwer wypluje.

Pracowałeś kiedyś z bazami danych? Bo tutaj pobranie wyników będzie się odbywało tak jak zwykle, normalnie.


No wlasnie, doczytalem na ten temat co nieco.

Jeszcze nie wiem jak tego uzyc ale .... zaraz sie naucze smile.gif

To jest moje zapytanie do bazy i generowanie tabeli z interesujacymi mnie elementami. Dziala generalnie jak tego potrzebuje

chociaz pewnie nie jest skonstruowane jak byc powinno. Niemniej rzuc okiem, dla wprawnego programatora smile.gif to pewnie bulka z maslem.

Ja niestety moge jedynie nazwac siebie "poczatkujacympoczatkujacym" albo #noobie.

I tak sie dziwie, ze wogole dziala to co do tej pory wyprodukowalem smile.gif SAM smile.gif



  1. $wiersz = 1;
  2.  
  3. $tresc = ("<tr><td>".$row['item_id'].$row['model_id'].$row['model_number'].$row['quantity'].$row['size_id'].'</td></tr>');
  4.  
  5. $data = (date('j M Y, G:i:s'));
  6.  
  7. echo 'Wiadomosc do: '.$username." stany magazynowe<br>".$data;
  8.  
  9. echo '<table border="0" cellpadding="5">';
  10.  
  11. $result = mysql_query("SELECT DISTINCT model_id, model_number, size_id, quantity FROM stock WHERE item_id = 'Computer' ORDER BY model_id");
  12. if (!$result) {
  13. die("Database query failed: " . mysql_error());
  14. }
  15. while ($row = mysql_fetch_array($result)) { $id = $row['id'];$total = $total + $row['quantity'];
  16.  
  17. if ($row['quantity'] <=5 ) {echo $line.$nr;$nr == $nr ++; echo '<tr class="tr"><td align="right">'.$row['id'].'</td><td>'.$row['model_id'].' '.$row['model_number'].'</td><td width="40px" nowrap align="right"><b>'.$row['size_id'].'</b></td><td width="40px" nowrap align="right"><b>'.$row['quantity'].'</b></td><td nowrap width="80px" align="right"> on stock</td>'.'</tr>';}
  18.  
  19. else { }
  20.  
  21. }
  22. echo '<tr bgcolor="#09b"><td></td><td><b>RAZEM: </b></td><td><b>'.$total.'</b></td><td></td><td></td></tr></table>';


Uzycie w zapytaniu DISTINCT mialo mi zbierac takie same elementy i grupowac ale chyba moje pojecie na temat jego uzycia jeszcze nie jest dostateczne bo cos nie specjalnie pokazuje to jak trzeba smile.gif
Np mam przedmiot DC7700 i moge go sobie zobaczyc w kilku miejscach smile.gif zamiast w jednym.

Fajnie byloby najpierw odczytac (wszystko), pogrupowac (poniewaz mam wiele rekordow z tymi samymi przedmiotami ale w roznych miejscach i ich ilosci sa rozne ale to wciaz ten sam produkt wiec powinienem je zliczac zeby mi nie pokazywalo pozycji ktore defacto wcale zerowe nie sa smile.gif ), i dopiero sprawdzic stany ale jeszcze nie wiem jak to zrobic smile.gif wiem natomiast pare innych rzeczy smile.gif



Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Tak na przyszłość polecam pisać bardziej przejrzysty kod. W tym celu używaj tabulatora i oddzielaj warunki czy else
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Nie do końca rozumiem co chcesz zrobić.
Go to the top of the page
+Quote Post
php__amator
post
Post #8





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


Krok po kroku Panie Smoku smile.gif

1. odczyt danych z bazy w którym pobierane sa tylko te ktorych stan jest bliski '0'
2. utworzenie tresci wiadomosci ze zgromadzonych danych w formie tabeli
3. wysłanie pod wskazany adres e-mail.

To chcę zrobić smile.gif
Go to the top of the page
+Quote Post
pedro84
post
Post #9





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Krok po kroku, Panie PHPAmatorze smile.gif

1. odczyt danych
2. pętelka, utworzenie sobie tabeli (w HTML), zapisanie tegoż wyniku do zmiennej
3. wysyłamy mail, gdzie $message to będzie zmienna z Twoim wygenerowanym HTMLem.

Tak zrób smile.gif


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
php__amator
post
Post #10





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


No i zasadniczo wiem ... prawie jak to zrobić. Jak wrzucić do zmiennej tyle danych ?
Go to the top of the page
+Quote Post
pedro84
post
Post #11





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Np. metodą łopatologiczną:
  1. $output = '<table>';
  2.  
  3. // pętelka
  4.  
  5. $output .= '</table>';


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #12





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Albo tak jak radziłem wcześniej - osobny plik i file_get_contents lub buforowanie i ob_start.
Go to the top of the page
+Quote Post
php__amator
post
Post #13





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


Droga 'pedra84' wydaje mi sie bardziej znajoma smile.gif
dzisiaj, bo wczoraj nie bardzo mialem czas zajmowalem sie mocapowaniem smile.gif po testuje wszystkie trzy metody i zobaczymy smile.gif

Bede w kontakcie ...
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #14





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Cytat(phpamator @ 29.11.2013, 09:54:43 ) *
Droga 'pedra84' wydaje mi sie bardziej znajoma smile.gif

Bardziej znajoma, to prawda. Ale upychanie HTML-a do zmiennych jest uznawane za niezbyt elegancką metodę, o wiele lepszą kontrolę nad kodem masz, kiedy pliki z HTML (+ wstawkami PHP wypisującymi pewne wartości) trzymasz osobno. Możesz dzięki temu łatwo edytować tę treść bez obawy, że zepsujesz skrypt.
Go to the top of the page
+Quote Post
php__amator
post
Post #15





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


w sumie ...

pedro masz pelna skrzynke, nie mozna wyslac niczego na PW
Go to the top of the page
+Quote Post
pedro84
post
Post #16





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Cytat(phpamator @ 29.11.2013, 09:54:43 ) *
Droga 'pedra84' wydaje mi sie bardziej znajoma smile.gif

Jest to rozwiązanie teoretycznie lepsze dla początkującego, ale wcale nie idealne.

Cytat(SmokAnalog @ 29.11.2013, 10:00:23 ) *
Bardziej znajoma, to prawda. Ale upychanie HTML-a do zmiennych jest uznawane za niezbyt elegancką metodę, o wiele lepszą kontrolę nad kodem masz, kiedy pliki z HTML (+ wstawkami PHP wypisującymi pewne wartości) trzymasz osobno. Możesz dzięki temu łatwo edytować tę treść bez obawy, że zepsujesz skrypt.

Ano jest. Uznałem jednak, że dla początkującego będzie łatwiejsza do przyswojenia. A czasem, nawiasem mówiąc, po prostu się tak robi, żeby było szybciej, ale przy mniejszej ilości HTMLa.

Cytat(phpamator @ 29.11.2013, 15:32:36 ) *
pedro masz pelna skrzynke, nie mozna wyslac niczego na PW

Dzięki za info, nie zauważyłem nawet smile.gif


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
php__amator
post
Post #17





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


Hejka,
Zrobiłem chyba wszystko jak należy ale w efekcie otrzymuję tylko linie z ostatnim rekordem.
Nie buduje mi wiadomości ze wszystkimi liniami których powinno być około 30 sad.gif

Help
Go to the top of the page
+Quote Post
com
post
Post #18





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


pokaż jak zrobiłeś to pomożemy bo wróżek nie ma wink.gif
Go to the top of the page
+Quote Post
php__amator
post
Post #19





Grupa: Zarejestrowani
Postów: 217
Pomógł: 1
Dołączył: 26.05.2011
Skąd: Moon

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


  1.  
  2. echo $output = '<table border="0" cellpadding="5">';
  3. $result = mysql_query("SELECT * FROM stock WHERE item_id = 'Computer' ORDER BY model_id");
  4. if (!$result) {
  5. die("Database query failed: " . mysql_error());
  6. }
  7. while ($row = mysql_fetch_array($result)) { $id = $row['id'];$total = $total + $row['quantity'];
  8. if ($row['quantity'] <=10 ) {$nr == $nr ++; $output =('<tr class="tr"><td align="right">'.$row['id'].'</td><td width="40px" nowrap align="left"><b>'.$row['brand_id'].'</b></td><td>'.$row['model_id'].' '.$row['model_number'].'</td><td width="40px" nowrap align="right"><b>'.$row['size_id'].'</b></td><td width="40px" nowrap align="right"><b>'.$row['quantity'].'</b></td><td nowrap width="80px" align="right"> on stock</td>'.'</tr>');} else {}}
  9.  
  10. $output .= '</table>';
  11. echo 'Here: '.$output;


mowiąc szczerze to nie wiem jak do zmiennej dodawać kolejne rekordy. bo przecież każda kolejna pętla wywala poprzednie i zapisuje w zmiennej stan bieżący prawda \?

Więc jak to zrobić ?
Go to the top of the page
+Quote Post
com
post
Post #20





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


staraj się dbać o czytelność swojego kodu bo łatwo się w nim nam pogubić a co dopiero Tobie.. sadze ze chodzi Ci o to:
  1. $output .= '<tr class="tr"><td align="right">'.$row['id'].'</td><td width="40px" nowrap align="left"><b>'.$row['brand_id'].'</b></td><td>'.$row['model_id'].' '.$row['model_number'].'</td><td width="40px" nowrap align="right"><b>'.$row['size_id'].'</b></td><td width="40px" nowrap align="right"><b>'.$row['quantity'].'</b></td><td nowrap width="80px" align="right"> on stock</td>'.'</tr>';
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 22.08.2025 - 09:18