email reminder

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
zirico3
Δημοσιεύσεις: 23
Εγγραφή: 24 Οκτ 2006 01:47

email reminder

Δημοσίευση από zirico3 » 26 Σεπ 2012 12:26

Καλησπέρα σε όλους. προσπαθώ με τις απειροελάχιστες γνώσεις που έχω στην php και την mysql να φτιάξω ένα πολύ απλό email reminder. Αυτό που θέλω να κάνει ειναι να διαβάζει απο το πρώτο database όλα τα προϊόντα που είναι 30 ημερες πριν την λήξη και να στέλνει το email που θα διαβάζει από μια άλλη ταμπέλα με τους πελάτες. Θέλω μια μικρή βοήθεια αν γίνετε με την συνάρτηση IF και επίσης το πιο σημαντικό : έχω σκεφτεί το επόμενο βήμα να είναι ένα cronjob που να ελέγχει κάθε μέρα για τυχόν προϊόντα κοντά στην λήξη,όμως πως θα γίνει να μην στέλνει καθε φορα το ίδιο email σε αυτούς που ήδη το έστειλε?

Κώδικας: Επιλογή όλων

<?php
include 'connection.php';

$tab_macchinari='apparecchi';
$tab_clienti='aziende';

$query_1= "SELECT * FROM $tab_macchinari WHERE 'prossima verifica' < &#40;NOW&#40;&#41;,INTERVAL 1 MONTH&#41;";
$name_1=mysql_query&#40;$query_1&#41;;
$row_name1= mysql_fetch_assoc&#40;$name_1&#41;;   
$name_ditta=$row_name1&#91;'ditta'&#93;; 

$query_2="SELECT email FROM $tab_clienti WHERE 'Nome Ditta'='$name_ditta'";
$risultato=  mysql_query&#40;$query_2&#41;;
$row_name2= mysql_fetch_assoc&#40;$risultato&#41;;
$email=$row_name2&#91;'email'&#93;;


    
$to = "$email";
$subject = "HTML email";

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";

// Always set content-type when sending HTML email
$headers = "MIME-Version&#58; 1.0" . "\r\n";
$headers .= "Content-type&#58;text/html;charset=iso-8859-1" . "\r\n";

// More headers
$headers .= 'From&#58; <webmaster@example.com>' . "\r\n";
$headers .= 'Cc&#58; myboss@example.com' . "\r\n";

IF &#40;$risultato->num_rows>=1&#41;&#123;
mail&#40;$to,$subject,$message,$headers&#41;;
&#125;
   else &#123;
      //mail unsuccessful
   &#125;

?>
Ευχαριστω

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

email reminder

Δημοσίευση από vassilism » 26 Σεπ 2012 22:25

zirico3 έγραψε:όμως πως θα γίνει να μην στέλνει καθε φορα το ίδιο email σε αυτούς που ήδη το έστειλε?
Στον πίνακα που κρατάς το email του χρήστη, θα προσθέσεις άλλο ένα πεδίο το οποίο θα κρατάει τιμές 0 και 1 για το αν έχει στείλει ή όχι email.

Κατά την αποστολή του email θα γίνεται και update αυτό το πεδίο και θα αλλάζεις την τιμή του.
Έτσι θα ξέρεις αν θες να του στείλεις email ή όχι και επομένως το 1ο query θα το διαμορφώσεις να τραβάει τις εγγραφές με βάση την τιμή του πεδίου.

zirico3
Δημοσιεύσεις: 23
Εγγραφή: 24 Οκτ 2006 01:47

email reminder

Δημοσίευση από zirico3 » 27 Σεπ 2012 11:16

Ok πρόσθεσα το πεδίο emailverif με default value το 0 οποτε το πρώτο query πρέπει να γίνει έτσι ;

Κώδικας: Επιλογή όλων

$query_1= "SELECT * FROM $tab_macchinari WHERE 'prossima verifica' < &#40;NOW&#40;&#41;,INTERVAL 1 MONTH&#41; AND 'emailverif=0"; 
Επίσης θα πρέπει να προσθέσω αυτή την γραμμή INSERT μετά το if έτσι ?αλλα πως?Δηλαδή αυτό που δεν έχω καταλάβει είναι πως θα πρόσθεση την τιμή 1 μονο στο όνομα στο οποιο έστειλε το email?

Κώδικας: Επιλογή όλων

mysql_query&#40;"INSERT INTO aziende &#40;emailverif&#41; VALUES &#40;1&#41;"&#41;;
[/quote]

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

email reminder

Δημοσίευση από vassilism » 27 Σεπ 2012 15:29

Ακριβώς. Στον κώδικα ίσως έχεις μικρολαθάκια αλλά η φιλοσοφία είναι αυτή.

zirico3
Δημοσιεύσεις: 23
Εγγραφή: 24 Οκτ 2006 01:47

email reminder

Δημοσίευση από zirico3 » 27 Σεπ 2012 17:08

