Shawn McKenzie wrote: > Gary wrote: >> Shawn >> >> Thanks for your reply. Some of what you are saying is a little ahead of my >> lessons, but let me address as best I can. The script worked fine in the >> previous lesson where I was to send emails from my DB, this lesson is to >> kill the email from being sent if empty. >> >>> On your very first line you haven't surround the email in quotes (only >>> one quote). >> That worked fine with the single quotes and is listed in the book that way. >> >> Then later in the line $dbc = >>> mysqli_connect(hostet',UN,'PW','DB') or die('Error connecting to MySQL >>> server'); you're missing a quote before hostet. >> The single quote was deleted when I was sanitizing the code to post here, >> but it is in the code...sorry. >> >> So the jist of what you are saying is to add "die" after the if >> statements...but they are not in the book >> >> ***** >> >> I tried your code and it was not working either, am getting a parse error >> >> Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in >> on line 109 >> Line 109 die 'You forgot to enter a subject and or text in the >> body! <br/>Click the back button<br />'; >> >> "Shawn McKenzie" <nospam@xxxxxxxxxxxxx> wrote in message >> news:B8.22.22219.724FEB94@xxxxxxxxxxxxxxx >>> Gary wrote: >>>> Reading a book on php/mysql (Head First) and the following code is not >>>> working, athough I am pretty sure I have it as they say to. Trying to >>>> kill a >>>> sendmail script if I forget to enter a subject or text in body of email. >>>> I >>>> am getting the echo, but it is still sending the emails out. >>>> >>>> What am I missing here? >>>> >>>> Thanks. >>>> >>>> Gary >>>> >>>> <?php >>>> $from = emial@xxxxxxxxx'; >>>> $subject =$_POST['subject']; >>>> $text =$_POST['body_of_mail']; >>>> >>>> if(empty($subject)) { >>>> if(empty($body_of_mail)){ >>>> >>>> echo 'You forgot to enter a subject and or text in the body! <br />'; >>>> >>>> >>>> $dbc = mysqli_connect(hostet',UN,'PW','DB') >>>> or die('Error connecting to MySQL server'); >>>> >>>> $query = "SELECT * FROM table"; >>>> $result = mysqli_query($dbc, $query) >>>> or die('Error querying database.'); >>>> >>>> >>>> >>>> while ($row = mysqli_fetch_array($result)) { >>>> $to = $row['email']; >>>> $first_name = $row['first_name']; >>>> $last_name = $row['last_name']; >>>> $msg = "Dear $first_name $last_name,\n$text"; >>>> mail($to, $subject, $msg, 'From:' . $from); >>>> echo 'Email sent to: ' . $to . '<br />'; >>>> } >>>> $msg ="Dear $first_name.' '.$last_name\n $text"; >>>> mail($to,$subject,$msg,$from); >>>> echo "Email sent to: $to <br /> "; >>>> >>>> mysqli_close($dbc); >>>> >>>> } >>>> } >>>> >>>> ?> >>>> >>>> >>> Well, first, it shouldn't do anything because you have parse errors that >>> should stop the script. >>> >>> On your very first line you haven't surround the email in quotes (only >>> one quote). Then later in the line $dbc = >>> mysqli_connect(hostet',UN,'PW','DB') or die('Error connecting to MySQL >>> server'); you're missing a quote before hostet. >>> >>> Second, you look for empty vars and if they are empty then you echo that >>> they forgot to enter them but go on to send the emails anyway. >>> >>> Then you loop through a database result and send to everyone and then >>> you send another one to the last person you just sent to. >>> >>> Try this: >>> >>> <?php >>> >>> $from = 'emial@xxxxxxxxx'; >>> $subject =$_POST['subject']; >>> $text =$_POST['body_of_mail']; >>> >>> if(empty($subject) || empty($body_of_mail)) { >>> die 'You forgot to enter a subject and or text in the body! <br >>> />Click the back button<br />'; >>> } else { >>> $dbc = mysqli_connect('hostet',UN,'PW','DB') or die('Error connecting >>> to MySQL server'); >>> >>> $query = "SELECT * FROM table"; >>> $result = mysqli_query($dbc, $query) or die('Error querying database.'); >>> >>> while ($row = mysqli_fetch_array($result)) { >>> $to = $row['email']; >>> $first_name = $row['first_name']; >>> $last_name = $row['last_name']; >>> $msg = "Dear $first_name $last_name,\n$text"; >>> mail($to, $subject, $msg, 'From:' . $from); >>> echo 'Email sent to: ' . $to . '<br />'; >>> } >>> mysqli_close($dbc); >>> } >>> >>> ?> >>> >>> -- >>> Thanks! >>> -Shawn >>> http://www.spidean.com >> > > So goes the typing code in to email :-) > > Try replacing the die line with: > > die('You forgot to enter a subject and or text in the body!<br />Click > the back button.<br />'); > This is just an example using the code that you posted as a learning exercise. Your original IF said: if $subject is empty, then evaluate the next if $body_of_mail is empty, if so, then echo 'You forgot to enter a subject and or text in the body! <br />' THEN execute the rest of the code which returns records from the db and then loops through them and send an email to the addresses from the db query. I just added a die() which kills the script execution IF the fields are empty and an ELSE, which is evaluated if the fields are NOT empty, that does the db query and email. In a real world example, instead of die() you might reload the form and display a message, so that the user can correct mistakes and resubmit. -- Thanks! -Shawn http://www.spidean.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php