2010-09-01 6 views
1

J'écris un script sendmail en PHP pour le moment. Il est en grande partie basé autour de ce qu'un utilisateur sélectionne dans un menu le menu dropdown.The ressemble à ceci:PHP-Send Mail Question

<select name="program"> 
    <option value="Red Program">Red Program</option> 
    <option value="Green Program">Green Program</option> 
    <option value="Yellow Program">Yellow Program</option> 
    <option value="Blue Program">Blue Program</option> 
    <option value="Orange Program">Orange Program</option> 
    ... 

Je vais avoir besoin d'évaluer quelle option a été sélectionnée dans ce menu et envoyer le titre du programme à quelqu'un un courriel. Cependant, la moitié des programmes devront être envoyés à une adresse, l'autre moitié à une adresse différente. Quel est le meilleur moyen de renvoyer le nom du programme et d'évaluer ce qui a été sélectionné pour voir à quelle adresse il doit être envoyé?

Existe-t-il un moyen plus simple que d'écrire une instruction if pour chaque valeur possible? Merci!

Répondre

2

Tableau simple avec des e-mails

<?php 
$programs = array(
    "Red Program" => "[email protected]", 
    "Green Program" => "[email protected]", 
); 
if(isset($programs[$_POST['program']])) 
    mail($programs[$_POST['program']], $_POST['program']); 

Mais il est préférable d'utiliser des valeurs ids de forme au lieu des noms

1

Je pense que vous pouvez créer deux tableaux avec les noms des programmes, puis vérifier dans quel tableau la sélection de l'utilisateur a été trouvée.

// $selection is the user's selection 

$FirstEmailAdress=array("Red Program", "Green Program", "Yellow Program"); 
$SecondEmailAddress=array("Blue Program", "Orange Program"); 

function CheckEmail ($selection) { 
    foreach ($FirstEmailAddress as $value) { 
     if ($value==$selection) return "[email protected]"; 
     // if the selection is found in the first array, 
     // the function stops and returns the first address 
    } 
    return "[email protected]"; 
    // otherwise, it returns the second one 
}