2013-03-24 56 views
0

基本上我有一个页面显示使用复选框的座位计划。这些复选框可以打勾表示正在预订的座位。我还有一个文本输入,用于为预订输入姓名,然后将这些表单发布到下一页,以确定选中了哪些复选框并将它们保存在数据库中。这是一些代码:php,jquery,sql。表单验证

 title>School Hall</title> 

<script> 


     function confirmReservation() { 

     var selectedList = getSelectedList('Confirm Reservation'); 

     if (selectedList) { 
      if (confirm('Do you want to CONFIRM this Reservation : ' + selectedList + '?')) { 
       document.forms[0].statusA.value=0; 
       document.forms[0].statusB.value=1; 
       document.forms[0].previousPage.value='schoolHall'; 
       document.forms[0].action='bookingQueries.php';  
       document.forms[0].submit(); 
      } else { 
       clearSelection(); 
      } 
     } 
    } 



     function cancelReservation() { 

     var selectedList = getSelectedList('cancel Reservation'); 

     if (selectedList) { 
      if (confirm('Do you want to CANCEL this Reservation : ' + selectedList + '?')) { 
       document.forms[0].statusA.value=1; 
       document.forms[0].statusB.value=0; 
       document.forms[0].previousPage.value='schoolHall'; 
       document.forms[0].action='bookingQueries.php'; 
       document.forms[0].submit(); 
      } else { 
       clearSelection(); 
      } 
     } 
    } 




    function getSelectedList(actionSelected) { 

     // get selected list 
     var obj = document.forms[0].elements; 
     var selectedList = ''; 
     for (var i = 0; i < obj.length; i++) { 
      if (obj[i].checked && obj[i].name == 'seats[]') { 
       selectedList += obj[i].value + ', '; 
      } 
     } 

     // no selection error 
     if (selectedList == '') { 
      alert('Please select a seat '); 
      return false; 
     } else { 
      return selectedList; 
     } 

    } 




    function validateForm() 
    { 
    var x=document.forms["0"]["fname"].value; 
    if (x==null || x=="") 
     { 
     alert("First name must be filled out"); 
     return false; 
     } 
    } 


</script> 



</head> 
<body topmargin="0" leftmargin="0" rightmargin="0" > 
<table> 
<tr><td width="100%" align="left" id='table-2'> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<input type="hidden" name="previousPage" value=""/> 
<input type="hidden" name="statusA" value=""/> 
<input type="hidden" name="statusB" value=""/> 
</tr> 
<table> 
<tr><td width="100%" align=left" id='table-2'> 
<INPUT Type="BUTTON" VALUE="Home Page" ONCLICK="window.location.href='/final/homePage.php'" align='lef'> 
<INPUT Type="BUTTON" VALUE="Bookings" ONCLICK="window.location.href='/final/schoolHallBookings.php'"> 


<?php 


// Connection 
$con = mysql_connect("localhost","root",""); 
if(!con) 
{ 
die('Could not connect:' . mysql_error()); 
} 

mysql_select_db("systemDatabase",$con); // Connection to DB 

echo '<br>'; 

echo '<font face="Trebuchet MS" color="Black" size="9" >School Hall </font>'; 


$query = "SELECT * from schoolHall order by rowId, columnId"; // Create Select Query 
$result = mysql_query($query); // Retrieve all data from query and hold in $result 
$prevRowId = null; 
$seatColor = null; 
$tableRow = false; 


echo "<table align='center' id='table-2'"; // Create table 
while (list($rowId, $columnId, $status, $updatedby, $firstName, $lastName) = mysql_fetch_row($result)) //  Itterates through fetched data 
{ 
if ($prevRowId != $rowId) 
{ 
    if ($rowId != 'A') 
    { 
     echo "</tr></table></td>"; 
     echo "\n</tr>"; 
    } 
    $prevRowId = $rowId; 
    echo "\n<tr><td align='center'><table class='center' border='1' cellpadding='15' cellspacing='8'  align='center' id='table-2' ><tr>"; 
} 
else 
{ 
    $tableRow = false; 
} 
if ($status == 0) 
{ 
    $seatColor = "lightgreen"; // Available 
} 
else 
{ 
    $seatColor = "red"; // Booked 
} 

echo "\n<td bgcolor='$seatColor' align='center'>"; 
echo "$rowId$columnId"; 
if ($status == 0 || ($status == 1)) { 
    echo "<input type='checkbox' name='seats[]' value='$rowId$columnId' align='center'></checkbox>"; // Create Checkboxes giving value RowId, ColumnId 
} 


    } 

