2010-11-21 39 views
-2

我有包括本表地点: idVenue 名 描述 room_size扣除数从数据库腓

我想要做的是

即。场地A可以有5人。 在数据库中,我有一个房间大小字段,它是5.

所以每当一个人被选入场地A时,只需从总数中减去1(现在为5)。一旦达到0,则不要显示场地。

我听说标记是可能的,我该怎么做呢?

下面的代码:

do_select.php

<?php 

session_start(); 

if(($_SESSION['role'])!='Admin'){ 
echo "You have not logged in as admin yet.<br/>"; 
echo "Please <a href='login.php'>login</a>."; 
exit; 
} 
?> 

<?php 

//member id 
$id = $_POST['id']; 
$idimplode = implode (", ", $id); 
    $idexplode= explode(", ", $idimplode); 

//accept, reject 
$select=$_POST['select']; 
$comma = implode (", ", $select); 
$comma1 = explode(", ", $comma); 

$check =($idexplode); 

//class id 
$idc = $_POST['idc']; 



include('dbconfig.php'); 

    for($i=0;$i< sizeof($comma1);$i++) 
    { 
    if($comma1[$i]=="accept") 
    { 


     //Select Query if status is accept 

     $query="UPDATE attendance SET status='accept' WHERE Member_idMember ='$check[$i]' and Class_idClass='$idc'" ; 
     $result = mysqli_query($link, $query) or die(mysqli_error($link)); 



    } 

    else 
    { 
     //Select Query if status is reject 
     $query2="UPDATE attendance SET status='reject' WHERE Member_idMember ='$check[$i]' and Class_idClass='$idc'" ; 
     $result1 = mysqli_query($link, $query2) or die(mysqli_error($link)); 

    } 

    } 



    //select members based on status 

    $query3 = "SELECT * FROM member m, attendance a, class c 
     WHERE a.Member_idMember = m.idMember 
     AND a.Class_idClass = c.idClass 
     AND a.status = 'accept' 
     AND a.Class_idClass = '$idc' 
     "; 
    $result3 = mysqli_query($link, $query3) or die (mysqli_connect_error($link)); 


    //select query to get the class dates 
    $query4 = "SELECT day01, day02, day03, day04, day05, day06, day07, day08, day09, day10, day11, day12 FROM class 
    WHERE idClass = '$idc'"; 

    $result4 = mysqli_query($link, $query4) or die (mysqli_connect_error($link)); 



    //select query to get venue id 
    $query6 = "SELECT DISTINCT idVenue FROM venue"; 
    $result6 = mysqli_query($link, $query6) or die (mysqli_connect_error($link)); 


while($row = mysqli_fetch_array($result4, MYSQL_NUM)) 
     { 
     $day[] = implode(", ", $row); 
     } 
     $iday = implode(", ", $day); 
     $eday = explode(", ", $iday); 



while($row = mysqli_fetch_array($result6, MYSQL_NUM)) 
     { 
     $ven[] = implode(",", $row); 
     } 
     $iven = implode(", ", $ven); 
     $even = explode(", ", $iven); 


$date = ($eday); 
$venue= ($even); 

?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>ST JOHN</title> 
<link rel="stylesheet" type="text/css" href="main.css" /> 
<script language="JavaScript" type="text/javascript"> 

</script> 
</head> 

<body> 

    <!-- Begin Wrapper --> 
    <div id="wrapper"> 

     <!-- Begin Header --> 
     <div id="header"> 

     <img src="Image/1.jpg" width="900" height="100" /> 

    </div> 
    <!-- End Header --> 

    <!-- Begin Navigation --> 
     <div id="navigation"> 
    <a href="index.php"><img src="Image/4.png" width="30" height="30" ></a> Welcome!!! <br>; 
    <a href="logout.php">Logout</a>; 

    </div> 
    <!-- End Navigation --> 

     <!-- Begin Faux Columns --> 
    <div id="faux"> 

     <!-- Begin Left Column --> 
     <div id="leftcolumn"> 
    <center><img src="Image/2.jpg" width="150" height="100" /><br> 
    <ul> 
    <li><a href="#home">About Us</a></li> 
    <li><a href="#news">Public Courses</a></li> 
    <li><a href="#contact">Cadet Affairs</a></li> 
    <li><a href="#about">Events</a></li> 
    <li><a href="#contact">Contact Us</a></li> 
    </ul></center> 


     </div> 
     <!-- End Left Column --> 

     <!-- Begin Right Column --> 
     <div id="rightcolumn"> 


     <h1>Assign Venue</h1><br/> 

     <?php 

    echo"<table border='1'>"; 
    echo"<th>Name</th>"; 
    echo"<th>Signup Datetime</th>"; 
    echo"<th>Status</th>"; 
    echo"<th>Class</th>"; 
    echo"<th>Venue</th>"; 


while($row=mysqli_fetch_assoc($result3)) 
{ 
    $idc=$row['idClass']; 
    $id=$row['idMember']; 
    $Name = $row['name']; 
    $Status = $row['status']; 
    $Signup_datetime = $row['signup_datetime']; 
    $class=$row['Class_idClass']; 
    $idt=$row['Time_Slot_idTime_Slot']; 


    echo "<form method='post' action='assign_venue.php'>"; 



    echo "<tr>"; 

    echo "<td>".$Name."</td>"; 
    echo "<td>".$Signup_datetime."</td>"; 
    echo "<td>".$Status."</td>"; 
    echo "<td>".$class."</td>"; 


    echo "<input name='idc' type='hidden' value= '$idc'/>"; 
    echo "<input name='id[]' type='hidden' value= '$id'/>"; 

    echo "<td><select id ='idv[]' name='idv[]'>"; 

    for ($v=0; $v <count($venue); $v++) 
    { 
    for ($d=0; $d <count($date); $d++) 
    { 

    //select query to determine which are the dates that are in conflict with each other 
    $sql = "SELECT * FROM venue v, class c, attendance a 
    WHERE a.Venue_idVenue = v.idVenue 
    AND a.Class_idClass = c.idClass 
    AND v.idVenue = '$venue[$v]' 
    AND (day01='$date[$d]' OR day02='$date[$d]' OR day03='$date[$d]' OR day04='$date[$d]' OR day05='$date[$d]' OR day06='$date[$d]' 
    OR day07='$date[$d]' OR day08='$date[$d]' OR day09='$date[$d]' OR day10='$date[$d]' OR day11='$date[$d]' OR day12='$date[$d]') 
    AND c.Time_Slot_idTime_Slot = '$idt'"; 

    $rs = mysqli_query($link, $sql) or die (mysqli_connect_error($link)); 

    while ($row = mysqli_fetch_assoc($rs)) 
    { 
     //if there are no conflict, then display the venue 
     if (mysqli_num_rows($rs) != 0) 
     { 
     $ve[]= $row['idVenue']; 
     break; 
     } 
    } 

    } 
    } 


    $if = implode(",", $ve); 
    $ef = explode(",", $if); 
    $ve = ($ef); 

    for ($f=0; $f <count($ve); $f++) 
    { 
    //select query to get venue id and name 
    $sql1 = "SELECT * FROM venue WHERE idVenue != '$ve[$f]'"; 
    $rs1 = mysqli_query($link, $sql1) or die (mysqli_connect_error($link)); 
    } 


    while($row = mysqli_fetch_assoc($rs1)) 
    { 
    //display venue id and venue name 
    $idv=$row['idVenue']; 
    $name=$row['name']; 

    echo"<option name='idv[]' value='$idv'>$name</option> "; 
    } 


    echo "</select>"; 

} 


echo "</table>"; 
echo "<td><input type='submit' value= 'Submit'> 
</form>"; 

mysqli_close($link); 

?> 

     <div class="clear"></div> 
     </div> 

     <!-- End Right Column --> 

     <div class="clear"></div> 

     </div>  
     <!-- End Faux Columns --> 

     <!-- Begin Footer --> 
     <div id="footer"> 

       <center><p>Copyright© St. John Ambulance Singapore @ 420, Beach Road, Singapore 199582 Tel: 6298 0300 Fax: 6296 5797<a href="http://www.sjas.org.sg/association/Images/Map.JPG">click here for map</a></p></center> 

     </div> 
    <!-- End Footer --> 

    </div> 
    <!-- End Wrapper --> 
</body> 
</html> 
+0

这个节目领域你说你使用的破灭和爆炸过滤字符串。你过滤了什么? – 2011-11-19 21:56:30

回答

0

你应该叫另一场current_occupancy

当您创建行

update venue set current_occupancy = room_size where id = <idOfVenue>

然后当有人选择:

update venue set current_occupancy = current_occupancy - 1 where id = <idOfVenue>

而且只匹配

select * from venue where current_occupancey > 0 <whatever else>

+0

我不太明白,导致即时通讯使用一些过滤语句,如'implode'来实际筛选出可用的房间,以便用户可以选择它们并将它们分配给各种课程。你不介意我可以在这里上传我的代码,你可以看一下吗?我有点困惑。 – eric 2010-11-21 06:51:35