lundi 18 avril 2016

Everything on webpage stops working beyond recently added PHP

So I've been working on a booking system for a side project of mine, and I spent most of yesterday working on a system that checks an orders table for any currently placed orders of a certain product ID within two dates. If it returns an ID, then that ID is unavailable to any new customer for that time. Now, before I added the code, the page was a simple page, displaying the current information about the order, with some Javascript to format the date and to take the user to the next page once they have selected an item. This is a pastebin of the code before the changes. Go to line 111 of the pastebin to see where the code will be added.

<?php
session_start();
include('php/functions.php');
$currentuser = getUserLevel();
$pickup      = $_POST["pickuplocation"];
$returnl     = $_POST["returnlocation"];
$pickupdate  = $_POST["pickupdate"];
$pickuptime  = $_POST["pickuptime"];
$returndate  = $_POST["returndate2"];
$returntime  = $_POST["returndate3"];
$cartypetwo  = $_POST["cartype"];
$duration    = $_POST["duration"];
if ($duration > 1){
    $time = "days";
}else{
  $time = "day";
}
if($returnl == null){
  $return = $_POST['pickuplocation'];
}
$db = createConnection();
$locations = "select locationid from locations where locationname = '$pickup'";
$lstmt = $db->prepare($locations);
$lstmt->execute();
$lstmt->store_result();
$lstmt->bind_result($locationid);
while($lstmt->fetch()){
  echo "<div class='hide'>
  $locationid
  </div>";
}
$orderscheck = "select carid from orders where ((pickuplocaton = '$pickup' and ((('$pickupdate' >= pickupdate and '$pickupdate' <= returndate) or ('$returndate' >= pickupdate and '$returndate' <= returndate)) or ((('$pickupdate' < pickupdate) or ('$pickupdate' > returndate )) and (('$returndate' < pickupdate) or ('$returndate' > returndate))))))";
$ocstmt = $db->prepare($orderscheck);
$ocstmt->execute();
$ocstmt->store_result();
$ocstmt->bind_result($bannedcarids);
$i=0;
while ($ocstmt->fetch()){
  $bookedcars[$i] = $bannedcarids;
  $i++;
}
?>
<title>Select a Vehicle</title>
<!doctype html>
<html class="no-js" lang="en">
   <?php include 'assets/includes/head.html'; ?>
  <body>
      <div class="content">
         <?php include 'assets/includes/menu.php'; ?>
     <div id='orderprogress'>
     <div id='orderdetails'>
     <p class='columns'>Order Status</p>
     </div>
     <div class="medium-3 small-3 columns selectcar">
          <p>Edit Search</p>
          <div class='medium-6 selectcolor'>
          </div>
        </div>
        <div class="medium-3 small-3 columns selectcar">
          <p>Select Car</p>
          <div class='medium-6 selectcolor'>
          </div>
        </div>
        <div class="medium-3 small-3 columns selectcar">
          <p>Select Extras</p>
          <div class='medium-6 selectblack'>
          </div>
        </div>
        <div class="medium-3 small-3 columns selectcar">
          <p>Confirm Order</p>
          <div class='medium-6 selectblack'>
          </div>
          </div>
          <p style="clear:both;">&nbsp;</p>
     </div>
        <?php
        echo "<div id='statusorder'>
        <div id='orderdetails'>
        <p class='columns'>Order Details</p>
        </div>
        <div class='medium-4 columns'>
        <p class='boldcar columns'>Pickup Location : <span id='p1'>$pickup</span></p>
        <div class='columns'>
        <p class='boldcar medium-10 columns'>Pickup Date :<span style='display:none;' id='d2'> $pickupdate</span></p>
        </div>
        <div class='columns'>
        <p class='boldcar medium-10 columns'>Pickup Time : <span id='t1'>$pickuptime</span></p>
        </div>
        </div>
        <div class='medium-4 columns'>
        <p class='boldcar columns'>Return Location : <span id='p2'>$return</span></p>
        <div class='columns'>
        <p class='boldcar medium-10 columns'>Return Date :<span style='display:none;' id='d3'> $returndate</span></p>
        </div>
        <div class='columns'>
        <p class='boldcar medium-10 columns'>Return Time : <span id='t2'>$returntime</span></p>
        </div>
        </div>
        <div class='medium-4 columns'>
        <p class='boldcar medium-10 columns'>Duration of Order : $duration $time</p>
        </div>
        </div>";
        ?>
<?php  include 'assets/includes/carslocationssearch.php'; ?>
<div id="carresults">
  <p class="columns">Select a Car</p>
</div>



Where the Added Code will Go