echo "</tr></table></td>"; 
    echo "</tr>"; 
echo "</table>"; 

// Con close 
mysql_close(); 
?> 



    <table width='100%' border='0'> 
<tr><td align='right'> 
    &nbsp; 
&nbsp; First Name: <input type="text" name="fname"> 
&nbsp; Last Name: <input type="text" name="lname"> 
</td> 
<td><td align='left'> 


</td> 
<td><td align ='right'> 

    &nbsp;<input type='button' value='Confirm Reservation' onclick='confirmReservation()'/> 
</td></tr> 
<tr> 
<td><td align='left'> 



</td> 
<td><td align='left'> 


</td> 
<td align='right'> 
    &nbsp;<input type='button' value=' Cancel Reservation' onclick='cancelReservation()'> 
    </td> 
</table> 
</td></tr> 
<tr><td width="100%" align="center"> 


</td></tr> 
    <tr><td>&nbsp;</td></tr> 
    <tr><td width="100%" align="center"> 
<table border="1" cellspacing="6" cellpadding="4" align="center"> 
    <tr> 
     <td bgcolor='lightgreen'>Available</td> 
     <td bgcolor='red'>Unavailable</td> 
    </tr> 
</table> 
</td></tr> 
<tr><td>&nbsp;</td></tr> 
<tr><td width="100%" align="center"> 
</td></tr> 
</table> 

</body> 

有没有什么办法可以结合验证我目前的代码?我需要检查名称文本以确保实际上输入了一个名称。这需要在访问下一页之前进行。有任何想法吗?

+0

请发表您的HTML为了显示你的命名文本,为什么getSelectedList在不使用它的情况下取变量,并且不删除最后一个逗号。 – 2013-03-24 14:48:24

+0

对不起,这是关于selectedList?添加了html代码 – 2013-03-24 14:51:05

+0

函数getSelectedList(actionSelected),你在哪里使用actionSelected,并在完成你的循环selectedList将'1,3,6,',你想最后一个逗号 – 2013-03-24 14:53:06

回答

0

首先尝试添加IDS到文本输入:

<table width='100%' border='0'> 
    <tr> 
    <td align='right'> 
     &nbsp; 
     &nbsp; First Name: <input type="text" id="fname" name="fname"/> 
     &nbsp; Last Name: <input type="text" id="lname" name="lname"/> 
    </td> 
    <td> 
    <td align='left'> 

function getSelectedList(actionSelected) { 
    // get selected list 
    var obj = document.forms[0].elements; 
    var selectedList = ''; 
    for (var i = 0; i < obj.length; i++) { 
     if (obj[i].checked && obj[i].name == 'seats[]') { 
      selectedList += obj[i].value + ', '; 
     } 
    } 
    var fname = document.getElementById('fname'); 
    var lname = document.getElementById('lname'); 
    // no selection error 
    if (selectedList == '') { 
     alert('Please select a seat '); 
     return false; 
    } else if (actionSelected.beginsWith('Confirm') && (fname .value.replace(/^\s+|\s+$/g, '').length == 0 || /[0-9]/.test(fname))) { 
     alert('Please Enter valid first name.'); 
     return false; 
    } else if (actionSelected.beginsWith('Confirm') && (lname.value.replace(/^\s+|\s+$/g, '').length == 0 || /[0-9]/.test(lname))) { 
     alert('Please Enter valid last name.'); 
     return false; 
    } else { 
     return selectedList; 
    } 
}  
+0

天才!这完美的作品,我会如何让这不需要数字呢? – 2013-03-24 15:39:24

+0

这实际上与我的另一个功能冲突,取消预订(),我不希望它需要一个名称,我怎么能这样做呢? – 2013-03-24 17:54:37

0

工作实例

http://jsfiddle.net/

下面的例子演示如何将值传递给函数checkInput,这将决定它是否是一个有效的输入 - 函数使用jQuery的,但你可以做它也会提供jQuery。

演示HTML:

<form> 
    <input id="first-name" value="some value" /> 
    <input id="last-name" value="" /> 
</form> 

JS功能(去与HTML演示):

function checkInput(fieldID){ 
    var isValid = true; 

    if($("#" + fieldID).val() == ''){ 
     isValid = false; 
    } 

    return isValid; 

} 


$(document).ready(function(){ 
    if(!checkInput("first-name")){ 
     alert("error found with first name"); 
    } 
    if(!checkInput("last-name")){ 
     alert("error found with last name"); 
    } 
});