2012-08-15 2 views
-1

У меня есть форма, которую я создал с помощью PHP (что-то я не понимаю почти столько, сколько захочу) - я сделал форму с помощью онлайн-учебника некоторое время назад, не могу вспомнить, откуда и не может найти его снова, однако форма работает так, как должна, поэтому я доволен.Добавить флажки в форму PHP

Единственное, что мне нужно добавить флажки в моей форме, они не должны проверять (если ничего не проверяется, форма по-прежнему могут быть отправлены, если они все проверены форма может еще быть отправлено ..)

Что мне нужно сделать, это отправить электронное письмо мне, чтобы указать, какие флажки отмечены галочкой.

Это мой HTML/PHP страницы:

<!--Contact Form Section -->  
<div id="contact-form" class="clearfix"> 

     <?php 
//init variables 
$cf = array(); 
$sr = false; 

if(isset($_SESSION['cf_returndata'])){ 
$cf = $_SESSION['cf_returndata']; 
$sr = true; 
} 
?> 

<form method="post" action="process.php"> 

    <input type="email" id="email" name="email" placeholder="Your e-mail" value=" <?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['email'] : '' ?>" required="required" /> 

    <input type="text" id="name" name="name" placeholder="Your name" value="<?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['name'] : '' ?>" required="required" /> 

    <textarea id="message" name="message" placeholder="Your message..." required="required" data-minlength="20"><?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['message'] : '' ?></textarea> 

<span id="loading"></span> 
<input type="submit" value="&nbsp;" id="submit-button" /> 

    <ul id="errors" class="<?php echo ($sr && !$cf['form_ok']) ? 'visible' : ''; ?>"> 
    <li id="info">There is a problem:</li> 
<?php 
if(isset($cf['errors']) && count($cf['errors']) > 0) : 
    foreach($cf['errors'] as $error) : 
?> 
    <li><?php echo $error ?></li> 
<?php 
    endforeach; 
endif; 
?> 
</ul> 

<p id="success" class="<?php echo ($sr && $cf['form_ok']) ? 'visible' : ''; ?>">Thanks for your message!</p> 
</div> 

</form> 
<?php unset($_SESSION['cf_returndata']); ?> 
<!--End Contact Form Section -->  

А вот мой процесс PHP документ:

<?php 
if(isset($_POST)){ 

//form validation vars 
$formok = true; 
$errors = array(); 

//submission data 
$ipaddress = $_SERVER['REMOTE_ADDR']; 
$date = date('d/m/Y'); 
$time = date('H:i:s'); 

//form data 
$name = $_POST['name']; 
$email = $_POST['email']; 
$telephone = $_POST['telephone']; 
$enquiry = $_POST['enquiry']; 
$message = $_POST['message']; 

//validate form data 

//validate name is not empty 
if(empty($name)){ 
    $formok = false; 
    $errors[] = "You have not entered a name"; 
} 

//validate email address is not empty 
if(empty($email)){ 
    $formok = false; 
    $errors[] = "You have not entered an email address"; 
//validate email address is valid 
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    $formok = false; 
    $errors[] = "You have not entered a valid email address"; 
} 

//validate message is not empty 
if(empty($message)){ 
    $formok = false; 
    $errors[] = "You have not entered a message"; 
} 
//validate message is greater than 20 characters 
elseif(strlen($message) < 20){ 
    $formok = false; 
    $errors[] = "Your message must be greater than 20 characters"; 
} 

//send email if all is ok 
if($formok){ 
    $headers = "From: Goldie Locks online contact form" . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

    $emailbody = "<p>You have received a new message from the enquiries form on your website.</p> 
        <p><strong>Name: </strong> {$name} </p> 
        <p><strong>Email Address: </strong> {$email} </p> 
        <p><strong>Message: </strong> {$message} </p> 
        <p>This message was sent from the IP Address: {$ipaddress} on {$date} at {$time}</p>"; 

    mail("MY EMAIL!","New Enquiry",$emailbody,$headers); 

} 

//what we need to return back to our form 
$returndata = array( 
    'posted_form_data' => array( 
     'name' => $name, 
     'email' => $email, 
     'telephone' => $telephone, 
     'enquiry' => $enquiry, 
     'message' => $message 
    ), 
    'form_ok' => $formok, 
    'errors' => $errors 
); 

//if this is not an ajax request 
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&  strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){ 
    //set session variables 
    session_start(); 
    $_SESSION['cf_returndata'] = $returndata; 

    //redirect back to form 
    header('location: ' . $_SERVER['HTTP_REFERER']); 
} 
} 

Как вы можете видеть, глядя на HTML код, я взял некоторые из функции PHP, но оставили их в процессе PHP (например, тип запроса и номер телефона), потому что я совершенно не знал, что сломает что.

Все, что мне нужно сделать, это добавить флажки в документ html/php (точнее, 5), а те, которые отмечены галочкой, отображаются в электронном письме, которое я получаю, когда кто-то заполняет страницу.

Надеюсь, это непростая задача для кого-то, у кого есть знания PHP, но, к сожалению, у меня очень мало. Надеюсь, кто-то может помочь, если вам нужна дополнительная информация, пожалуйста, прокомментируйте, и я постараюсь изо всех сил.

Спасибо

+1

Это много кода для проблемы с флажками. Не могли бы вы предоставить только * соответствующий * код? Благодарю. – PeeHaa

+1

В вашей форме нет флажков. Это будет шаг №1. Я не уверен *, как вы действительно застреваете, потому что похоже, что вы ничего не пробовали. –

+1

@PeeHaa - Проблема в том, что я следовал учебнику PHP, но, как я уже сказал, это меня действительно смущает, и я не совсем понимаю его, поэтому - я не знаю, какой код имеет значение, а что нет! -Простите, Джон. –

ответ

2

вы можете добавить флажки в форме, просто добавив элемент ввода флажок:

<input type="checkbox" name"myCheckbox" value="true" /> 

установить value="" все, что вы хотите. Вы можете забрать value в вашем PHP скрипт с помощью:

$myCheckbox = $_POST['myCheckbox']; 

Переменная $myCheckbox будет содержать значение флажком с именем «myCheckbox» в форме, если он был установлен, или это будет пустым если флажок не установлен.

Вы можете добавить значение на адрес электронной почты, как вы с другими переменными, т.е.

$emailbody = "<p>You have received a new message from the enquiries form on your website.</p> 
    <p><strong>Name: </strong> {$name} </p> 
    <p><strong>Email Address: </strong> {$email} </p> 
    <p><strong>Message: </strong> {$message} </p> 
    <p><strong>myCheckbox value: </strong> {$myCheckbox}</p> 
    <p>This message was sent from the IP Address: {$ipaddress} on {$date} at {$time}</p>"; 

Если вы хотите, чтобы проверяемый/не проверяется статус на форме, если она будет подана и не проходит проверку на какой-либо причина, то вы можете добавить значение флажка переменной $returndata:

$returndata = array(
    'posted_form_data' => array( 
     'name' => $name, 
     'email' => $email, 
     'telephone' => $telephone, 
     'enquiry' => $enquiry, 
     'message' => $message, 
     'myCheckbox' => $myCheckbox, 
    ), 
    'form_ok' => $formok, 
    'errors' => $errors 
); 

Это отправит его обратно в форму, а затем вам нужно изменить этот флажок, чтобы искать это значение, как это делают другие элементы, и добавьте значение 'checked = Checked' 't о чекбокс, если оно было ранее проверено:

<input type="checkbox" name"myCheckbox" value="true" <?php echo ($sr && !$cf['form_ok'] && $cf['posted_form_data']['myCheckbox]=="true") ? 'checked="checked"' : '' ?> /> 

где true часть линии $cf['posted_form_data']['myCheckbox]=="true" является значение флажка value="".

Надеюсь, это имеет смысл.

1

Вам просто нужно добавить входы флажок в форму, и получить их в PHP:

HTML-:

<form method="post" action="process.php"> 

<input type="email" id="email" name="email" placeholder="Your e-mail" value=" <?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['email'] : '' ?>" required="required" /> 

<input type="text" id="name" name="name" placeholder="Your name" value="<?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['name'] : '' ?>" required="required" /> 

<input type="checkbox" id="CHECKBOX1" name="CHECKBOX1" value="" />Checkbox 1 

(повторить, что последний вход с вашим Нужные флажков)

И РНР:

<?php 
if(isset($_POST)){ 

//form validation vars 
$formok = true; 
$errors = array(); 

//submission data 
$ipaddress = $_SERVER['REMOTE_ADDR']; 
$date = date('d/m/Y'); 
$time = date('H:i:s'); 

//form data 
$name = $_POST['name']; 
$email = $_POST['email']; 
$telephone = $_POST['telephone']; 
$enquiry = $_POST['enquiry']; 
$message = $_POST['message']; <br /> 
**$checkbox1 = $_POST['CHECKBOX1'];** 

//validate form data 

//validate name is not empty 
if(empty($name)){ 
    $formok = false; 
    $errors[] = "You have not entered a name"; 
} 

//validate email address is not empty 
if(empty($email)){ 
    $formok = false; 
    $errors[] = "You have not entered an email address"; 
//validate email address is valid 
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    $formok = false; 
    $errors[] = "You have not entered a valid email address"; 
} 

//validate message is not empty 
if(empty($message)){ 
    $formok = false; 
    $errors[] = "You have not entered a message"; 
} 
//validate message is greater than 20 characters 
elseif(strlen($message) < 20){ 
    $formok = false; 
    $errors[] = "Your message must be greater than 20 characters"; 
} 

//send email if all is ok 
if($formok){ 
    $headers = "From: Goldie Locks online contact form" . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

    $emailbody = "<p>You have received a new message from the enquiries form on your website.</p> 
        <p><strong>Name: </strong> {$name} </p> 
        <p><strong>Email Address: </strong> {$email} </p> 
        <p><strong>Message: </strong> {$message} </p> 
        **<p><strong>Checkbox1: </strong>{$checkbox1}</p>** 
        <p>This message was sent from the IP Address: {$ipaddress} on {$date} at {$time}</p>"; 

    mail("MY EMAIL!","New Enquiry",$emailbody,$headers); 

} 

//what we need to return back to our form 
$returndata = array( 
    'posted_form_data' => array( 
     'name' => $name, 
     'email' => $email, 
     'telephone' => $telephone, 
     'enquiry' => $enquiry, 
     'message' => $message 
    ), 
    'form_ok' => $formok, 
    'errors' => $errors 
); 

//if this is not an ajax request 
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&  strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){ 
    //set session variables 
    session_start(); 
    $_SESSION['cf_returndata'] = $returndata; 

    //redirect back to form 
    header('location: ' . $_SERVER['HTTP_REFERER']); 
} 
} 
1

Чтобы добавить флажок:

<input type="checkbox" name="someName" id="someId" value=""/>Checkboxtitle 

для HTML кода для генерации флажка. Затем, чтобы добавить значение в свой адрес электронной почты, вам нужно просто вызвать его, как если бы вы использовали обычное текстовое поле.

+0

Что случилось с '

+0

Вы не всегда нуждаетесь в них, Checkboxtitle - это то, как я устанавливаю флажок. – Jim

+0

Я знаю, но возможность проверить флажок, щелкнув заголовок, приятно. Кроме того, 'name' и' id' должны быть одинаковыми. ' ' –

Смежные вопросы