<div class='quoteinclude'>
      <div id='priceinclude'>
        <p>These Prices include</p>
        </div>
        <div class='medium-3 columns'>
        <div class='medium-6 quoteincludes'>
        <p>Licences & Fees</p>
        </div>
        </div>
        <div class='medium-3 columns'>
        <div class='medium-6 quoteincludes'>
        <p>Collision Damage Waiver</p>
        </div>
        </div>
        <div class='medium-3 columns'>
        <div class='medium-6 quoteincludes'>
        <p>Theft Waiver</p>
        </div>
        </div>
        <div class='medium-3 columns'>
        <div class='medium-6 quoteincludes'>
        <p>VAT</p>
        </div>
        </div>
        </div>
</div>
        <?php include 'assets/includes/login-modal.html'; ?>
<?php include 'assets/includes/script.html';?>
<script>
    function carInfo(type,id) {
    //t1,t2,p1,p2 are the span IDs of the Pickup Locations and Times , carid is the id of the span containing the ID of the Car selected
        var carid = $("#carid"+id).text();
        var t1 = $("#t1").text();
        var t2 = $("#t2").text();
        var p1 = $("#p1").text();
        var p2 = $("#p2").text();
    //puts all the information that will allow me to calculate the correct cost and duration of the order in the URL to be used later
        var finalurl = "/extras.php?carid="+carid+"&pickupdate=<?php echo $pickupdate ?>&returndate=<?php echo $returndate ?>&pickuptime="+t1+"&returntime="+t2+"&pickuplocation="+p1+"&returnlocation="+p2+"&type="+type;
        location.replace(finalurl);
    }
    //Loop created to re-format the dates shown at the top of the page, from YYYY-MM-DD to DD-MM-YYYY.
      var i = 1;
      var d2 = $("#d2").text();
      var d3 = $("#d3").text();
      while(i<3) {
        i++;
        if(i==2){
            var day = d2.substr(9,2);
            var month = d2.substr(6,2);
            var year = d2.substr(1,4);
        } else {
            var day = d3.substr(9,2);
            var month = d3.substr(6,2);
            var year = d3.substr(1,4);
        }
        var pd = day+"/"+month+"/"+year;
        $("#d"+i).text(pd)
        $("#d"+i).show();
      }
</script>
   </body>
</html>

Now heres the code I added yesterday.

<?php
$actualcars[] = array_diff($locationcar, $bookedcars);
$nonbooked = $actualcars[0];
$nonbooked = array_values($nonbooked);
$amountfree = count($nonbooked);
for ($p=0;$p<=$amountfree;$p++){
  $test = $nonbooked[$p];
  if ($cartypetwo == 1){
    $carsql = "select carid, manufacturer, model, doors, passengers, storage, transmission, fueleconomy, costperday, cartype from cars where carid = $test";
  }else{
    $carsql = "select carid, manufacturer, model, doors, passengers, storage, transmission, fueleconomy, costperday, cartype from cars where cartype = $cartypetwo and carid = $test";
  }
  $carstmt=$db->prepare($carsql);
  $carstmt->execute();
  $carstmt->store_result();
  $carstmt->bind_result($carid, $manufacturer, $model, $doors, $passengers, $storage,$transmission,$fueleconomy,$costperday,$cartype);
  while($carstmt->fetch()){
    $cost = $duration * $costperday;
    $pickupcost = $cost * 1.15;
    echo "<div class='carresult row'>
              <div class='medium-12 medium-centered columns'>
          <div class='medium-12 columns'>
            <h4>$manufacturer $model</h4>
          </div>
                  <hr>
                  <div class='medium-4 columns'>
            <img id='carimg' src='assets/img/$model.png'/>
          </div>
                  <div class='medium-5 columns'>
                      <p>Unlimited Mileage</p>
                      <div class='medium-5 columns'>
                          <p><i class='fa fa-users'></i> $passengers Passengers</p>
                          <p><i class='fa fa-suitcase'></i> $storage</p>
                          <p><i class='fa fa-car'></i> $doors Doors</p>
                      </div
                      <div class='medium-7 columns'>
                          <p><i class='fa fa-cogs'></i> $transmission Transmission</p>
                          <p><i class='fa fa-car'></i> $fueleconomy</p>
                      </div>
          </div>
          <div class='medium-3 columns'>
            <a onclick='carInfo(&quot;o&quot;,$carid)' class='medium-12 button'>Pay Online<br>£<span id='o-cost$carid'>$cost</span></a>
            <a onclick='carInfo(&quot;p&quot;,$carid)' class='medium-12 button'>Pay on Pickup<br>£<span id='p-cost$carid'>".round($pickupcost)."</span></a>
          </div>
        </div>
        <span class='hide' id='carid$carid'>$carid</span>
          </div>
          </div>";
  }
}
 ?>

It seems that everything past the IF ELSE statement is what stops the code working beyond that. Starting at the $carstmt=$db->prepare($carsql);.The div after the added code doesnt show and the script doesnt run at all.




Aucun commentaire:

Enregistrer un commentaire