Μήπως ξέρεις να μου πεις με πιο τρόπο μπορώ να το δοκιμάσω αν δουλεύει?Εγώ προς το παρών δουλεύω local στον υπολογιστή μου με το netbeans (7.2) . Ετοίμασα τις ταμπέλες έτσι ώστε να υπάρχει ένα προϊόν που λήγει σε λιγότερο από ένα μηνα.Πως μπορώ να το δοκιμάσω ώστε να και την μορφή του email που θέλω να στείλω πως θα είναι ?

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

email reminder

Δημοσίευση από Apostolis_38 » 27 Σεπ 2012 22:41

zirico3 έγραψε:Επίσης θα πρέπει να προσθέσω αυτή την γραμμή INSERT μετά το if έτσι ?αλλα πως?Δηλαδή αυτό που δεν έχω καταλάβει είναι πως θα πρόσθεση την τιμή 1 μονο στο όνομα στο οποιο έστειλε το email?
Αμέσως μετά το σημείο όπου τσεκάρεις την επιτυχή αποστολή email βάλε να τρέχει το insert όπου θα το κάνεις σύμφωνα με το email
π.χ.:

Κώδικας: Επιλογή όλων

mysql_query&#40;"INSERT INTO aziende &#40;emailverif&#41; VALUES &#40;1&#41; WHERE mail = $email"&#41;; 
.

Βέβαια και αυτό δεν είναι πανάκεια γιατί εσύ τσεκάρεις αν το mail έφυγε από σένα, όχι αν το έλαβε ο παραλήπτης.
Α μπορείς να τον κάνεις να σου στέλνει ένα verification πατώντας επάνω σε κάποιο link που θα του στέλνεις θα είσαι εντάξει και θα μπορείς ήσυχος να αλλάζεις την ένδειξη στο πεδίο.


Για να κάνεις την δοκιμή απλώς βάλε δοκιμαστικά ένα όριο κάποια λεπτά και στείλτα στο mail σου. Οταν δεις οτι είναι ok τα γυρνάς σε πραγματικά δεδομένα.

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

email reminder

Δημοσίευση από vassilism » 27 Σεπ 2012 23:41

zirico3 έγραψε:Μήπως ξέρεις να μου πεις με πιο τρόπο μπορώ να το δοκιμάσω αν δουλεύει?Εγώ προς το παρών δουλεύω local στον υπολογιστή μου με το netbeans (7.2) . Ετοίμασα τις ταμπέλες έτσι ώστε να υπάρχει ένα προϊόν που λήγει σε λιγότερο από ένα μηνα.Πως μπορώ να το δοκιμάσω ώστε να και την μορφή του email που θέλω να στείλω πως θα είναι ?
Λογικά κάπου υπάρχει ένα αρχείο php.ini στο φάκελο του netbeans.
Πρέπει να το βρείς και να αλλάξεις το SMTP και τα ports με αυτά του παροχέα σου.

zirico3
Δημοσιεύσεις: 23
Εγγραφή: 24 Οκτ 2006 01:47

email reminder

Δημοσίευση από zirico3 » 28 Σεπ 2012 11:41

vassilism έγραψε:το δοκιμάσω ώστε να και την μορφή του email που θέλω να στείλω πως θα είναι ?
Λογικά κάπου υπάρχει ένα αρχείο php.ini στο φάκελο του netbeans.
Πρέπει να το βρείς και να αλλάξεις το SMTP και τα ports με αυτά του παροχέα σου.[/quote]

Εννοείς μήπως το αρχείο php.ini που υπάρχει στο wampserver?
Apostolis_38 έγραψε:.....................
Πολύ καλή ιδέα με το verification link,άμα τα καταφέρω να κάνω να δουλέψει αυτό,μετά θα προσπαθήσω να το κάνω,γιατί βασικά η υπενθύμιση είναι το πιο σημαντικό.

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

email reminder

Δημοσίευση από vassilism » 28 Σεπ 2012 12:01

zirico3 έγραψε:Εννοείς μήπως το αρχείο php.ini που υπάρχει στο wampserver?
Ναι αυτό

zirico3
Δημοσιεύσεις: 23
Εγγραφή: 24 Οκτ 2006 01:47

email reminder

Δημοσίευση από zirico3 » 28 Σεπ 2012 12:22

Κώδικας: Επιλογή όλων

&#91;mail function&#93;
; For Win32 only.
; http&#58;//php.net/smtp
SMTP = ssl&#58;smtp.gmail.com 
; http&#58;//php.net/smtp-port
smtp_port = 465
auth_username = ******
auth_password = *********

; For Win32 only.
; http&#58;//php.net/sendmail-from
sendmail_from =******@gmail.com
Έφτιαξα έτσι το άρχειo php.ini στο wampserver,μετά πήγα στο netbeans και έφτιαξα την απλή forma για email όταν την τρέχω μου βγάζει το μήνυμα "mail sent" αλλα δεν έρχεται κανένα mail στο inbox.

Κώδικας: Επιλογή όλων

<?php
$to = *******@yahoo.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "******@gmail.com";
$headers = "From&#58;" . $from;
mail&#40;$to,$subject,$message,$headers&#41;;
echo "Mail Sent.";
?> 

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

email reminder

