2010-04-04 9 views
1

J'ai acheté un modèle qui ont construit dans le formulaire de contact problème est qu'il soumet tout sauf "entreprise" nom je me suis amusé avec elle, mais ne peux pas arriver à travailler. si vous pouvez me pointer vers une solution, je serais reconnaissantformulaire php ne soumet pas l'un des champs

merci à l'avance

c'est script php

if(!$_POST) exit; 

$email = $_POST['email']; 


//$error[] = preg_match('/\b[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS'; 
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)){ 
    $error.="Invalid email address entered"; 
    $errors=1; 
} 
if($errors==1) echo $error; 
else{ 
    $values = array ('name','email','message'); 
    $required = array('name','email','message'); 

    $your_email = "[email protected]"; 
    $email_subject = "New Message: ".$_POST['subject']; 
    $email_content = "new message:\n"; 

    foreach($values as $key => $value){ 
     if(in_array($value,$required)){ 
     if ($key != 'subject' && $key != 'company') { 
      if(empty($_POST[$value])) { echo 'Please fill in all required fields, marked with *'; exit; } 
     } 
     $email_content .= $value.': '.$_POST[$value]."\n"; 
     } 
    } 

    if(@mail($your_email,$email_subject,$email_content)) { 
     echo 'Thanks for your message, will contact you soon.'; 
    } else { 
     echo 'ERROR!'; 
    } 
} 

Répondre

3
$values = array ('name','email','message'); 

Ajouter 'company' à cette liste dans le script PHP.

Aussi, je modifierais la boucle foreach pour ressembler à ceci, pour obtenir la fonctionnalité souhaitée:

foreach($values as $key => $value) 
{ 
    if(in_array($value,$required)) 
    { 
     if(empty($_POST[$value])) 
     { 
       echo 'Please fill in all required fields, marked with *'; 
       exit; 
     } 
    } 
    $email_content .= $value.': '.$_POST[$value]."\n"; 
} 

De cette façon, les champs qui ne sont pas dans le tableau $required sont encore ajoutés à l'e-mail si elles existent - ils n'ont tout simplement pas à passer le contrôle vide.

+0

j'ai essayé, mais la forme ne sera pas envoyer un e-mail maintenant également ajouter à ce tableau fera l'entreprise un champ obligatoire sous forme? $ required = array ('nom', 'email', 'message'); – steve

+0

Ajoutez-le ensuite aux valeurs $ uniquement. C'est celui qui indique au script quels champs doivent être mis dans le message électronique (si la boucle foreach). –

+0

@ Marc B désolé cela n'aide pas, le formulaire ne sera pas soumis – steve

1

Le problème est cette ligne:

$email_content .= $value.': '.$_POST[$value]."\n"; 

est jamais atteint à moins que cette ligne:

if (in_array($value,$required)) { 

... est satisfaite. Cela signifie que seuls les champs répertoriés dans $required vont être ajoutés à l'e-mail. Si tel est OK, alors il suffit de changer ces lignes:

$required = array('name','email','message'); 
$values = array ('name','email','message'); 

A lire:

$required = array ('name','email','message','company'); 
$values = array ('name','email','message','company'); 

Si ce n'est pas correct, changer ceci:

foreach ($values as $key => $value) { 
    if (in_array($value,$required)) { 
     if ($key != 'subject' && $key != 'company') { 
      if (empty($_POST[$value])) { 
       echo 'Please fill in all required fields, marked with *'; 
       exit; 
      } 
     } 
     $email_content .= $value.': '.$_POST[$value]."\n"; 
    } 
} 

Pour ressembler à ceci:

foreach ($values as $key => $value) { 
    if (in_array($value,$required)) { 
     if ($key != 'subject' && $key != 'company') { 
      if (empty($_POST[$value])) { 
       echo 'Please fill in all required fields, marked with *'; 
       exit; 
      } 
     } 
    } 
    $email_content .= $value.': '.$_POST[$value]."\n"; 
} 

Ensuite, vous pouvez prendre company sur $required, mais laissez-le dans $values. Je soupçonne que le modèle a bien fonctionné lorsque vous avez commencé, car tous les champs étaient requis.

Si elle encore ne fonctionne pas, s'il vous plaît changer cela (en haut):

if(!$_POST) exit; 

Pour ressembler à ceci:

if(!$_POST) exit; 
print_r($_POST); 

... et collez-la sortie supplémentaire dans votre question.

Aussi, pensez à acheter des modèles d'un autre fournisseur :)

Questions connexes