2014-02-07 117 views
0

我有一個窗體,將通過AJAX加載到另一個頁面上的div。點擊時,我想檢查內容的必填字段。如果必填字段沒有填充,我想在此字段旁邊放置一條消息,如下例所示:http://www.w3schools.com/php/php_form_required.aspPHP窗體必填字段

如果名稱被要求舉例來說,在這裏我想補充

if (empty($_POST["name"])) 
    {$nameErr = "Name is required";} 
    else 
    {$name=$_POST['name'];} 

在提交:

<html> 
<body> 
<?php 
// Connect to DB 
XXX 

$phone=$_POST['phone']; 
$category=$_POST['category']; 
implode(',',$_POST['check']); 
//or something like 
$checkstring=""; 
foreach($_POST['check'] as $checkboxes) { 
    $checkstring.= $checkboxes .","; 
} 
$c = rtrim($checkstring); 

$query = "INSERT INTO contact VALUES ('$name','$phone', '$c', '$category')"; 
mysql_query($query) or die('Error, insert query failed'); 
echo "Hi! $name. Your phone number <b> $phone </b> is in our database"; 
?> 
</body> 
</html> 

在這裏,我想補充

<?php echo $nameErr;?> 

旁邊名領域。 但是,當我在PHP變量把

?> 

,是因爲它認爲我結束

<?php 

在窗體頂部打破了變量。

形式:

<?php 

// Get value of clicked button 
$button = $_GET['button']; 

$test = '<center> 
<table> 
    <tr> 
     <td style="height: 20px;"></td> 
    </tr> 
</table> 
<h1>Demo</h1> 
<form id="ContactForm" onsubmit="return submitForm();"> 
<div class="form_result"> </div> 

    Name: <input name="name" type=text ><br> 

    Phone: <input name="phone" type=text ><br> 

    Business Capabilities:<br> 
    <input type="checkbox" name="check[]" value="c1">C1<br> 
    <input type="checkbox" name="check[]" value="c2">C2<br> 

    <select name="category">Category: 
     <option value="d1">D1</option> 
     <option value="d2">D2</option> 
     <option value="d3">D3</option> 
    </select><br> 

<input type="submit" > 
</form> 
</center> 
'; 

print json_encode($test); 

?> 

是否有可能對我來說,把那PHP語句在PHP變量?或者還有另外一種更乾淨的方法嗎?謝謝你的幫助。

+0

請使用'mysqli_ *'函數或'PDO'類來代替已棄用的'mysql_ *'。 – Sam

回答

0

你不需要echo它。你正在創建一個巨大的HTML字符串,只需使用字符串連接,包括您的錯誤:

$test = 'blah blah blah '.$nameErr.' blah blah blah'; 

你再往前走,雖然之前,應停止並瞭解準備的語句 - 你目前做什麼用你的數據庫是非常危險的,並且非常容易受到sql注入攻擊。 http://www.php.net/manual/en/book.pdo.php

+0

嗨madbreaks,使用字符串連接沒有爲我工作。這樣做後,表單不會加載到div中。至於學習準備好的語句,我知道mysql已被棄用,但我只是想用我所知道的一些東西做一個快速的模型。我會盡快查明的!謝謝 – user1067577

0

經過漫長的夜晚,我沒有完全的努力去使用你的代碼(所以我很抱歉)。但我應該能夠讓你走上正軌。我建議在您的由AJAX調用的submit.php頁面中使用JSON作爲響應。因此,例如,你的腳本可能有:

if(empty($_POST["name"])) { 
    echo json_encode(array(
     'error' => 'Name is required.' 
    )); 
} else { 
    // Do form stuff here 

    echo json_encode(array(
     'phone' => $phone 
    )); 
} 

然後在你的AJAX調用,您可以輕鬆地處理你的JSON(更模塊化的方式,讓您輕鬆改變你的反應/佈局)。

$.ajax('submit.php', { 
    // Settings 
    dataType: 'json' // We want JSON response, this will parse it as an object 
}).done(function(data) { 
    if(data.error !== 'undefined') { 
     alert('Error: ' + data.error); 
    } else { 
     alert('Your phone number is ' + data.phone); 
    } 
}); 

隨意問你是否需要更多解釋我在這裏做什麼。