Quick Job for php programmer! What am I missing?

Discussion in 'Programming' started by BizMentor, Oct 10, 2008.

  1. #1
    Hi DP,
    I have a php site that sends out an email based on a form that collects the users name/email/country.

    I'm trying to make the email be able to use the customized emails (which I understand uses some seach/replace fields). It is actually working for an email that comes from another php page on my site, but not this one.

    Who can fix it and at what price?

    Terry

     
    BizMentor, Oct 10, 2008 IP
  2. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #2
    send it over i'll fix it. $20 minimum depending on complexity of problem
     
    ansi, Oct 10, 2008 IP
  3. BizMentor

    BizMentor Well-Known Member

    Messages:
    350
    Likes Received:
    40
    Best Answers:
    0
    Trophy Points:
    120
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #3
    Have a look at the code. If you can tell me what's wrong, then you tell me. Max $10.
     
    BizMentor, Oct 10, 2008 IP
  4. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #4
    change line 22 to this
    
    	$varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i");
    
    PHP:
    and change line 47, to this:
    
    $contestant_email_msg_edit = preg_replace($varsearch,$varreplace,$contestant_email_msg);
    
    PHP:
     
    ansi, Oct 10, 2008 IP
  5. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #5
    
    <?php
    
    require('connect.php');
    
    	$config = file_get_contents("config.txt");
    	$variables = explode(";",$config);
    	$numberWinners = $variables[0];
    	$winnerMessage = $variables[1];
    	$contestEmail = $variables[2];
    	$adminEmail = $variables[3];
    	$siteName = $variables[4];
    	$siteURL = $variables[5];
    	$contestantMessage = $variables[6];
    	$contestMsgSubject =$variables[7];
    	$winnerMsgSubject = $variables[8];
    	$signupMsgSubject = $variables[9];
    	$signupMsg = $variables[10];
    
    
    	$header = "FROM: Lawterry of Attraction";
    
    	$varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i");
    	$varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    
    
    	$sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners");
    	
    	while($r = mysql_fetch_assoc($sql)){
    		$winning_email = $r['email'];
    		$winning_id = $r['id'];
    		$winning_country = $r ['country'];
    		$winning_name = $r['name'];
    
    		mail($winning_email,$winnerMsgSubject,$winnerMessage,$header);
    	}
    
    	$varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    
    	mail($adminEmail,"Hi David, The contest on ".$website_name." has ended for another week."," The Universe has chosen ".$winning_name." from ".$winning_country." ( ".$winning_email." ) to receive this weeks prize. ".$winning_name." will receive details on how to claim their prize, and will likely contact you shortly! Thank you for helping others with your vision!",$header);
    
    
    	$sql = mysql_query("SELECT * FROM contestant");
    	while($r = mysql_fetch_assoc($sql)){
    		$email = $r['email'];
    		$name = $r['name'];
    		$id = $r['id'];
    		$contestant_email_msg_edit = preg_replace($varsearch,$varreplace,$contestant_email_msg);
    
    		mail($email,$contestMsgSubject,$contestantMessage,$header);
    		
    		if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){
    			if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){
    				if(mysql_query("DELETE FROM contestant WHERE id='$id'")){
    				}else{
    					mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header);
    				}
    			}
    		}else{
    			mysql_query("DELETE FROM contestant WHERE id='$id'");
    		}
    	}
    ?> 
    
    PHP:
     
    ansi, Oct 10, 2008 IP
  6. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #6
    though this may not work for you because in the code you pasted, you simply define $contestant_email_msg_edit. you dont use it anywhere. unless of course there is code lower down the line that you haven't pasted.
     
    ansi, Oct 10, 2008 IP
  7. BizMentor

    BizMentor Well-Known Member

    Messages:
    350
    Likes Received:
    40
    Best Answers:
    0
    Trophy Points:
    120
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #7
    Good find, but not working. Although your changes showed me a few more mistakes I found. Here is the new code, still not working.... what else can you see?

     
    BizMentor, Oct 10, 2008 IP
  8. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #8
    that you're not using $contestant_email_msg_edit ?
     
    ansi, Oct 10, 2008 IP
  9. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #9
    change line 49 to this:
    
    mail($email,$contestMsgSubject,$contestant_email_msg_edit,$header);
    
    PHP:
     
    ansi, Oct 10, 2008 IP
  10. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #10
    guess you've changed it to $contestantMessage_edit so change it to this
    
    mail($email,$contestMsgSubject,$contestantMessage_edit,$header);
    
    PHP:
     
    ansi, Oct 10, 2008 IP
  11. BizMentor

    BizMentor Well-Known Member

    Messages:
    350
    Likes Received:
    40
    Best Answers:
    0
    Trophy Points:
    120
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #11
    I actually changed the message and line 47 to

    Still not working.

    Updated php:

     
    BizMentor, Oct 10, 2008 IP
  12. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #12
    change this
    
    $contestantMessage = preg_rep lace($varsearch,$varreplace,$contestantMessage);
    mail($email,$contestMsgSubject,$contestantMessage,$header);
    
    PHP:
    to this
    
    $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage);
    mail($email,$contestMsgSubject,$contestantMessage,$header);
    
    PHP:
    you had a space in replace :)
     
    ansi, Oct 10, 2008 IP
  13. BizMentor

    BizMentor Well-Known Member

    Messages:
    350
    Likes Received:
    40
    Best Answers:
    0
    Trophy Points:
    120
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #13
    Ok that got me on the right track.

    That is working for the email as outlined in red, but not the others. What do i need to add for the others (in green)

    P.S!!!!!
    I would like to be able to use the $winning_name and $winning_country fields in the "mail($email,$contestMsgSubject,$contestantMessage,$header)" as well, which doesn't seem to be working...
     
    BizMentor, Oct 10, 2008 IP
  14. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #14
    oh crap. i got caught up in something. sorry.

    
     <?php
    
    require('connect.php');
    
    $config = file_get_contents("config.txt");
    $variables = explode(";",$config);
    $numberWinners = $variables[0];
    $winnerMessage = $variables[1];
    $contestEmail = $variables[2];
    $adminEmail = $variables[3];
    $siteName = $variables[4];
    $siteURL = $variables[5];
    $contestantMessage = $variables[6];
    $contestMsgSubject =$variables[7];
    $winnerMsgSubject = $variables[8];
    $signupMsgSubject = $variables[9];
    $signupMsg = $variables[10];
    $adminmsg = $variables[11];
    $alertsub = $variables[12];
    
    $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i");
    
    $header = "FROM: Lawterry of Attraction";
    
    $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners");
    while($r = mysql_fetch_assoc($sql)){
    $winning_email = $r['email'];
    $winning_id = $r['id'];
    $winning_country = $r ['country'];
    $winning_name = $r['name'];
    
    $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    $winnerMessage = preg_replace($varsearch,$varreplace,$winnerMessage);
    $winnerMsgSubject = preg_replace($varsearch,$varreplace,$winnerMsgSubject);
    
    mail($winning_email,$winnerMsgSubject,$winnerMessage,$header);
    }
    
    $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    $admintmsg = preg_replace($varsearch,$varreplace,$adminmsg);
    $alertsub = preg_replace($varsearch,$varreplace,$alertsub);
    
    mail($adminEmail,$alertsub,$adminmsg,$header);
    
    
    $sql = mysql_query("SELECT * FROM contestant");
    while($r = mysql_fetch_assoc($sql)){
    $email = $r['email'];
    $name = $r['name'];
    $id = $r['id'];
    $country = $r['country'];
    
    $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage);
    $contestMsgSubject = preg_replace($varsearch,$varreplace,$contestMsgSubject);
    
    mail($email,$contestMsgSubject,$contestantMessage,$header);
    if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){
    if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){
    if(mysql_query("DELETE FROM contestant WHERE id='$id'")){
    }else{
    mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header);
    }
    }
    }else{
    mysql_query("DELETE FROM contestant WHERE id='$id'");
    }
    }
    ?> 
    
    PHP:
    try that and let me know. should work fine now. we replace all the messages and subjects before the emails are sent.
     
    ansi, Oct 10, 2008 IP
  15. BizMentor

    BizMentor Well-Known Member

    Messages:
    350
    Likes Received:
    40
    Best Answers:
    0
    Trophy Points:
    120
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #15
    Same thing so far, working for email to contestant, but not to winner or admin.
     
    BizMentor, Oct 10, 2008 IP
  16. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #16
    try this. i misspelt adminmsg. had a 't' in there. though that would only effect the admin email. did you see the winner email?

    
    <?php
    
    require('connect.php');
    
    $config = file_get_contents("config.txt");
    $variables = explode(";",$config);
    $numberWinners = $variables[0];
    $winnerMessage = $variables[1];
    $contestEmail = $variables[2];
    $adminEmail = $variables[3];
    $siteName = $variables[4];
    $siteURL = $variables[5];
    $contestantMessage = $variables[6];
    $contestMsgSubject =$variables[7];
    $winnerMsgSubject = $variables[8];
    $signupMsgSubject = $variables[9];
    $signupMsg = $variables[10];
    $adminmsg = $variables[11];
    $alertsub = $variables[12];
    
    $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i");
    
    $header = "FROM: Lawterry of Attraction";
    
    $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners");
    while($r = mysql_fetch_assoc($sql)){
    $winning_email = $r['email'];
    $winning_id = $r['id'];
    $winning_country = $r ['country'];
    $winning_name = $r['name'];
    
    $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    $winnerMessage = preg_replace($varsearch,$varreplace,$winnerMessage);
    $winnerMsgSubject = preg_replace($varsearch,$varreplace,$winnerMsgSubject);
    
    mail($winning_email,$winnerMsgSubject,$winnerMessage,$header);
    }
    
    $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    $adminmsg = preg_replace($varsearch,$varreplace,$adminmsg);
    $alertsub = preg_replace($varsearch,$varreplace,$alertsub);
    
    mail($adminEmail,$alertsub,$adminmsg,$header);
    
    
    $sql = mysql_query("SELECT * FROM contestant");
    while($r = mysql_fetch_assoc($sql)){
    $email = $r['email'];
    $name = $r['name'];
    $id = $r['id'];
    $country = $r['country'];
    
    $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage);
    $contestMsgSubject = preg_replace($varsearch,$varreplace,$contestMsgSubject);
    
    mail($email,$contestMsgSubject,$contestantMessage,$header);
    if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){
    if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){
    if(mysql_query("DELETE FROM contestant WHERE id='$id'")){
    }else{
    mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header);
    }
    }
    }else{
    mysql_query("DELETE FROM contestant WHERE id='$id'");
    }
    }
    ?>
    
    PHP:
    if that doesn't work, let's try it with the pattern in each. i dunno why that wouldn't work. it should still be in the global scope while it's inside of a loop. it's not inside of a function or anything.

    
     <?php
    
    require('connect.php');
    
    $config = file_get_contents("config.txt");
    $variables = explode(";",$config);
    $numberWinners = $variables[0];
    $winnerMessage = $variables[1];
    $contestEmail = $variables[2];
    $adminEmail = $variables[3];
    $siteName = $variables[4];
    $siteURL = $variables[5];
    $contestantMessage = $variables[6];
    $contestMsgSubject =$variables[7];
    $winnerMsgSubject = $variables[8];
    $signupMsgSubject = $variables[9];
    $signupMsg = $variables[10];
    $adminmsg = $variables[11];
    $alertsub = $variables[12];
    
    $header = "FROM: Lawterry of Attraction";
    
    $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners");
    while($r = mysql_fetch_assoc($sql)){
    	$winning_email = $r['email'];
    	$winning_id = $r['id'];
    	$winning_country = $r ['country'];
    	$winning_name = $r['name'];
    
    	$varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i");
    	$varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    	$winnerMessage = preg_replace($varsearch,$varreplace,$winnerMessage);
    	$winnerMsgSubject = preg_replace($varsearch,$varreplace,$winnerMsgSubject);
    
    	mail($winning_email,$winnerMsgSubject,$winnerMessage,$header);
    }
    
    $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i");
    $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    $adminmsg = preg_replace($varsearch,$varreplace,$adminmsg);
    $alertsub = preg_replace($varsearch,$varreplace,$alertsub);
    
    mail($adminEmail,$alertsub,$adminmsg,$header);
    
    $sql = mysql_query("SELECT * FROM contestant");
    
    while($r = mysql_fetch_assoc($sql)){
    	$email = $r['email'];
    	$name = $r['name'];
    	$id = $r['id'];
    	$country = $r['country'];
    
    	$varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    	$contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage);
    	$contestMsgSubject = preg_replace($varsearch,$varreplace,$contestMsgSubject);
    
    	mail($email,$contestMsgSubject,$contestantMessage,$header);
    	if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){
    		if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){
    			if(mysql_query("DELETE FROM contestant WHERE id='$id'")){
    			}else{
    				mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header);
    			}
    		}
    	}else{
    		mysql_query("DELETE FROM contestant WHERE id='$id'");
    	}
    }
    ?> 
    
    PHP:
     
    ansi, Oct 10, 2008 IP
  17. BizMentor

    BizMentor Well-Known Member

    Messages:
    350
    Likes Received:
    40
    Best Answers:
    0
    Trophy Points:
    120
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #17
    neither of those help either the admin or the winner email unfortunately. if it provides a hint - the fields ( {name}, etc.) are now invisible in both emails, whereas before they showed up in the body/subj.
     
    BizMentor, Oct 10, 2008 IP
  18. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #18
    paste your code as you have it right now
     
    ansi, Oct 10, 2008 IP
  19. BizMentor

    BizMentor Well-Known Member

    Messages:
    350
    Likes Received:
    40
    Best Answers:
    0
    Trophy Points:
    120
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #19
    <?php
    
    require('connect.php');
    
    $config = file_get_contents("config.txt");
    $variables = explode(";",$config);
    $numberWinners = $variables[0];
    $winnerMessage = $variables[1];
    $contestEmail = $variables[2];
    $adminEmail = $variables[3];
    $siteName = $variables[4];
    $siteURL = $variables[5];
    $contestantMessage = $variables[6];
    $contestMsgSubject =$variables[7];
    $winnerMsgSubject = $variables[8];
    $signupMsgSubject = $variables[9];
    $signupMsg = $variables[10];
    $adminmsg = $variables[11];
    $alertsub = $variables[12];
    
    $header = "FROM: Lawterry of Attraction";
    
    $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners");
    while($r = mysql_fetch_assoc($sql)){
        $winning_email = $r['email'];
        $winning_id = $r['id'];
        $winning_country = $r ['country'];
        $winning_name = $r['name'];
    
        $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i");
        $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
        $winnerMessage = preg_replace($varsearch,$varreplace,$winnerMessage);
        $winnerMsgSubject = preg_replace($varsearch,$varreplace,$winnerMsgSubject);
    
        mail($winning_email,$winnerMsgSubject,$winnerMessage,$header);
    }
    
    $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i");
    $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
    $adminmsg = preg_replace($varsearch,$varreplace,$adminmsg);
    $alertsub = preg_replace($varsearch,$varreplace,$alertsub);
    
    mail($adminEmail,$alertsub,$adminmsg,$header);
    
    $sql = mysql_query("SELECT * FROM contestant");
    
    while($r = mysql_fetch_assoc($sql)){
        $email = $r['email'];
        $name = $r['name'];
        $id = $r['id'];
        $country = $r['country'];
    
        $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country);
        $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage);
        $contestMsgSubject = preg_replace($varsearch,$varreplace,$contestMsgSubject);
    
        mail($email,$contestMsgSubject,$contestantMessage,$header);
        if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){
            if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){
                if(mysql_query("DELETE FROM contestant WHERE id='$id'")){
                }else{
                    mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header);
                }
            }
        }else{
            mysql_query("DELETE FROM contestant WHERE id='$id'");
        }
    }
    ?>
    PHP:
     
    BizMentor, Oct 10, 2008 IP
  20. ansi

    ansi Well-Known Member

    Messages:
    1,483
    Likes Received:
    65
    Best Answers:
    0
    Trophy Points:
    100
    As Seller:
    100% - 0
    As Buyer:
    100% - 0
    #20
    put this at the very top after the opening php tag..

    
    error_reporting(E_ALL);
    
    PHP:
    i think what it is, is that we dont have all of the info for the replace.

    ie: where is $name coming from for the replacement? i dont see that anywhere.
     
    ansi, Oct 10, 2008 IP