Δημοσίευση από vassilism » 28 Σεπ 2012 14:53

Αυτές οι ρυθμίσεις πάνε βάση του παροχέα σου.
Δεν ξέρω τι πρέπει να βάλεις.

zirico3
Δημοσιεύσεις: 23
Εγγραφή: 24 Οκτ 2006 01:47

email reminder

Δημοσίευση από zirico3 » 01 Οκτ 2012 11:50

ακολούθησα αυτόν τον οδηγό και εγκατάστησα το sendmail με όλες τις ρυθμίσεις για τον παροχέα μου αλλα και πάλι δεν κατάφερα να στείλω κάποιο email. Μήπως μπορείτε να με βοηθήσετε λίγο με τον κώδικα να το φτιάξω?

Κώδικας: Επιλογή όλων

<?php
include 'connection.php';

$tab_macchinari='apparecchi'; 
$tab_clienti='aziende'; 

$query_1= "SELECT * FROM $tab_macchinari WHERE 'prossima verifica' < &#40;NOW&#40;&#41;,INTERVAL 1 MONTH&#41; AND 'emailverif'='0'";
$name_1=mysql_query&#40;$query_1&#41;;
$row_name1= mysql_fetch_assoc&#40;$name_1&#41;;   
$name_ditta=$row_name1&#91;'ditta'&#93;; 
$matricola=$row_name1&#91;'matricola ENPI'&#93;;

$query_2="SELECT email FROM $tab_clienti WHERE 'Nome Ditta'='$name_ditta'";
$risultato=  mysql_query&#40;$query_2&#41;;
$row_name2= mysql_fetch_assoc&#40;$risultato&#41;;
$email=$row_name2&#91;'email'&#93;;


    
$to = "$email";
$subject = "HTML email";

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";

// Always set content-type when sending HTML email
$headers = "MIME-Version&#58; 1.0" . "\r\n";
$headers .= "Content-type&#58;text/html;charset=iso-8859-1" . "\r\n";

// More headers
$headers .= 'From&#58; <zirico3@gmail.com >' . "\r\n";

IF &#40;$risultato->num_rows>=1&#41;&#123;
mail&#40;$to,$subject,$message,$headers&#41;;
mysql_query&#40;"INSERT INTO $tab_macchinari &#40;emailverif&#41; VALUES &#40;1&#41; WHERE 'matricola ENPI'='$matricola'"&#41;;
&#125;
   else &#123;
    echo 'error';
   &#125;

?>

zirico3
Δημοσιεύσεις: 23
Εγγραφή: 24 Οκτ 2006 01:47

email reminder

Δημοσίευση από zirico3 » 08 Οκτ 2012 17:03

Συγγνώμη που ξαναγυρίζω σε αυτό το thread αλλα μου λείπει ένα πολύ μικρό βήμα γι ανά ολοκληρώσω το reminder.Στην ουσία όλα δουλεύουν μια χαρά εκτος από την εντολή insert,τι λάθος έχω στον κώδικα και δεν την τρέχει ?

Κώδικας: Επιλογή όλων

IF &#40;mysql_num_rows&#40;$risult&#41;>=1&#41;&#123;
mail&#40;$to,$subject,$message,$headers&#41;;
mysql_query&#40;"INSERT INTO $taablename &#40;emailverif&#41; VALUES &#40;1&#41; WHERE id_ap='$id'"&#41;;
&#125;
   else &#123;
    echo 'error';
   &#125;
Ευχαριστω

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

email reminder

Δημοσίευση από korgr » 08 Οκτ 2012 17:21

update πρέπει να κάνεις, όχι insert

Κώδικας: Επιλογή όλων

mysql_query&#40;"UPDATE `$tablename` SET `emailverif`='1' WHERE `id_ap`='$id'"&#41;; 

zirico3
Δημοσιεύσεις: 23
Εγγραφή: 24 Οκτ 2006 01:47

email reminder

Δημοσίευση από zirico3 » 08 Οκτ 2012 18:11

Σευχαριστώ παρα πολύ για την απάντηση,το update δουλεύει κανονικά αλλα παρατήρησα όμως ότι κάθε φορα που τρέχω το script στέλνει mail σε οποιον έχει mailverif=0 αγνοώντας μια άλλη condition που είναι η εξής:.

Κώδικας: Επιλογή όλων

$querydata= mysql_query&#40;"SELECT DATE_ADD&#40;SYSDATE&#40;&#41;, INTERVAL 31 DAY&#41;"&#41;;
$name_1=mysql_query&#40;"SELECT * FROM $tablename WHERE 'next_verif' < '$querydata' AND 'mailverif'='0' "&#41;;
Αυτό που θέλω δηλαδή είναι πρώτα να ελέγχει αν η ημερομηνία next_verif είναι μικρότερη τον τριάντα ημερών από σήμερα και μετά για το αν mailverif=0.


EDIT : νομίζω ότι το έλυσα βάζοντας απλά

Κώδικας: Επιλογή όλων

next_verif<NOW&#40;&#41;+interval 1 month 

είναι ok σαν λύση?

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης