【问题标题】:using COUNT() in PHP在 PHP 中使用 COUNT()
【发布时间】:2016-07-13 00:48:29
【问题描述】:

我正在开发“巴士预订网站”,该网站允许用户预订从一个城市到另一个城市的旅行。 我每天有 128 次溃败。每辆路线巴士容量为44座。 因此,我希望当用户单击确认预订时,系统将计算用户为相同路线选择的同一天预订的座位。 所以如果它完全预订消息

抱歉没有空位

将显示。 否则将确认预订并显示剩余座位数。

我生成了这张表,以便计算每天的座位数和人数: Date table .我的预订表是Booking。无论如何,我尝试了这段代码来计算座位号,但它不起作用:

<?php 
@session_start();
$username = "root";
$password = "";
$server="localhost";
$database = "Mydatabase";
$table = "booking";


@mysql_connect($server,$username,$password);
mysql_select_db($database);

if(isset($_POST['ok']))
{
  //values from my html page
$dept = $_POST['tdep'];
$arr = $_POST['tarr'];
$date = $_POST['ddate'];
$tcode=$_POST['tcode'];
$userid = $_SESSION['login'];
$num =$_POST['num'];
$confirmation = uniqid();


//booking details that will be stored in booking table
$sql = "INSERT INTO $table VALUES('$confirmation','$tcode', '$date', '$num', '$userid', '$price', '$dept','$arr' )";
$query=mysql_query($sql);

//date,rout and number of seats will be inserted to date table
$sql = "INSERT INTO date (tcode,sno,date) VALUES('$tcode', '$num','$date' )";
$query=mysql_query($sql);


//calculating number of seats 
$sqld="SELECT COUNT(sno) FROM date WHERE date='$date' AND tcode='$tcode'";
$queryd=mysql_query($sqld);
if ($queryd>44)
	echo "No Available Seats left";
else
	echo "seats Available= ".$queryd;


//decarsing number of seats in routs table
$sql3 = "UPDATE long_dis SET seat=seat-'$num' WHERE Tcode='$tcode'";
$query3=mysql_query($sql3);


//confirmation message
echo "<h3><font color='red'>Booking is successfully Confirmed for national id :".$userid."</font></h3>";
echo "<h4><font color='blue'>The total cost=  ".$price." OMR </br>And your confirmation code is: ". $confirmation."</font></h4>";
	 } 
?>

提前感谢您的帮助,

【问题讨论】:

  • 首先,定义“它不起作用”,它有点模糊。第二:我希望这只是一个你正在学习的项目,如果你真的打算使用它,你应该阅读手册页上红色背景上关于mysql_query等函数的大通知,告诉你不要使用它们。第三:如果你坚持这条路,你应该真的准备好逃跑了。第四:你为什么要计算现有行after你已经插入了新行?
  • 看来您really 必须阅读有关 mysql_query 函数的手册页 (php.net/mysql_query),因为除了大注意之外,您还应该看到这个函数的返回值是什么。
  • 感谢您的评论,其实我只是在学习。我已经阅读了很多关于它的内容,但仍然没有得到代码。我在插入新的之前将计数替换为,所以谢谢你的怀疑。

标签: php mysql


【解决方案1】:
$queryd=mysql_query($sqld);
if ($queryd>44)

在那里找到问题 :) 阅读本文

对于 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他返回结果集的语句,mysql_query() 成功时返回资源,错误时返回 FALSE。

它返回一个资源,而不是行数。找到返回结果中行数的正确函数。

在该任务中,还请阅读此How can I prevent SQL injection in PHP?

【讨论】:

    【解决方案2】:

    首先你必须获取数据。

    其次,您的 if 条件大于 44 将不起作用,因为可以预订的座位总数为 44,您的总数不能大于 44。因此检查大于等于 44。

    //calculating number of seats 
    $sqld="SELECT COUNT(sno) as seatAvialable FROM date WHERE date='$date' AND tcode='$tcode'";
    $queryd=mysql_query($sqld);
    $resultd=mysql_fetch_assoc($queryd);
    if ($resultd['seatAvialable']>=44)
        echo "No Available Seats left";
    else
        echo "seats Available= ".$queryd;
    

    【讨论】:

      【解决方案3】:

      我实际上发现我应该使用 SUM() 而不是 COUNT()。 小代码意味着大事!

      无论如何,如果有人想从中受益,我会列出我的答案。

      <?php
          $result = mysql_query("SELECT SUM(sno) AS value_sum FROM $table WHERE date='$date' AND tcode='$tcode'"); 
          $row = mysql_fetch_assoc($result); 
          $sum = $row['value_sum'];
      
      
      
          if ($sum<44)
          {
          echo "<h3><font color='red'>Booking is successfully Confirmed !!</font>";
      
          }
      
          else if($sum>=44)
      
          echo "<h3><font color='red'>SORRY,".$sum." of 44 seat been already booked for the selected date and Rout!!</font></h3>"; 
      
      ?>

      【讨论】:

        猜你喜欢
        • 2020-08-01
        • 2014-01-26
        • 2011-04-12
        • 2011-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-02
        • 2021-12-20
        相关资源
        最近更新 更多