Jump to content

Search the Community

Showing results for 'detecting mobile device'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to PHP Freaks
    • Announcements
    • Introductions
  • PHP Coding
    • PHP Coding Help
    • Regex Help
    • Third Party Scripts
    • FAQ/Code Snippet Repository
  • SQL / Database
    • MySQL Help
    • PostgreSQL
    • Microsoft SQL - MSSQL
    • Other RDBMS and SQL dialects
  • Client Side
    • HTML Help
    • CSS Help
    • Javascript Help
    • Other
  • Applications and Frameworks
    • Applications
    • Frameworks
    • Other Libraries
  • Web Server Administration
    • PHP Installation and Configuration
    • Linux
    • Apache HTTP Server
    • Microsoft IIS
    • Other Web Server Software
  • Other
    • Application Design
    • Other Programming Languages
    • Editor Help (PhpStorm, VS Code, etc)
    • Website Critique
    • Beta Test Your Stuff!
  • Freelance, Contracts, Employment, etc.
    • Services Offered
    • Job Offerings
  • General Discussion
    • PHPFreaks.com Website Feedback
    • Miscellaneous

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests


Age


Donation Link

Found 10,000 results

  1. if both arms_name_long and arms_name_short must be unique, you would want to detect which one or both are duplicates and display a separate and specific message in the appropriate span tag(s). as to how to do this, your database design must enforce uniqueness. both of those database table columns should be defined as unique indexes. you would then just attempt to insert the row of data and in the exception error handling, detect if a duplicate index error number (1062) occurred. It is at this point where you would build and execute a SELECT query to find which of the values are duplicates. here's a laundry list of things you should/should not be doing in this code - the for='...' attribute in the <label ...> tag must match the corresponding form field's id='...' attribute OR if you put the closing </label> tag after the form field, you can leave out the for='...' attribute entirely and if not used for anything else, leave out the id='...' attribute. for problems like item #1, you need to validate your resulting web pages at validator.w3.org any value you output in a html context needs to have htmlentities() applied to it to help prevent cross site scripting. if you use the null coalescing operator (??), it will simplify things like the value='...' attribute logic - value='<?=htmlentities($_POST['arms_long_name']??'',ENT_QUOTES)?>' the ids you use in a database context should be generated via autoincrement primary index columns, not using php random numbers. if you did have some need to generate unique random numbers and store them in a database table, you would need to insure uniqueness by defining the column holding them as a unique index and perform a duplicate index error check as described above for the arms_name_long and arms_name_short values. you should keep the form data as a set in a php array variable, then operate on elements in this array variable throughout the rest of the code. you should trim all input data before validating it, mainly so that you can detect if values where all white-space characters. once you do item #6 on this list, you can trim all the data at once using a single php array function. you should apply any ucwords() and strtoupper() modification to values only when you output them. the value you output in the form field value='...' attribute should be the trimmed, validated value, not the raw field value. when you make the database connection, you need to - set the character set to match your database table's character set, set the emulated prepared query setting to false (you want to run real prepared queries whenever possible), and set the default fetch mode to assoc (so that you don't need to specify it in each fetch statement.) i'm assuming that the ALTER TABLE... query is temporarily in the code and will be removed? btw - the ->query() method call executes the query. you don't need an additional ->execute() call and i'm not sure what doing so in this case will accomplish. if you use simple ? prepared query place holders and simply supply an array of input values to the ->execute([...]) call, it will greatly reduced the amount of typing you have to do for each sql query. as already discussed, you would first attempt to insert the data, then in the exception error handling, detect if the query produced a duplicate index error number. if it did, you would then execute a SELECT query to find which column(s) contain the duplicate values. for any other error number, you would simply rethrow the exception and let php handle it. you should not output raw database statement errors on a live/public server, as this gives hackers useful information when they internationally do things that trigger errors. if you only catch and handle duplicate (and out of range) database query exceptions in your code, and let php catch and handle all other database exceptions, php will 'automatically' display/log the raw database statement errors the same as its error related settings are setup to do for php errors.
  2. Dear Team, In my project, I created the dashboard page. Once the user is logged in, we will prompt them to visit the dashboard page. On the dashboard page, there are many separate fields to display the values fetched from the database. Because of the many queries with large amounts of data, it is taking a long time to load the page. My code is <?php session_start(); error_reporting(0); include("connection.php"); $id=$_SESSION['id']; $query = "SELECT * FROM userdetails where id='$id'"; $qry_result = mysqli_query($conn, $query); $row=mysqli_fetch_array($qry_result); $userbranch = $row['branch']; $date = date('Y'); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="description" content=""> <meta name="author" content=""> <link rel="stylesheet" href="../css/style.css"> <link rel="stylesheet" href="../css/style1.css"> <link rel="stylesheet" href="../css/bootstrap.min.css"> <title>Dashboard</title> <link rel = "icon" href ="../Image/Company_Logo.jpg" type = "image/x-icon"> <link href="../vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css"> <link href="../css/sb-admin-2.min.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet"> <script src="../js/bootstrap.bundle.min.js"></script> <script src="../js/jquery.min.js"></script> </head> <body> <div> <?php include('header.php'); ?> </div> <div> <div class="row" style="margin-left:10px;margin-top:10px;margin-right:10px"> <!-- Certificate Printed Card Example --> <div class="col mb-4"> <div class="card border-left-success shadow h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col mr-2"> <div class="text-xxl-center font-weight-bold text-center text-success text-uppercase mb-1"> Certificate Printed</div> <?PHP $sql = "SELECT * FROM calibrationdata WHERE Branch = '$userbranch' And status = '1'" ; $result = mysqli_query($conn,$sql); $Printedreading=mysqli_num_rows($result); ?> <div class="h5 mb-2 font-weight-bold text-center text-gray-800"><?php echo $Printedreading; ?></div> <div class="col-auto text-center"> <input type="button" value="View" class="btn-sm btn-success" id="btnHome" onClick="document.location.href='printed.php'" /> </div> </div> </div> </div> </div> </div> <!-- Certificate Print Pending Card Example --> <div class="col mb-4"> <div class="card border-left-danger shadow h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col mr-2"> <div class="text-xxl-center font-weight-bold text-center text-danger text-uppercase mb-1"> Certificate Print Pending</div> <?PHP $sql = "SELECT * FROM calibrationdata WHERE Branch = '$userbranch' And status = '0' " ; $result = mysqli_query($conn,$sql); $Printpending=mysqli_num_rows($result); ?> <div class="h5 mb-2 font-weight-bold text-center text-gray-800"><?php echo $Printpending; ?></div> <div class="col-auto text-center"> <input type="button" value="View" class="btn-sm btn-danger" id="btnHome" onClick="document.location.href='newreadings.php'" /> </div> </div> </div> </div> </div> </div> <!-- Certificate Pending beyond 7 days Card Example --> <div class="col mb-4"> <div class="card border-left-primary shadow h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col mr-2"> <div class="text-xxl-center font-weight-bold text-center text-primary text-uppercase mb-1"> Pending beyond 7 days</div> <?PHP $sql = "SELECT * FROM calibrationdata WHERE Branch = '$userbranch' And status = '0'And today <= (NOW() - INTERVAL 7 DAY)" ; $result = mysqli_query($conn,$sql); $Sevendayspending=mysqli_num_rows($result); ?> <div class="h5 mb-2 font-weight-bold text-center text-gray-800"><?php echo $Sevendayspending; ?></div> <div class="col-auto text-center"> <input type="button" value="View" class="btn-sm btn-primary" id="btnHome" onClick="document.location.href='7daysreminder.php'" /> </div> </div> </div> </div> </div> </div> <!-- Reminder Mail to be sent Card Example --> <div class="col mb-4"> <div class="card border-left-warning shadow h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col mr-2"> <div class="text-xxl-center font-weight-bold text-center text-warning text-uppercase mb-1"> Reminder Mail to be sent</div> <?PHP $sql = "SELECT * FROM calibrationdata WHERE Branch = '$userbranch' And Date <= (NOW() - INTERVAL 80 DAY) And First = '0000-00-00'" ; $result = mysqli_query($conn,$sql); $Remindermail=mysqli_num_rows($result); ?> <div class="h5 mb-2 font-weight-bold text-center text-gray-800"><?php echo $Remindermail; ?></div> <div class="col-auto text-center"> <input type="button" value="View" class="btn-sm btn-warning" id="btnHome" onClick="document.location.href='reminder_mail.php'" /> </div> </div> </div> </div> </div> </div> <!-- Canceled Certificate Card Example --> <div class="col mb-4"> <div class="card border-left-secondary shadow h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col mr-2"> <div class="text-xxl-center font-weight-bold text-center text-gray-600 text-uppercase mb-1"> Canceled Certificate</div> <?PHP $sql = "SELECT * FROM calibrationdata WHERE Branch = '$userbranch' And status = '2'" ; $result = mysqli_query($conn,$sql); $Remindermail=mysqli_num_rows($result); ?> <div class="h5 mb-2 font-weight-bold text-center text-gray-800"><?php echo $Remindermail; ?></div> <div class="col-auto text-center"> <input type="button" value="View" class="btn-sm btn-secondary" id="btnHome" onClick="document.location.href='canceled_certificate.php'" /> </div> </div> </div> </div> </div> </div> </div> <div class="row" style="margin-left:10px;margin-right:10px"> <div class="col-xl-6 col-lg-7" > <!-- Bar Chart --> <div class="card shadow mb-4"> <div class="card-header py-3"> <h6 class="m-0 font-weight-bold text-primary">Monthly Invoice Details</h6> </div> <div class="card-body"> <div class="chart-bar" > <canvas id="myBarChart"></canvas> </div> </div> </div> </div> <div class="col-xl-6 col-lg-7"> <!-- Area Chart --> <div class="card shadow mb-4"> <div class="card-header py-3"> <h6 class="m-0 font-weight-bold text-primary">No of Calibration</h6> </div> <div class="card-body"> <div class="chart-area"> <canvas id="myAreaChart"></canvas> </div> </div> </div> </div> </div> <div class="row" style="margin-left:10px;margin-right:10px"> <div class="col-xl-6 col-lg-7" > <!-- Bar Chart --> <div class="card shadow mb-4"> <div class="card-header py-3"> <h6 class="m-0 font-weight-bold text-primary">Yearly Invoice Details</h6> </div> <div class="card-body"> <div class="chart-bar" > <canvas id="yearlyBarChart"></canvas> </div> </div> </div> </div> <div class="col-xl-6 col-lg-7"> <!-- Area Chart --> <div class="card shadow mb-4"> <div class="card-header py-3"> <h6 class="m-0 font-weight-bold text-primary">Yearly Calibration</h6> </div> <div class="card-body"> <div class="chart-area"> <canvas id="yearlyAreaChart"></canvas> </div> </div> </div> </div> </div> <?php $sql ="SELECT date_format(Date,'%b') as month, sum(amount) FROM calibrationdata WHERE YEAR(Date)=$date AND Branch = '$userbranch' group by year(Date),month(Date) order by year(Date),month(Date)"; $result = mysqli_query($conn,$sql); while ($row = mysqli_fetch_array($result)) { $Invoicemonth[] = $row['month'] ; $Invoiceamount[] = $row['sum(amount)']; $Inmonth = json_encode($Invoicemonth); $Invoice = json_encode($Invoiceamount); } $sql ="SELECT date_format(Date,'%b') as month, COUNT(*) COUNT FROM calibrationdata WHERE YEAR(Date)=$date AND Branch = '$userbranch' group by year(Date),month(Date) order by year(Date),month(Date)"; $result = mysqli_query($conn,$sql); while ($row = mysqli_fetch_array($result)) { $Calibemonth[] = $row['month'] ; $Calibqty[] = $row['COUNT']; $calmonth = json_encode($Calibemonth); $qty = json_encode($Calibqty); } $sql ="SELECT date_format(Date,'%Y') as month, sum(amount) FROM calibrationdata WHERE Branch = '$userbranch' group by year(Date) order by year(Date)"; $result = mysqli_query($conn,$sql); while ($row = mysqli_fetch_array($result)) { $yearlyInvoicemonth[] = $row['month'] ; $yearlyInvoiceamount[] = $row['sum(amount)']; $yearlyInmonth = json_encode($yearlyInvoicemonth); $yearlyInvoice = json_encode($yearlyInvoiceamount); } $sql ="SELECT date_format(Date,'%Y') as month, COUNT(*) COUNT FROM calibrationdata WHERE Branch = '$userbranch' group by year(Date) order by year(Date)"; $result = mysqli_query($conn,$sql); while ($row = mysqli_fetch_array($result)) { $yearlyCalibemonth[] = $row['month'] ; $yearlyCalibqty[] = $row['COUNT']; $yearlycalmonth = json_encode($yearlyCalibemonth); $yearlyqty = json_encode($yearlyCalibqty); } ?> </div> <script type="text/javascript"> var inmonth = <?php echo $Inmonth ?>; var invoice = <?php echo $Invoice ?>; var yearlyinmonth = <?php echo $yearlyInmonth ?>; var yearlyinvoice = <?php echo $yearlyInvoice ?>; var calmonth = <?php echo $calmonth ?>; var qty = <?php echo $qty ?>; var yearlycalmonth = <?php echo $yearlycalmonth ?>; var yearlyqty = <?php echo $yearlyqty ?>; </script> <!-- Bootstrap core JavaScript--> <script src="../vendor/jquery/jquery.min.js"></script> <script src="../vendor/bootstrap/js/bootstrap.bundle.min.js"></script> <!-- Core plugin JavaScript--> <script src="../vendor/jquery-easing/jquery.easing.min.js"></script> <!-- Custom scripts for all pages--> <script src="../js/sb-admin-2.min.js"></script> <!-- Page level plugins --> <script src="../vendor/chart.js/Chart.min.js"></script> <!-- Page level custom scripts --> <script src="../js/demo/monthly-area-chart.js"></script> <script src="../js/demo/monthly-bar-chart.js"></script> <script src="../js/demo/yearly-area-chart.js"></script> <script src="../js/demo/yearly-bar-chart.js"></script> </body> </html> Please suggest me how to reduce the page loading time.
  3. The answer you found on stack overflow is incomplete. In addition to redirecting the output, you need to actually put the operation into the background by including an & at the end. exec("scp -o StrictHostKeyChecking=accept-new -i /var/keys/devDevices_rsa MarTianez1.mp4 awong@10.1.1.16:/tmp/test1 2>&1 > out.log &", $output, $exitCode); This will just kick off the process and move on. You won't have any way in your code to determine if the process completes successfully or not. You'd only be able to detect if there is an error in the shell that prevented the command being run (syntax error, exec failure, etc). If you want to be able to verify the copy is complete, you need to use something more complex than exec, which is the proc_open and related functions. These let you run a command asynchronously while monitoring it's progress. You can handle this easier by making use of the symfony/process package to execute your commands. If you don't want to use a library, you can check my article on fibers for an example of how to run multiple processes asynchronously using proc_open.
  4. <?php /** * Template Name: Package * * @package WordPress * @subpackage Twenty_Seventeen * @since 1.0 * @version 1.0 */ get_header(); ?> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <article id="package" class="page"> <div class="entry-content"> <div class="home-wrap side-padding max-width-1000"> <h1 class="page-title-handwriting padding-top-0pt4em"><?php the_title(); ?></h1> </div> <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') : ?> <?php // Grab submitted fields $flagStyle = $_POST['flag-style']; $palette = $_POST['palette']; $noOfFlags = $_POST['no-of-flags']; $addBunting = $_POST['add-bunting']; $buntingLocation = $_POST['bunting-location']; $buntingLength = $_POST['length']; $deliveryOption = $_POST['delivery-option']; $buntingRefolding = $_POST['bunting-refolding']; $firstName = $_POST['your-first-name']; $surname = $_POST['your-surname']; $emailAddress = $_POST['your-email']; $phoneNumber = $_POST['your-phone']; $eventDate = $_POST['event-date']; $eventEndDate = $_POST['event-end-date']; $eventPostcode = $_POST['event-postcode']; $deliveryAddress = $_POST['delivery-address']; $deliveryAddressType = $_POST['delivery-address-type']; $deliveryContact = $_POST['event-contact']; $additionalComments = $_POST['additional-comments']; // Send the details by email $headers = "From: Event Flag Hire<hello@eventflaghire.co.uk>\r\n" . 'Reply-To: ' . $emailAddress; $to = "lanx@lanxworld.com"; $to = "studio@eventflaghire.co.uk"; $subject = "PACKAGE QUOTE ENQUIRY FORM"; $message = " CUSTOMER DETAILS\r\n Name: {$firstName} {$surname}\r\nEmail: {$emailAddress}\r\nTelephone: {$phoneNumber}\r\n"; $message .= " FLAG SPECIFICATION\r\n Flag Style: {$flagStyle}\r\nPalette: {$palette}\r\nNumber of flags: {$noOfFlags}\r\n"; $message .= " ADD ADDITIONAL BUNTING?\r\n Would you like to add additional bunting?: {$addBunting}\r\n"; $message .= "Bunting location: {$buntingLocation}\r\n"; if($addBunting == 'Yes'){ $message .= "Bunting length: {$buntingLength}m\r\n"; } $message .= " Bunting refolding required?: {$buntingRefolding}\r\n"; $message .= " DELIVERY\r\n Delivery option: {$deliveryOption}\r"; if($deliveryOption == 'Deliver'){ $message .= " Address Type: {$deliveryAddressType}"; } $message .= " \r\nEVENT DETAILS\r\n Event date: {$eventDate}\r\nEnd date (if event is more than one day): {$eventEndDate}\r\n"; if($deliveryOption == 'Deliver'){ $message .= "\r\nDelivery address: {$deliveryAddress}\r\n{$eventPostcode}\r\nDelivery contact: {$deliveryContact}\r\n"; } $message .= " ADDITIONAL COMMENTS\r\n {$additionalComments}\r\n"; mail($to, $subject, $message, $headers); ?> <div class="home-wrap side-padding max-width-1000" style="text-align:center;"> <h3 class="center padding-top-1em padding-bottom-1em no-text-transform mobile-side-padding text-left"><strong>Thanks for sending your enquiry through for your flag package.</strong></h3> <p>We will send you an official quote within 1 working day (normally much quicker!).</p> <p>Our bespoke handmade bunting is all made to order so we will also provide you our current lead-time. If you have any questions give us a call on 01749 850 991.</p> <p>For more decor please <a href="https://shop.eventflaghire.co.uk">visit our webshop</a>.</p> </div> <?php else: ?> <form id="package-enquiry-form" method="post" action="<?php the_permalink(); ?>"> <div id="package-loader" class="clearboth flag-strip"> <div class="loader">Loading, please wait&helip;</div> </div> <div id="package-step01" class="clearBoth flag-strip"> <fieldset class="package-section-title side-padding max-width-1000"> <legend><strong>Step 1:</strong> Choose your flag style</legend> <div class="home-wrap flag-styles"> <div class="center-big-flags center-big-flags-7"> <div class="flag-blueprint teal-hover"> <div> <input type="radio" class="flag-style" value="New Leaf" name="flag-style" id="flag-style-new-leaf"> <label for="flag-style-new-leaf" title="New Leaf"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-timeout=2000> <img src="https://www.eventflaghire.co.uk/wp-content/uploads/2020/05/Festival-Flags-New-Leaf.png" alt="Festival Flags New Leaf" /> </div> </label> </div> </div> <div class="flag-blueprint turquoise-hover"> <div> <input type="radio" class="flag-style" value="Silk & Ribbon" name="flag-style" id="flag-style-silk-and-ribbon"> <label for="flag-style-silk-and-ribbon" title="Silk & Ribbon"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-timeout=2000> <img src="https://www.eventflaghire.co.uk/wp-content/uploads/2020/05/Festival-Flags-Silk-Ribbon.png" alt="Festival Flags Silk & Ribbon" /> </div> </label> </div> </div> <div class="flag-blueprint teal-hover"> <div> <input type="radio" class="flag-style" value="Half Moon Petal" name="flag-style" id="flag-style-half-moon-petal"> <label for="flag-style-half-moon-petal" title="Half Moon Petal"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-timeout=2000> <img src="https://www.eventflaghire.co.uk/wp-content/uploads/2020/05/Festival-Flags-Half-Moon-Petal.png" alt="Festival Flags Half Moon Petal" /> </div> </label> </div> </div> <div class="flag-blueprint turquoise-hover"> <div> <input type="radio" class="flag-style" value="Indian Summer" name="flag-style" id="flag-style-indian-summer"> <label for="flag-style-indian-summer" title="Indian Summer"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-timeout=2000> <img src="https://www.eventflaghire.co.uk/wp-content/uploads/2020/05/Festival-Flags-Indian-Summer.png" alt="Festival Flags Indian Summer" /> </div> </label> </div> </div> <div class="flag-blueprint teal-hover"> <div> <input type="radio" class="flag-style" value="Phoenix" name="flag-style" id="flag-style-phoenix"> <label for="flag-style-phoenix" title="Phoenix"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-timeout=2000> <img src="https://www.eventflaghire.co.uk/wp-content/uploads/2023/03/Phoenix-Festival-Flag-Blueprint.png" alt="Phoenix Festival Flag Blueprint" /> </div> </label> </div> </div> <div class="flag-blueprint turquoise-hover"> <div> <input type="radio" class="flag-style" value="Bright Stripes" name="flag-style" id="flag-style-bright-stripes"> <label for="flag-style-bright-stripes" title="Bright Stripes"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-timeout=2000> <img src="https://www.eventflaghire.co.uk/wp-content/uploads/2020/05/Festival-Flags-Bright-Stripes.png" alt="Festival Flags Bright Stripes" /> </div> </label> </div> </div> <div class="flag-blueprint teal-hover"> <div> <input type="radio" class="flag-style" value="Calypso" name="flag-style" id="flag-style-calypso"> <label for="flag-style-calypso" title="Calypso"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-timeout=2000> <img src="https://www.eventflaghire.co.uk/wp-content/uploads/2023/03/Calypso-Flag-Blueprint-.png" alt="Calypso Flag Blueprint" /> </div> </label> </div> </div> </div> <div class="home-wrap topTwoButtons clearBoth" style="overflow:hidden; margin-top:32px;"> <div class="inline-button"> <input type="radio" class="flag-style" value="Choose for me" name="flag-style" id="flag-style-choose-for-me"> <label for="flag-style-choose-for-me">I love them all, choose for me</label> </div> </div> </div> </fieldset> </div> <div id="package-step02" class="clearBoth teal-background flag-strip"> <fieldset class="package-section-title side-padding max-width-1000"> <legend><strong>Step 2:</strong> Choose your colour palette</legend> <p>Get inspired by selecting one of our beautiful pre-set palettes below.</p> <ul class="palettes"> <li class="swatch-festival-mix"> <input type="radio" class="palette" value="Festival Mix" name="palette" id="palette-festival-mix"> <label for="palette-festival-mix" title="Festival Mix"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-speed="500" data-cycle-timeout=1000> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/festival-mix.svg" alt="Festival Mix"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Festival-Mix-Rollover.jpg" alt="Festival Mix"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Festival-Mix-Rollover-02.jpg" alt="Festival Mix"> </div> </label> </li> <li class="swatch-warm-hues"> <input type="radio" class="palette" value="Warm Hues" name="palette" id="palette-warm-hues"> <label for="palette-warm-hues" title="Warm Hues"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-speed="500" data-cycle-timeout=1000> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/warm-hues.svg" alt="Warm Hues"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Warm-Hues-Rollover.jpg" alt="Warm Hues"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Warm-Hues-Rollover-02.jpg" alt="Warm Hues"> </div> </label> </li> <li class="swatch-under-the-sea"> <input type="radio" class="palette" value="Under the Sea" name="palette" id="palette-under-the-sea"> <label for="palette-pastels" title="Under the Sea"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-speed="500" data-cycle-timeout=1000> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/under-the-sea.svg" alt="Under the Sea"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Under-the-Sea-Rollover.jpg" alt="Under the Sea"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Under-the-Sea-Rollover-02.jpg" alt="Under the Sea"> </div> </label> </li> <li class="swatch-pastels"> <input type="radio" class="palette" value="Pastels" name="palette" id="palette-pastels"> <label for="palette-pastels" title="Pastels"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-speed="500" data-cycle-timeout=1000> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/pastels.svg" alt="Pastels"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Pastels-Rollover.jpg" alt="Pastels"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Pastels-Rollover-02.jpg" alt="Pastels"> </div> </label> </li> <li class="swatch-white-ivory"> <input type="radio" class="palette" value="White &amp; Ivory" name="palette" id="palette-white-ivory"> <label for="palette-white-ivory" title="White &amp; Ivory"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-speed="500" data-cycle-timeout=1000> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/white-ivory.svg" alt="White &amp; Ivory"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/White-Ivory-Rollover.jpg" alt="White &amp; Ivory"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/White-Ivory-Rollover-02.jpg" alt="White &amp; Ivory"> </div> </label> </li> <li class="swatch-multicolour-rainbow"> <input type="radio" class="palette" value="Multicolour Rainbow" name="palette" id="palette-multicolour-rainbow"> <label for="palette-multicolour-rainbow" title="Multicolour Rainbow"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-speed="500" data-cycle-timeout=1000> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/multicolour-rainbow.svg" alt="Multicolour Rainbow"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Multicolour-Rainbow-Rollover.jpg" alt="Multicolour Rainbow"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Multicolour-Rainbow-Rollover-02.jpg" alt="Multicolour Rainbow"> </div> </label> </li> <li class="swatch-multicolour-warm-hues"> <input type="radio" class="palette" value="Multicolour Warm Hues" name="palette" id="palette-multicolour-warm-hues"> <label for="palette-multicolour-warm-hues" title="Multicolour Warm Hues"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-speed="500" data-cycle-timeout=1000> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/multicolour-warm-hues.svg" alt="Multicolour Warm Hues"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Multicolour-Warm-Hues-Rollover.jpg" alt="Multicolour Warm Hues"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Multicolour-Warm-Hues-Rollover-02.jpg" alt="Multicolour Warm Hues"> </div> </label> </li> <li class="swatch-multicolour-cool-hues"> <input type="radio" class="palette" value="Multicolour Cool Hues" name="palette" id="palette-multicolour-cool-hues"> <label for="palette-multicolour-cool-hues" title="Multicolour Cool Hues"> <div class="cycle-slideshow" data-cycle-fx=fadeout data-cycle-speed="500" data-cycle-timeout=1000> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/multicolour-cool-hues.svg" alt="Multicolour Cool Hues"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Multicolour-Cool-Hues-Rollover.jpg" alt="Multicolour Cool Hues"> <img src="<?php echo get_stylesheet_directory_uri(); ?>/img/swatches/rollovers/Multicolour-Cool-Hues-Rollover-02.jpg" alt="Multicolour Cool Hues"> </div> </label> </li> </ul> </fieldset> </div> <div id="package-step03" class="clearBoth flag-strip"> <fieldset class="package-section-title side-padding max-width-1000"> <legend><strong>Step 3:</strong> How many flags do you need?</legend> <div class="inline-buttons"> <div class="inline-button"> <input type="radio" class="number-of-flags" value="6 flags + 25m bunting" name="no-of-flags" id="flags-6"> <label for="flags-6">6 FLAGS <span>+ 25m bunting</span></label> <span><strong>&pound;235 (ex VAT)</strong><br>&pound;282 (inc VAT)</span> </div> <div class="inline-button"> <input type="radio" class="number-of-flags" value="10 flags + 40m bunting" name="no-of-flags" id="flags-10"> <label for="flags-10">10 FLAGS <span>+ 40m bunting</span></label> <span><strong>&pound;340 (ex VAT)</strong><br>&pound;408 (inc VAT)</span> </div> <div class="inline-button"> <input type="radio" class="number-of-flags" value="20 flags + 50m bunting" name="no-of-flags" id="flags-20"> <label for="flags-20">20 FLAGS <span>+ 50m bunting</span></label> <span><strong>&pound;565 (ex VAT)</strong><br>&pound;678 (inc VAT)</span> </div> <div class="inline-button"> <input type="radio" class="number-of-flags" value="25 flags + 100m bunting" name="no-of-flags" id="flags-25"> <label for="flags-25">25 FLAGS <span>+ 100m bunting</span></label> <span><strong>&pound;750 (ex VAT)</strong><br>&pound;900 (inc VAT)</span> </div> </div> </fieldset> </div> <div id="package-step04" class="clearBoth teal-background flag-strip"> <fieldset class="teal-background package-section-title side-padding max-width-1000"> <legend><strong>Step 4:</strong> Would you like to add additional bunting?</legend> <div class="home-wrap topTwoButtons" style="overflow:hidden;"> <div class="col-half"> <div class="inline-button"> <input type="radio" class="add-bunting" value="Yes" name="add-bunting" id="add-bunting-yes"> <label for="add-bunting-yes">YES</label> </div> </div> <div class="col-half"> <div class="inline-button"> <input type="radio" class="add-bunting" value="No" name="add-bunting" id="add-bunting-no"> <label for="add-bunting-no">NO</label> </div> </div> </div> <fieldset class="package-section-title side-padding max-width-1000"> <legend>Is your bunting for inside or outside use?</legend> <div class="home-wrap topTwoButtons"> <div class="col-half"> <div class="inline-button"> <input type="radio" value="Inside" name="bunting-location" id="bunting-location-inside"> <label for="bunting-location-inside">INSIDE</label> </div> </div> <div class="col-half"> <div class="inline-button"> <input type="radio" value="Outside" name="bunting-location" id="bunting-location-outside"> <label for="bunting-location-outside">OUTSIDE</label> </div> </div> </div> </fieldset> <div id="extra-bunting-options"> <fieldset class="package-section-title side-padding max-width-1000"> <legend>Choose your length in metres</legend> <div class="bunting-length"> <label for="length">Length</label> <input class="text" type="number" name="length" id="length" min="10" step="10" value="20" onKeyDown="return false"> </div> <div class="bunting-price"> <p>&pound;<span class="price">1.50</span> + VAT <small>per metre</small></p> </div> </fieldset> </div> <fieldset class="teal-background package-section-title side-padding max-width-1000"> <legend>Would you like a refolding service?</legend> <div class="home-wrap topTwoButtons"> <div class="col-half"> <div class="inline-button"> <input type="radio" class="bunting-refolding" value="Yes" name="bunting-refolding" id="bunting-refolding-yes"> <label for="bunting-refolding-yes">YES</label> <span>We offer a refolding service for 40p (+ VAT) per metre if required.</span> </div> </div> <div class="col-half"> <div class="inline-button"> <input type="radio" class="bunting-refolding" value="No" name="bunting-refolding" id="bunting-refolding-no"> <label for="bunting-refolding-no">NO</label> <span>Return the bunting unfolded, we will provide instructions.</span> </div> </div> </div> </fieldset> </fieldset> </div> <div id="package-step05" class="clearBoth flag-strip"> <fieldset class="package-section-title side-padding max-width-1000"> <legend><strong>Step 5:</strong> Choose your delivery option</legend> <div class="home-wrap topTwoButtons"> <div class="col-half"> <div class="inline-button"> <input type="radio" class="delivery-option" value="Deliver" name="delivery-option" id="delivery-option-deliver"> <label for="delivery-option-deliver">DELIVER</label> <span>Delivery and return is via next day courier.</span> </div> </div> <div class="col-half"> <div class="inline-button"> <input type="radio" class="delivery-option" value="Collection" name="delivery-option" id="delivery-option-collection"> <label for="delivery-option-collection">COLLECT</label> <span>Collection is from our office in Bruton, Somerset. Return next day courier.</span> </div> </div> </div> <div id="deliveryAddressType" class="home-wrap topTwoButtons" style="margin-top: 20px;"> <div class="col-half"> <div class="inline-button"> <input type="radio" class="delivery-address-type" value="Residential" name="delivery-address-type" id="delivery-address-type-residential"> <label for="delivery-address-type-residential">RESIDENTIAL</label> <span>Residential addresses will incur a &pound;10 surcharge each way for orders with flag poles.</span> </div> </div> <div class="col-half"> <div class="inline-button"> <input type="radio" class="delivery-address-type" value="Business" name="delivery-address-type" id="delivery-address-type-business"> <label for="delivery-address-type-business">BUSINESS</label> </div> </div> </div> </fieldset> </div> <div id="package-step06" class="clearBoth teal-background flag-strip"> <fieldset class="package-section-title side-padding max-width-1000"> <legend><strong>Step 6:</strong> Enter your contact details</legend> <div class="your-details"> <label for="your-first-name">Your first name*</label> <input type="text" name="your-first-name" id="your-first-name" required> <label for="your-surname">Your surname*</label> <input type="text" name="your-surname" id="your-surname" required> <label for="your-email">Your email address*</label> <input type="email" name="your-email" id="your-email" required> <label for="your-phone">Your phone number*</label> <input type="tel" name="your-phone" id="your-phone" required> </div> </fieldset> </div> <div id="package-step07" class="clearBoth flag-strip"> <fieldset class="package-section-title side-padding max-width-1000"> <legend><strong>Step 7:</strong> Enter your event details</legend> <div class="your-details"> <div class="question-with-note"> <label for="event-date">Date of event*</label> <input type="text" class="datepicker" name="event-date" id="event-date" required> <a class="info-link" href="#">Information</a> <div class="question-note"> <p>Weekly rental period commences on a Wednesday and finishes on a Tuesday. If the rental period incorporates 2 weekends this a 2 week rental but charge a 1.5 times rental fee.</p> <p>Most events take place on a weekend. We aim to despatch on a Wednesday for arrival on a Thursday to be erect on a Friday for an event on either Friday, Saturday or Sunday. We then collect on a Monday and the items are returned to us on a Tuesday. They are then unpacked, checked and repacked to be despatched again on a Wednesday to a different destination.</p> <p>Any collections on a Friday are delivered on a Monday and therefore deemed as a lost weekend rental. Couriers do not work on Sundays but can deliver on a Saturday for an additional fee.</p> <p>We can be flexible with a Tuesday either sending out a day early or collecting a day later but at the height of season we are dependent on all our stock being returned when agreed and without damage, or wet or dirty which leaves us little time to rectify these problems between orders.</p> </div> </div> <label for="event-end-date">End date (if event is more than one day)</label> <input type="text" class="datepicker" name="event-end-date" id="event-end-date"> <label for="event-postcode">Delivery postcode*</label> <input type="text" name="event-postcode" id="event-postcode" required> <div class="delivery-specific-field"> <div class="question-with-note"> <label for="delivery-address">Delivery address*</label> <textarea name="delivery-address" id="delivery-address"></textarea> <a class="info-link" href="#">Information</a> <div class="question-note"> <p>This should be an address that someone will be available to sign for the delivery a couple of days before your event date and the next working day after. This should not be a venue/field that a courier would not be able to deliver to. Delivery and collection addresses can be different.</p> </div> </div> <label for="event-contact">Contact name &amp; number for delivery (if different)</label> <input type="text" name="event-contact" id="event-contact"> </div> <label for="additional-comments">Any additional comments/requirements?</label> <p><small>For example, let us know if you require a base for your flags.</small></p> <textarea name="additional-comments" id="additional-comments"></textarea> <p>By sending your enquiry you agree to our <a href="/terms-conditions/" target="_blank" rel="noopener">terms and conditions</a>.</p> <input type="submit" value="Send enquiry"> </div> </fieldset> </div> </form> <?php endif; ?> </div> </div><!-- .entry-content --> </article><!-- #post-## --> </main><!-- #main --> </div><!-- #primary --> </div><!-- .wrap --> <?php get_footer();
  5. Billing.php <?PHP include("../connection.php"); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> <meta name="description" content="" /> <meta name="author" content="" /> <title>Branch Table</title> <link href="https://cdn.jsdelivr.net/npm/simple-datatables@7.1.2/dist/style.min.css" rel="stylesheet" /> <link href="css/styles.css" rel="stylesheet" /> <link href="css/bootstrap.min.css" rel="stylesheet" /> <link href="vendor/fontawesome-free/css/fontawesome.min.css" rel="stylesheet" /> <script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"></script> <link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/alasql/0.5.5/alasql.min.js"></script> </head> <body class="sb-nav-fixed" style="font-family:Cambria"> <nav class="sb-topnav navbar navbar-expand navbar-light bg-secondary border border-success p-2 mb-2 border-opacity-50 shadow"> <!-- Navbar Brand--> <img src="../Image/Logo.png" style="margin-left:5px" /> <!-- Sidebar Toggle--> <button class="btn btn-link btn-sm order-1 order-lg-0 me-4 me-lg-0 text-white" id="sidebarToggle" href="#!" style="margin-left:15px"> <i class="fas fa-bars"></i> </button> <!-- Navbar Search--> <form class="d-none d-md-inline-block form-inline ms-auto me-0 me-md-3 my-2 my-md-0 text-white"> <div class="input-group"> Srilekha R </div> </form> <!-- Navbar--> <ul class="navbar-nav ms-auto ms-md-0 me-3 me-lg-4 text-white"> <li class="nav-item dropdown text-white"> <a class="nav-link dropdown-toggle text-white" id="navbarDropdown" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> <i class="fas fa-user fa-fw"></i> </a> <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown"> <li> <a class="dropdown-item" href="#!">Settings</a> </li> <li> <a class="dropdown-item" href="#!">Activity Log</a> </li> <li> <hr class="dropdown-divider" /> </li> <li> <a class="dropdown-item" href="#!">Logout</a> </li> </ul> </li> </ul> </nav> <style> .sb-sidenav-menu .nav .nav-link .sb-nav-link-icon { color: white; } .sb-sidenav-menu .nav .nav-link { color: white; } .sb-sidenav-menu .nav .nav-link .sb-nav-link-icon { color: white; } .sb-sidenav-menu .nav .nav-link:hover { color: black; box-shadow: inset 2px 2px 2px 2px gray; background-color: lightgray } </style> <div id="layoutSidenav"> <div id="layoutSidenav_nav" style="margin-top:57px !important; height:100vh"> <nav class="sb-sidenav accordion sb-sidenav bg-secondary border border-success p-2 mb-2 border-opacity-50 shadow" id="sidenavAccordion"> <div class="sb-sidenav-menu"> <div class="nav"> <a class="nav-link " href="dashboard.php"> <div class="sb-nav-link-icon"> <i class="fas fa-tachometer-alt"></i> </div> Dashboard </a> <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#collapseLayouts" aria-expanded="false" aria-controls="collapseLayouts"> <div class="sb-nav-link-icon"> <i class="fas fa-columns"></i> </div> Master <div class="sb-sidenav-collapse-arrow"> <i class="fas fa-angle-down"></i> </div> </a> <div class="collapse fade-up" id="collapseLayouts" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordion"> <nav class="sb-sidenav-menu-nested nav"> <a class="nav-link" href="layout-static.html">Manpower Master</a> <a class="nav-link" href="layout-sidenav-light.html">Infrastructure</a> <a class="nav-link" href="layout-sidenav-light.html">Engineer Skill Matrix</a> <a class="nav-link" href="Department_Master.php">Department Master</a> <a class="nav-link" href="Branch_Master.php">Branch Master</a> </nav> </div> <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#projectionandBilling" aria-expanded="false" aria-controls="collapseLayouts"> <div class="sb-nav-link-icon"> <i class="fas fa-columns"></i> </div> Projection & Billing <div class="sb-sidenav-collapse-arrow"> <i class="fas fa-angle-down"></i> </div> </a> <div class="collapse fade-up" id="projectionandBilling" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordion"> <nav class="sb-sidenav-menu-nested nav"> <a class="nav-link" href="layout-static.html">Monthly Projection</a> <a class="nav-link" href="layout-sidenav-light.html">Monthly Billing</a> </nav> </div> <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#collapsePages" aria-expanded="false" aria-controls="collapsePages"> <div class="sb-nav-link-icon"> <i class="fas fa-book-open"></i> </div> Pages <div class="sb-sidenav-collapse-arrow"> <i class="fas fa-angle-down"></i> </div> </a> <div class="collapse" id="collapsePages" aria-labelledby="headingTwo" data-bs-parent="#sidenavAccordion"> <nav class="sb-sidenav-menu-nested nav accordion" id="sidenavAccordionPages"> <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#pagesCollapseAuth" aria-expanded="false" aria-controls="pagesCollapseAuth"> Authentication <div class="sb-sidenav-collapse-arrow"> <i class="fas fa-angle-down"></i> </div> </a> <div class="collapse" id="pagesCollapseAuth" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordionPages"> <nav class="sb-sidenav-menu-nested nav"> <a class="nav-link" href="login.html">Login</a> <a class="nav-link" href="register.html">Register</a> <a class="nav-link" href="password.html">Forgot Password</a> </nav> </div> <a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#pagesCollapseError" aria-expanded="false" aria-controls="pagesCollapseError"> Error <div class="sb-sidenav-collapse-arrow"> <i class="fas fa-angle-down"></i> </div> </a> <div class="collapse" id="pagesCollapseError" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordionPages"> <nav class="sb-sidenav-menu-nested nav"> <a class="nav-link" href="401.html">401 Page</a> <a class="nav-link" href="404.html">404 Page</a> <a class="nav-link" href="500.html">500 Page</a> </nav> </div> </nav> </div> <a class="nav-link" href="charts.html"> <div class="sb-nav-link-icon"> <i class="fas fa-chart-area"></i> </div> Charts </a> <a class="nav-link" href="tables.html"> <div class="sb-nav-link-icon"> <i class="fas fa-table"></i> </div> Tables </a> </div> </div> <div class="sb-sidenav-footer text-white" style="margin-bottom:55px"> <div class="small">Last Logged in:</div> 16-Oct-2023 10.52 PM </div> </nav> </div> <div id="layoutSidenav_content"> <main class="text-muted"> <div class="container-fluid px-4"> <h2 class="mt-2">Outstanding Report</h2> </div> <!--End of download file--> <!--upload file--> <?php if (!empty($_GET['status'])) { switch ($_GET['status']) { case 'succ': $statusType = 'alert-success'; $statusMsg = 'Member data has been imported successfully.'; break; case 'err': $statusType = 'alert-danger'; $statusMsg = 'Something went wrong, please try again.'; break; case 'invalid_file': $statusType = 'alert-danger'; $statusMsg = 'Please upload a valid Excel file.'; break; default: $statusType = ''; $statusMsg = ''; } } ?> <!-- Display status message --> <?php if (!empty($statusmsg)) { ?> <div class="col-xs-12 p-3"> <div class="alert <?php echo $statustype; ?>"> <?php echo $statusmsg; ?> </div> </div> <?php } ?> <div class="row p-3"> <!-- import link --> <!--Upload code--> <div class="col-md-12 head"> <div class="float-start"> <a href="javascript:void(0);" class="btn btn-success" onclick="formToggle();"> <i class="fas fa-plus"></i> Import Excel </a> </div> </div> <!-- excel file upload form --> <div class="col-md-12 mt-4" id="importfrm" style="display: none;"> <form class="row g-3" action="Billing_Import.php" method="post" enctype="multipart/form-data" style="border: 2px dashed #007bff;float:left"> <div class="col-auto"> <label for="fileinput" class="visually-hidden">file</label> <input type="file" class="form-control" name="file" id="fileinput" /> </div> <div class="col-auto"> <input type="submit" class="btn btn-primary mb-3" name="importsubmit" value="import" /> </div> </form> </div> </div> </main> </div> </div> <script src="vendor/bootstrap/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script> <script src="js/scripts.js"></script> <script src="vendor/bootstrap/js/bootstrap5.2.bundle.min.js"></script> <script src="vendor/jquery/jquery.min.js"></script> <script src="vendor/bootstrap/js/bootstrap.js"></script> <script src="js/Toggle.js"></script> </body> </html> Billing_Import.php <?php // Load the database configuration file include_once 'connection.php'; // Include PhpSpreadsheet library autoloader require_once 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; if(isset($_POST['importsubmit'])){ // Allowed mime types $excelMimes = array('text/xls', 'text/xlsx', 'application/excel', 'application/vnd.msexcel', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // Validate whether selected file is a Excel file if(!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'], $excelMimes)){ // If the file is uploaded if(is_uploaded_file($_FILES['file']['tmp_name'])){ $reader = new Xlsx(); $spreadsheet = $reader->load($_FILES['file']['tmp_name']); $worksheet = $spreadsheet->getActiveSheet(); $worksheet_arr = $worksheet->toArray(); // Remove header row unset($worksheet_arr[0]); foreach($worksheet_arr as $row){ $Sales_Document_Type = $row[0]; $Billing_Date = $row[2]; $Material= $row[11]; $Gross_Amount= $row[25]; $Sales_Office= $row[45]; $Plant= $row[47]; $Dateformat = date('Y-m-d', strtotime($Billing_Date)); $amount = str_replace(',', '', $Gross_Amount); // Check whether member already exists in the database with the same email $prevQuery = "SELECT billing FROM members WHERE Billing_Date = '".$Dateformat."' "; $prevResult = mysqli_query($conn, $prevQuery); if($prevResult->num_rows > 0){ // Update member data in the database $db = mysqli_query($conn,"UPDATE members SET first_name = '".$first_name."', last_name = '".$last_name."', email = '".$email."', phone = '".$phone."', status = '".$status."', modified = NOW() WHERE email = '".$email."'"); }else{ // Insert member data in the database $db = "INSERT INTO billing (Sales_Document_Type, Billing_Date, Gross_Amount, Sales_Office, Plant, Material) VALUES ('$Sales_Document_Type', '$Dateformat', '$amount', '$Sales_Office', '$Plant','$Material')"; $result = mysqli_query($conn, $db); } } $qstring = '?status=succ'; }else{ $qstring = '?status=err'; } }else{ $qstring = '?status=invalid_file'; } } // Redirect to the listing page header("Location: Billing.php".$qstring); ?>
  6. Dear Barand, I want to update each category column total aslo to my databse. How to update the total. My code is <form method="POST" action=""> <div style="display: inline-block;width:50%"> <div class="form-group" style="width:100%;margin-top:10px"> <label class="control-label col-sm-6" for="Dealer_Name">Dealer Name:</label> <div class="col-sm-8"> <input type="text" class="form-control Dealer_Name" id="Dealer_Name" placeholder="Search Dealer Name" name="Dealer_Name" Required style="font-size:14px !important"/> <input type="hidden" class="form-control" id="Dealer_Name1" placeholder="Search Dealer Name" name="Dealer_Name1" /> </div> <div style="text-align:center;margin-top:20px"> <button type="button" name="View" id="View" class="View" value="View" onclick="getLastYearData()" style="width:auto;margin-top:25px;background: #0A2558; color:white;font-family:Cambria;border-radius:5px;height:30px;padding:0 5px 0 5px;display:none">View Submitted Data </button> </div> </div> </div> <script> $( function() { $( "#Dealer_Name" ).autocomplete({ source: 'Auto_Complete_User.php', select: function (event, ui) { $("#Dealer_Name1").val(ui.item.id);//Put Id in a hidden field } }); }); </script> <div id="wrap" class="datalist-wrapper" style="margin-top:-25px"> <div class="" id="dataContainer"> <?php // generate month labels foreach(range(1,12) as $m) { $mon[] = ucfirst(date('M',strtotime("2023-$m-01"))); } ?> <table style="margin-top:40px; height:15px" id="example" cellpadding="0" cellspacing="0" border="0" class="datatable table-sm table-hover table-striped table-bordered"> <thead> <tr> <?php $Year = date("y"); $previousYear = $Year - 1; ?> <th style="text-align:center; font-weight:bold;width:2%">S.No</th> <th style="text-align:center; font-weight:bold;width:8%">Category</th> <th style="text-align:center; font-weight:bold;width:8%">Model</th> <?php foreach($mon as $m) {?> <th style="text-align:center; font-weight:bold;width:4.5%"> <?=$m.$previousYear?> </th> <?php } ?> <th style="text-align:center; font-weight:bold;width:5%">Total</th> <th style="text-align:center; font-weight:bold;width:7%">MS %</th> </tr> </thead> <?php $qry=mysqli_query($conn,"SELECT * FROM model WHERE Brand_ID = '1' order by Category_Name ASC"); $n = 1; // remember last category, to detect when it changes $last_cat = ''; while($row = $qry->fetch_assoc()) { $Category_Name = $row['Category_Name']; $Model_Name = $row['Model_Name']; // detect if the category changed if($last_cat !== $row['Category_Name']) { // test if not the first output if($last_cat !== '') { // close the previous section - output a total row ?> <tr> <td colspan="3" style="text-align:center"> <?PHP echo $last_cat; ?> TOTAL </td> <?php foreach($mon as $m) {?> <td> <input type="number" class="form-control col_Total<?=$m?>" name="col_Total_<?=$m?>[]" style="width:100%;font-size:14px;text-align:center" readonly /> </td> <?php } ?> <td> <input type="number" name="cat_Total[]" class="form-control cat_Total" style="width:100%;font-size:14px;text-align:center" readonly /> </td> <td>&nbsp;</td> </tr> <?php } // remember the new category $last_cat = $row['Category_Name']; // start a new section ?> <tbody> <?php } ?> <tr> <td align='center'> <?=$n++?> </td> <td style="text-align:center"> <?=$row['Category_Name']?> </td> <td hidden> <input type="text" name="Category_Name[]" id="Category_Name" value="<?php echo $Category_Name; ?>" style="width:100px;font-size:14px;text-align:center" readonly /> </td> <td style="text-align:center"> <?=$row['Model_Name']?> </td> <td hidden> <input type="text" name="Model_Name[]" id="Model_Name" value="<?php echo $Model_Name; ?>" style="width:100px;font-size:14px;text-align:center" readonly /> </td> <?php foreach($mon as $m) {?> <td> <input type="number" class="form-control calc <?=$m?>" name="<?=$m?>[]" style="width:100%;font-size:14px;text-align:center" /> </td> <?php } ?> <td> <input type="number" name="Total[]" class="form-control Total" style="width:100%;font-size:14px;text-align:center" readonly /> </td> <td> <input type="number" name="MS[]" class="form-control MS" style="width:100%;font-size:14px;text-align:center" readonly /> </td> <td hidden align='center'> <input type="checkbox" checked="checked" class="checkbox" name='lang[]' value="1" /> </td> </tr> <?php } // end of data loop // if there was any output, close out the last section if($last_cat !== '') { // close the previous section - output a total row ?> <tr> <td hidden> <td colspan="3" style="text-align:center"> <?PHP echo $last_cat; ?> TOTAL </td> <?php foreach($mon as $m) {?> <td> <input type="number" class="form-control col_Total<?=$m?>" name="col_Total_<?=$m?>[]" style="width:100%;font-size:14px;text-align:center" readonly /> </td> <?php } ?> <td> <input type="number" name="cat_Total[]" class="form-control cat_Total" style="width:100%;font-size:14px;text-align:center" readonly /> </td> <td>&nbsp;</td> </tr> </tbody> <?php } ?> </table> </div> </div> <div style="text-align:center"> <input type="submit" name="addInvoice" class="addInvoice" id="addInvoice" value="Submit" style="width:100px;background: #0A2558;margin-top:10px; color:white;font-family:Cambria;border-radius:5px;height:30px;" /> </div> </form> <?php if(isset($_POST['addInvoice'])){ $Dealer_ID = $_POST['Dealer_Name1']; $dealname = mysqli_query($conn, "SELECT * from users WHERE Emp_No = '$Dealer_ID'"); $dealerrow = $dealname->fetch_assoc(); $Dealername = $dealerrow['Name']; $Status = 1; $Year = date("Y"); $previousYear = $Year - 1; foreach ($_POST['lang'] as $ID => $VAL) { $Category = $_POST['Category_Name'][$ID]; $Model= $_POST['Model_Name'][$ID]; $Jan = $_POST['Jan'][$ID]; $Feb = $_POST['Feb'][$ID]; $Mar = $_POST['Mar'][$ID]; $Apr = $_POST['Apr'][$ID]; $May = $_POST['May'][$ID]; $Jun = $_POST['Jun'][$ID]; $Jul = $_POST['Jul'][$ID]; $Aug = $_POST['Aug'][$ID]; $Sep = $_POST['Sep'][$ID]; $Oct = $_POST['Oct'][$ID]; $Nov = $_POST['Nov'][$ID]; $December= $_POST['Dec'][$ID]; $Total = $_POST['Total'][$ID]; $MS = $_POST['MS'][$ID]; //$query = "UPDATE users SET Branch ='$Branch', Posting_Location ='$Posted_Location', Department='$Department', Divison='$Division', Emp_No='$Emp_No', Name='$Name', Designation='$Designation', User_Type='$User_Type', Functional_Role='$Functional_Role', Employed='$Employed', Mobile='$Mobile', Email='$Email', DOJ='$DOJ', Qualifications='$Qualifications', DOB='$DOB', Approver1_ID='$Approver1_ID', Approver1_Name='$Approver1_Name', Approver2_ID='$Approver2_ID', Approver2_Name='$Approver2_Name' , Approver='$Approver', Gender='$Gender', Blood='$Blood' WHERE id = '$ida'"; $query = "INSERT INTO lastyeardata (Dealer_ID, Dealername, Category, Model, Year, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, December, Total, MS,Status) VALUES ('$Dealer_ID','$Dealername', '$Category','$Model','$previousYear','$Jan', '$Feb','$Mar', '$Apr', '$May', '$Jun','$Jul', '$Aug', '$Sep','$Oct', '$Nov', '$December','$Total','$MS','$Status')"; $result = mysqli_query($conn, $query); if($result) { // echo "<script type='text/javascript'> document.location = 'Users.php'; </script>"; echo '<script type="text/javascript">Swal.fire({ text: "Last Year Data Details added Successfully", icon: "success", showCancelButton: false, confirmButtonColor: "#3085d6", confirmButtonText: "OK" }).then((result) => { if (result.isConfirmed) { window.location.href = "Last_Year_Data.php" } })</script>'; } else { //echo '<script type="text/javascript"> alert("Details are Not Updated.")</script>'; echo '<script type="text/javascript">Swal.fire({ text: "Details are Not Updated. Please check the details entered.", icon: "error", showCancelButton: false, confirmButtonColor: "#3085d6", confirmButtonText: "OK" }).then((result) => { if (result.isConfirmed) { window.history.back() } })</script>'; } } } ?> The calculated column total row is not updating on database. only the actual rows are updating. Please guide me how to update the column total row to databse
  7. you should not modify data, then use the modified value, as this changes the meaning of the data (ask the author's of this forum software about the email 'cleaning' they did a number of years ago that allowed hackers to create a real and valid email addresses that was similar to an administrator's, that after 'cleaning' allowed it to be used to do a password recovery for that administrator, and allowed the hackers to log in as that administrator.) you should only trim user submitted data, mainly so that you can detect if it was all white-space characters, then validate that the trimmed value meets the 'business' needs of your application. if the data is valid, use it securely in whatever context it is being used in. if the data is not valid, tell the user what was wrong with the data and let them correct and resubmit it.
  8. I have a Laravel 8 site that works perfectly but I was trying to update it to Laravel 9. The issue I'm having is trying to figure out how to send custom_args or personalizations with the new Symfony Mailer compared to the old SwiftMailer Laravel has traditionally used. I have searched and searched for code online but have found nothing at all that helps convert this. I'll be honest, I don't really even understand how the old code works exactly or where I got the info from. All I know is it works. I need to send custom_args with the mail so Sendgrid can send them back in webhooks. Without this functionality, a big part of my site will not function. If anyone knows how to convert this old code or tell me how to do it a different way, I would so greatly appreciate it. If you can give me some actual code or examples that get this working, I am happy to donate to you. The code below is an event listener on the Laravel MessageSending event. I currently use this package for the "driver" in Laravel s-ichikawa/laravel-sendgrid-driver. The code seems to indicate that I'm sending an attachment or something, but that seems kind of weird to me. I know very little about the SwiftMailer and even less about the new SymfonyMailer. <?php namespace App\Listeners; use App\Helpers\Mail\MailTrackerSetup; use Illuminate\Mail\Events\MessageSending; use Sichikawa\LaravelSendgridDriver\SendGrid; use Sichikawa\LaravelSendgridDriver\Transport\SendgridTransport; /** * Class SetSendgridCustomArg * @package App\Listeners */ class SetSendgridCustomArg { use SendGrid { sgEncode as encode; } /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param MessageSending $event * @return void */ public function handle(MessageSending $event) { $args = [ 'personalizations' => [ [ 'custom_args' => [ 'email_subject' => $event->message->getSubject(), 'domain' => settings('site_name'), ], ], ], ]; $args['personalizations'][0]['custom_args'] = array_merge( $args['personalizations'][0]['custom_args'], (new MailTrackerSetup($event->data))->getTrackingDetails()); $args = $this->mergeCustomArgs($event, $args); $event->message->embed(new \Swift_Image(static::sgEncode($args), SendgridTransport::SMTP_API_NAME)); } /** * @param $event * @param $args * @return mixed */ private function mergeCustomArgs($event, $args) { if(count($event->message->getChildren())){ foreach($event->message->getChildren() as $child){ if($child instanceof \Swift_Image){ $params = json_decode($child->getBody(), true); if(isset($params['personalizations'][0]['custom_args'])){ foreach($params['personalizations'][0]['custom_args'] as $key => $custom_arg) { $args['personalizations'][0]['custom_args'][$key] = $custom_arg; } } } } } return $args; } } This is a dump of what the personalization array and $event->message are after this code runs. The part of the SwiftMessage that holds the personalization array if waaaay towards the bottom of the dump. You'll see it in a json string. array:1 [ "personalizations" => array:1 [ 0 => array:1 [ "custom_args" => array:4 [ "email_subject" => "Remote Start Quote 102cmlzspagej5p - UNDEFINED UNDEFINED UNDEFINED anything" "domain" => "Remotely Started" "tracking_id" => 13165 "tracking_model" => "App\Models\Quote\Quote" ] ] ] ] Swift_Message锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Message.php#L16锟絓^锟絔8;;锟絓 {#5087 -headerSigners: [] -bodySigners: [] -savedMessage: [] #userFormat: null #userCharset: "utf-8" #userDelSp: null -nestingLevel: 4096 -headers: Swift_Mime_SimpleHeaderSet锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderSet.php#L16锟絓^锟絔8;;锟絓 {#5089 -factory: Swift_Mime_SimpleHeaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderFactory.php#L18锟絓^锟絔8;;锟絓 {#5090 -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5091 #charStream: Swift_CharacterStream_NgCharacterStream锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16锟絓^锟絔8;;锟絓 {#5080 -charReader: null -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16锟絓^锟絔8;;锟絓 {#5081} -charset: "utf-8" -datas: "" -datasSize: 0 -map: null -mapType: 0 -charCount: 0 -currentPos: 0 } #filter: null #safeMap: array:68 [ 97 => "a" 98 => "b" 99 => "c" 100 => "d" 101 => "e" 102 => "f" 103 => "g" 104 => "h" 105 => "i" 106 => "j" 107 => "k" 108 => "l" 109 => "m" 110 => "n" 111 => "o" 112 => "p" 113 => "q" 114 => "r" 115 => "s" 116 => "t" 117 => "u" 118 => "v" 119 => "w" 120 => "x" 121 => "y" 122 => "z" 65 => "A" 66 => "B" 67 => "C" 68 => "D" 69 => "E" 70 => "F" 71 => "G" 72 => "H" 73 => "I" 74 => "J" 75 => "K" 76 => "L" 77 => "M" 78 => "N" 79 => "O" 80 => "P" 81 => "Q" 82 => "R" 83 => "S" 84 => "T" 85 => "U" 86 => "V" 87 => "W" 88 => "X" 89 => "Y" 90 => "Z" 48 => "0" 49 => "1" 50 => "2" 51 => "3" 52 => "4" 53 => "5" 54 => "6" 55 => "7" 56 => "8" 57 => "9" 32 => " " 33 => "!" 42 => "*" 43 => "+" 45 => "-" 47 => "/" ] } -paramEncoder: Swift_Encoder_Rfc2231Encoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Encoder\Rfc2231Encoder.php#L16锟絓^锟絔8;;锟絓 {#5094 -charStream: Swift_CharacterStream_NgCharacterStream锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16锟絓^锟絔8;;锟絓 {#5092 -charReader: null -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16锟絓^锟絔8;;锟絓 {#5081} -charset: "utf-8" -datas: "" -datasSize: 0 -map: null -mapType: 0 -charCount: 0 -currentPos: 0 } } -emailValidator: Egulias\EmailValidator\EmailValidator锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8锟絓^锟絔8;;锟絓 {#5093 -lexer: Egulias\EmailValidator\EmailLexer锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailLexer.php#L7锟絓^锟絔8;;锟絓 {#5097 #charValue: array:28 [ "(" => 49 ")" => 261 "<" => 272 ">" => 273 "[" => 262 "]" => 263 ":" => 265 ";" => 275 "@" => 64 "\" => 92 "/" => 278 "," => 274 "." => 46 "'" => 39 "`" => 96 """ => 34 "-" => 264 "::" => 266 " " => 267 "\t" => 268 "\r" => 269 "\n" => 270 "\r\n" => 301 "IPv6" => 271 "{" => 276 "}" => 277 "" => null "\0" => 0 ] #hasInvalidTokens: false #previous: array:3 [ "value" => "generated" "type" => 300 "position" => 39 ] +token: array:3 [ "value" => "" "type" => null "position" => 0 ] +lookahead: null -input: "54b50e08a8c26f98eb28970cd0de604f@swift.generated" -tokens: array:22 [ 0 => array:3 [ "value" => "54" "type" => 300 "position" => 0 ] 1 => array:3 [ "value" => "b" "type" => 300 "position" => 2 ] 2 => array:3 [ "value" => "50" "type" => 300 "position" => 3 ] 3 => array:3 [ "value" => "e" "type" => 300 "position" => 5 ] 4 => array:3 [ "value" => "08" "type" => 300 "position" => 6 ] 5 => array:3 [ "value" => "a" "type" => 300 "position" => 8 ] 6 => array:3 [ "value" => "8" "type" => 300 "position" => 9 ] 7 => array:3 [ "value" => "c" "type" => 300 "position" => 10 ] 8 => array:3 [ "value" => "26" "type" => 300 "position" => 11 ] 9 => array:3 [ "value" => "f" "type" => 300 "position" => 13 ] 10 => array:3 [ "value" => "98" "type" => 300 "position" => 14 ] 11 => array:3 [ "value" => "eb" "type" => 300 "position" => 16 ] 12 => array:3 [ "value" => "28970" "type" => 300 "position" => 18 ] 13 => array:3 [ "value" => "cd" "type" => 300 "position" => 23 ] 14 => array:3 [ "value" => "0" "type" => 300 "position" => 25 ] 15 => array:3 [ "value" => "de6" "type" => 300 "position" => 26 ] 16 => array:3 [ "value" => "04" "type" => 300 "position" => 29 ] 17 => array:3 [ "value" => "f" "type" => 300 "position" => 31 ] 18 => array:3 [ "value" => "@" "type" => 64 "position" => 32 ] 19 => array:3 [ "value" => "swift" "type" => 300 "position" => 33 ] 20 => array:3 [ "value" => "." "type" => 46 "position" => 38 ] 21 => array:3 [ "value" => "generated" "type" => 300 "position" => 39 ] ] -position: 22 -peek: 0 -regex: "/([a-zA-Z_]+[46]?)|([^\x00-\x7F])|([0-9]+)|(\r\n)|(::)|(\s+?)|(.)|[\xA0-\xff]+/iu" } #warnings: [] #error: null } -charset: "utf-8" -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25锟絓^锟絔8;;锟絓 {#5098} } -headers: array:9 [ "content-transfer-encoding" => [] "content-type" => array:1 [ 0 => Swift_Mime_Headers_ParameterizedHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16锟絓^锟絔8;;锟絓 {#4749 -paramEncoder: null -params: array:4 [ "charset" => null "boundary" => "_=_swift_1708951240_14be803fe8c1d06de3618456fcb76b6a_=_" "format" => null "delsp" => null ] -value: "multipart/alternative" -name: "Content-Type" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5091} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "mime-version" => array:1 [ 0 => Swift_Mime_Headers_UnstructuredHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\UnstructuredHeader.php#L16锟絓^锟絔8;;锟絓 {#4817 -value: "1.0" -name: "MIME-Version" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5091} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "date" => array:1 [ 0 => Swift_Mime_Headers_DateHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\DateHeader.php#L16锟絓^锟絔8;;锟絓 {#4326 -dateTime: DateTimeImmutable @1708951240 {#4547 date: 2024-02-26 06:40:40.255433 America/Chicago (-06:00) } -name: "Date" -encoder: null -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "message-id" => array:1 [ 0 => Swift_Mime_Headers_IdentificationHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\IdentificationHeader.php#L20锟絓^锟絔8;;锟絓 {#4556 -ids: array:1 [ 0 => "338afa852f559198d1773c3bac20e4eb@swift.generated" ] -emailValidator: Egulias\EmailValidator\EmailValidator锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8锟絓^锟絔8;;锟絓 {#5093} -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25锟絓^锟絔8;;锟絓 {#4824} -name: "Message-ID" -encoder: null -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "from" => array:1 [ 0 => Swift_Mime_Headers_MailboxHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\MailboxHeader.php#L19锟絓^锟絔8;;锟絓 {#4553 -mailboxes: array:1 [ "info@remotelystartedmn.com" => "RemotelyStartedMN.com" ] -emailValidator: Egulias\EmailValidator\EmailValidator锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8锟絓^锟絔8;;锟絓 {#5093} -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25锟絓^锟絔8;;锟絓 {#5098} -name: "From" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5091} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "subject" => array:1 [ 0 => Swift_Mime_Headers_UnstructuredHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\UnstructuredHeader.php#L16锟絓^锟絔8;;锟絓 {#5083 -value: "Remote Start Quote 102cmlzspagej5p - UNDEFINED UNDEFINED UNDEFINED anything" -name: "Subject" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5091} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "reply-to" => array:1 [ 0 => Swift_Mime_Headers_MailboxHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\MailboxHeader.php#L19锟絓^锟絔8;;锟絓 {#5086 -mailboxes: array:1 [ "info@remotelystartedmn.com" => "RemotelyStartedMN.com" ] -emailValidator: Egulias\EmailValidator\EmailValidator锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8锟絓^锟絔8;;锟絓 {#5093} -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25锟絓^锟絔8;;锟絓 {#5098} -name: "Reply-To" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5091} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "to" => array:1 [ 0 => Swift_Mime_Headers_MailboxHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\MailboxHeader.php#L19锟絓^锟絔8;;锟絓 {#5077 -mailboxes: array:1 [ "larkin.manley@example.net" => "102cmlzspagej5p" ] -emailValidator: Egulias\EmailValidator\EmailValidator锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8锟絓^锟絔8;;锟絓 {#5093} -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25锟絓^锟絔8;;锟絓 {#5098} -name: "To" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5091} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] ] -order: array:16 [ "return-path" => 0 "received" => 1 "dkim-signature" => 2 "domainkey-signature" => 3 "sender" => 4 "message-id" => 5 "date" => 6 "subject" => 7 "from" => 8 "reply-to" => 9 "to" => 10 "cc" => 11 "bcc" => 12 "mime-version" => 13 "content-type" => 14 "content-transfer-encoding" => 15 ] -required: array:3 [ "date" => 0 "message-id" => 1 "from" => 2 ] -charset: "utf-8" } -body: """ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n <html xmlns="http://www.w3.org/1999/xhtml">\n <head>\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n </head>\n <body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; background-color: #F8FAFC; color: #74787E; height: 100%; hyphens: auto; line-height: 1.4; margin: 0; -moz-hyphens: auto; -ms-word-break: break-all; width: 100% !important; -webkit-hyphens: auto; -webkit-text-size-adjust: none; word-break: break-word;">\n <style>\n @media only screen and (max-width: 600px) {\n .inner-body {\n width: 100% !important;\n }\n \n .footer {\n width: 100% !important;\n }\n }\n \n @media only screen and (max-width: 500px) {\n .button {\n width: 100% !important;\n }\n }\n </style>\n \n <table class="wrapper" width="100%" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; background-color: #F8FAFC; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">\n <tr>\n <td align="center" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n <table class="content" width="100%" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">\n <tr>\n <td class="header" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; padding: 25px 0; text-align: center;">\n <a href="http://rslaravel.localhost" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #bbbfc3; font-size: 19px; font-weight: bold; text-decoration: none; text-shadow: 0 1px 0 white;">\n RemotelyStartedMN.com\n </a>\n </td>\n </tr>\n \n <!-- Email Body -->\n <tr>\n <td class="body" width="100%" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; background-color: #FFFFFF; border-bottom: 1px solid #EDEFF2; border-top: 1px solid #EDEFF2; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">\n <table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; background-color: #FFFFFF; margin: 0 auto; padding: 0; width: 570px; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px;">\n <!-- Body content -->\n <tr>\n <td class="content-cell" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; padding: 35px;">\n <h1 style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3D4852; font-size: 19px; font-weight: bold; margin-top: 0; text-align: left;">Hi 102cmlzspagej5p,</h1>\n <p style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3D4852; font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left;">Your remote start quote is ready for viewing.</p>\n <table class="action" align="center" width="100%" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; margin: 30px auto; padding: 0; text-align: center; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">\n <tr>\n <td align="center" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n <table width="100%" border="0" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n <tr>\n <td align="center" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n <table border="0" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n <tr>\n <td style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n <a href="http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1" class="button button-primary" target="_blank" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; border-radius: 3px; box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); color: #FFF; display: inline-block; text-decoration: none; -webkit-text-size-adjust: none; background-color: #3490DC; border-top: 10px solid #3490DC; border-right: 18px solid #3490DC; border-bottom: 10px solid #3490DC; border-left: 18px solid #3490DC;">View Your Quote</a>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n <p style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3D4852; font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left;">After you have viewed your quote, if you have any questions please feel free to call, text or email us. We're looking forward to helping you stay warm this\n winter.</p>\n <p style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3D4852; font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left;">If you are having problems with the button above you can copy/paste this direct link into your browser.\n <a href="http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1" target="_blank" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3869D4;">http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1</a></p>\n \n \n \n </td>\n </tr>\n </table>\n </td>\n </tr>\n \n <tr>\n <td style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;">\n <table class="footer" align="center" width="570" cellpadding="0" cellspacing="0" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; margin: 0 auto; padding: 0; text-align: center; width: 570px; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px;">\n <tr>\n <td class="content-cell" align="center" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; padding: 35px;">\n <table class="social" width="100%" style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; width: 100%; background: #FFFFFF; margin: 0; padding: 0;" bgcolor="#DFE4E8">\n <tr style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">\n <td style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">\n <!-- column 1 -->\n <table align="left" class="column" style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; float: left; margin: 0; padding: 0;">\n <tr style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">\n <td style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 15px;">\n <h5 class="" style="box-sizing: border-box; font-family: 'HelveticaNeue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; line-height: 1.1; color: #000; font-weight: 900; font-size: 17px; margin: 0 0 15px; padding: 0;">Connect with Us:</h5>\n <p class="" style="box-sizing: border-box; margin-top: 0; color: #AEAEAE; text-align: center; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; font-size: 14px; line-height: 1.6; margin: 0 0 10px; padding: 0;">\n <a href="https://www.facebook.com/remotelystartedmn" target="_blank" class="button button-primary" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; border-radius: 3px; box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); color: #FFF; display: inline-block; text-decoration: none; -webkit-text-size-adjust: none; background-color: #3490DC; border-top: 10px solid #3490DC; border-right: 18px solid #3490DC; border-bottom: 10px solid #3490DC; border-left: 18px solid #3490DC; margin-bottom: 8px;">Facebook</a>\n <a href="https://www.youtube.com/channel/UCJP-aaTX0XeqIWGhPrCQDRA" target="_blank" class="button button-error" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; border-radius: 3px; box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); color: #FFF; display: inline-block; text-decoration: none; -webkit-text-size-adjust: none; background-color: #E3342F; border-top: 10px solid #E3342F; border-right: 18px solid #E3342F; border-bottom: 10px solid #E3342F; border-left: 18px solid #E3342F; margin-bottom: 8px;">Youtube</a>\n </p>\n </td>\n </tr>\n </table>\n <!-- /column 1 --><!-- column 2 -->\n <table align="left" class="column" style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; float: left; margin: 0; padding: 0;">\n <tr style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">\n <td style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 15px; height: 119px;">\n \n <h5 class="" style="box-sizing: border-box; font-family: 'HelveticaNeue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; line-height: 1.1; color: #000; font-weight: 900; font-size: 17px; margin: 0 0 15px; padding: 0;">Contact Info:</h5>\n <p style="box-sizing: border-box; margin-top: 0; color: #AEAEAE; text-align: center; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-weight: normal; font-size: 14px; line-height: 1.6; margin: 0 0 10px; padding: 0;">JD &amp; Brooklynn<br>\n \t\t\t\t\t\t\t\t\t\t\t\t14802 Dundee Ave<br>Apple Valley, MN 55124\n <br><br>\n Phone: <strong style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">612-840-1039</strong><br style="font-family: 'Helvetica Neue', 'Helvetica',\n Helvetica, Arial,\n sans-serif;\n margin: 0; padding: 0;">\n Email: <!--<strong style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin:\n 0; padding: 0;">--><a href="mailto:info@remotelystartedmn.com" style="box-sizing: border-box; color: #3869D4; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; margin: 0; padding: 0;">info@remotelystartedmn.com</a><!--</strong>--></p>\n \n </td>\n </tr>\n </table>\n <!-- /column 2 -->\n <span class="clear" style="box-sizing: border-box; font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; display: block; clear: both; margin: 0; padding: 0;"></span>\n \n </td>\n </tr>\n </table>\n <br>\n <p style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; line-height: 1.5em; margin-top: 0; color: #AEAEAE; font-size: 12px; text-align: center;">漏 2024 RemotelyStartedMN.com. All rights reserved.</p>\n \n <small style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box;"><a href="http://rslaravel.localhost/web_site_terms_and_conditions_of_use.html" target="_blank" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3869D4;">Terms</a> |\n <a href="http://rslaravel.localhost/privacy" target="_blank" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; box-sizing: border-box; color: #3869D4;">Privacy</a>\n \n </small>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n </body>\n </html> """ -encoder: Swift_Mime_ContentEncoder_QpContentEncoderProxy锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\QpContentEncoderProxy.php#L18锟絓^锟絔8;;锟絓 {#5095 -safeEncoder: Swift_Mime_ContentEncoder_QpContentEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\QpContentEncoder.php#L16锟絓^锟絔8;;锟絓 {#5096 #dotEscape: false #charStream: Swift_CharacterStream_NgCharacterStream锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16锟絓^锟絔8;;锟絓 {#4650 -charReader: null -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16锟絓^锟絔8;;锟絓 {#5081} -charset: "utf-8" -datas: "" -datasSize: 0 -map: null -mapType: 0 -charCount: 0 -currentPos: 0 } #filter: Swift_StreamFilters_ByteArrayReplacementFilter锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\StreamFilters\ByteArrayReplacementFilter.php#L18锟絓^锟絔8;;锟絓 {#4648 -replace: array:3 [ 0 => array:2 [ 0 => 13 1 => 10 ] 1 => array:2 [ 0 => 13 1 => 10 ] 2 => array:2 [ 0 => 13 1 => 10 ] ] -index: array:2 [ 13 => true 10 => true ] -tree: array:2 [ 13 => array:3 [ 10 => array:2 [ -1 => 0 -2 => 2 ] -1 => 1 -2 => 1 ] 10 => array:2 [ -1 => 2 -2 => 1 ] ] -treeMaxLen: 2 -repSize: array:3 [ 2 => 2 1 => 2 0 => 2 ] } #safeMap: array:95 [ 9 => "\t" 32 => " " 33 => "!" 34 => """ 35 => "#" 36 => "$" 37 => "%" 38 => "&" 39 => "'" 40 => "(" 41 => ")" 42 => "*" 43 => "+" 44 => "," 45 => "-" 46 => "." 47 => "/" 48 => "0" 49 => "1" 50 => "2" 51 => "3" 52 => "4" 53 => "5" 54 => "6" 55 => "7" 56 => "8" 57 => "9" 58 => ":" 59 => ";" 60 => "<" 62 => ">" 63 => "?" 64 => "@" 65 => "A" 66 => "B" 67 => "C" 68 => "D" 69 => "E" 70 => "F" 71 => "G" 72 => "H" 73 => "I" 74 => "J" 75 => "K" 76 => "L" 77 => "M" 78 => "N" 79 => "O" 80 => "P" 81 => "Q" 82 => "R" 83 => "S" 84 => "T" 85 => "U" 86 => "V" 87 => "W" 88 => "X" 89 => "Y" 90 => "Z" 91 => "[" 92 => "\" 93 => "]" 94 => "^" 95 => "_" 96 => "`" 97 => "a" 98 => "b" 99 => "c" 100 => "d" 101 => "e" 102 => "f" 103 => "g" 104 => "h" 105 => "i" 106 => "j" 107 => "k" 108 => "l" 109 => "m" 110 => "n" 111 => "o" 112 => "p" 113 => "q" 114 => "r" 115 => "s" 116 => "t" 117 => "u" 118 => "v" 119 => "w" 120 => "x" 121 => "y" 122 => "z" 123 => "{" 124 => "|" 125 => "}" 126 => "~" ] } -nativeEncoder: Swift_Mime_ContentEncoder_NativeQpContentEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\NativeQpContentEncoder.php#L16锟絓^锟絔8;;锟絓 {#4649 -charset: "utf-8" } -charset: "utf-8" } -idGenerator: Swift_Mime_IdGenerator锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\IdGenerator.php#L14锟絓^锟絔8;;锟絓 {#4652 -idRight: "swift.generated" } -boundary: "_=_swift_1708951240_14be803fe8c1d06de3618456fcb76b6a_=_" -compositeRanges: array:3 [ "multipart/mixed" => array:2 [ 0 => 16 1 => 256 ] "multipart/alternative" => array:2 [ 0 => 256 1 => 4096 ] "multipart/related" => array:2 [ 0 => 4096 1 => 65536 ] ] -compoundLevelFilters: array:1 [ 69632 => array:1 [ 4096 => array:2 [ "text/plain" => 4096 "text/html" => 65536 ] ] ] -cache: Swift_KeyCache_DiskKeyCache锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\DiskKeyCache.php#L16锟絓^锟絔8;;锟絓 {#4530 -stream: Swift_KeyCache_SimpleKeyCacheInputStream锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\SimpleKeyCacheInputStream.php#L16锟絓^锟絔8;;锟絓 {#4656 -keyCache: null -nsKey: null -itemKey: null -writeThrough: null } -path: "C:\Users\fasts\AppData\Local\Temp" -keys: [] } -immediateChildren: array:2 [ 0 => Swift_MimePart锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\MimePart.php#L16锟絓^锟絔8;;锟絓 {#5076 #userFormat: null #userCharset: "utf-8" #userDelSp: null -nestingLevel: 4096 -headers: Swift_Mime_SimpleHeaderSet锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderSet.php#L16锟絓^锟絔8;;锟絓 {#5078 -factory: Swift_Mime_SimpleHeaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderFactory.php#L18锟絓^锟絔8;;锟絓 {#5082 -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5074 #charStream: Swift_CharacterStream_NgCharacterStream锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16锟絓^锟絔8;;锟絓 {#5073 -charReader: null -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16锟絓^锟絔8;;锟絓 {#5081} -charset: "utf-8" -datas: "" -datasSize: 0 -map: null -mapType: 0 -charCount: 0 -currentPos: 0 } #filter: null #safeMap: array:68 [ 97 => "a" 98 => "b" 99 => "c" 100 => "d" 101 => "e" 102 => "f" 103 => "g" 104 => "h" 105 => "i" 106 => "j" 107 => "k" 108 => "l" 109 => "m" 110 => "n" 111 => "o" 112 => "p" 113 => "q" 114 => "r" 115 => "s" 116 => "t" 117 => "u" 118 => "v" 119 => "w" 120 => "x" 121 => "y" 122 => "z" 65 => "A" 66 => "B" 67 => "C" 68 => "D" 69 => "E" 70 => "F" 71 => "G" 72 => "H" 73 => "I" 74 => "J" 75 => "K" 76 => "L" 77 => "M" 78 => "N" 79 => "O" 80 => "P" 81 => "Q" 82 => "R" 83 => "S" 84 => "T" 85 => "U" 86 => "V" 87 => "W" 88 => "X" 89 => "Y" 90 => "Z" 48 => "0" 49 => "1" 50 => "2" 51 => "3" 52 => "4" 53 => "5" 54 => "6" 55 => "7" 56 => "8" 57 => "9" 32 => " " 33 => "!" 42 => "*" 43 => "+" 45 => "-" 47 => "/" ] } -paramEncoder: Swift_Encoder_Rfc2231Encoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Encoder\Rfc2231Encoder.php#L16锟絓^锟絔8;;锟絓 {#5075 -charStream: Swift_CharacterStream_NgCharacterStream锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16锟絓^锟絔8;;锟絓 {#5070 -charReader: null -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16锟絓^锟絔8;;锟絓 {#5081} -charset: "utf-8" -datas: "" -datasSize: 0 -map: null -mapType: 0 -charCount: 0 -currentPos: 0 } } -emailValidator: Egulias\EmailValidator\EmailValidator锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8锟絓^锟絔8;;锟絓 {#5093} -charset: "utf-8" -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25锟絓^锟絔8;;锟絓 {#5069} } -headers: array:2 [ "content-transfer-encoding" => array:1 [ 0 => Swift_Mime_Headers_UnstructuredHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\UnstructuredHeader.php#L16锟絓^锟絔8;;锟絓 {#5079 -value: "quoted-printable" -name: "Content-Transfer-Encoding" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5074} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "content-type" => array:1 [ 0 => Swift_Mime_Headers_ParameterizedHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16锟絓^锟絔8;;锟絓 {#5068 -paramEncoder: null -params: array:1 [ "charset" => "utf-8" ] -value: "text/plain" -name: "Content-Type" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5074} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] ] -order: array:2 [ "content-type" => 0 "content-transfer-encoding" => 1 ] -required: [] -charset: "utf-8" } -body: """ [RemotelyStartedMN.com](http://rslaravel.localhost)\n \n # Hi 102cmlzspagej5p,\n Your remote start quote is ready for viewing.\n \n View Your Quote: http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1\n \n After you have viewed your quote, if you have any questions please feel free to call, text or email us. We're looking forward to helping you stay warm this\n winter.\n \n If you are having problems with the button above you can copy/paste this direct link into your browser.\n http://rslaravel.localhost/quote/13165/TMbQbCfekVbiFIOpOKsq?e=1\n \n 漏 2024 RemotelyStartedMN.com. All rights reserved.\n """ -encoder: Swift_Mime_ContentEncoder_QpContentEncoderProxy锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\QpContentEncoderProxy.php#L18锟絓^锟絔8;;锟絓 {#5095} -idGenerator: Swift_Mime_IdGenerator锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\IdGenerator.php#L14锟絓^锟絔8;;锟絓 {#4652} -boundary: null -compositeRanges: array:3 [ "multipart/mixed" => array:2 [ 0 => 16 1 => 256 ] "multipart/alternative" => array:2 [ 0 => 256 1 => 4096 ] "multipart/related" => array:2 [ 0 => 4096 1 => 65536 ] ] -compoundLevelFilters: array:1 [ 69632 => array:1 [ 4096 => array:2 [ "text/plain" => 4096 "text/html" => 65536 ] ] ] -cache: Swift_KeyCache_DiskKeyCache锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\DiskKeyCache.php#L16锟絓^锟絔8;;锟絓 {#4530} -immediateChildren: [] -children: [] -maxLineLength: 78 -alternativePartOrder: array:3 [ "text/plain" => 1 "text/html" => 2 "multipart/related" => 3 ] -id: "fcb229d0127bd3c1128ee42d3dd65071@swift.generated" -cacheKey: "9e2120edad7d53694e66f0473a03ad78" #userContentType: "text/plain" -nestingLevel: 4096 } 1 => Swift_Mime_SimpleMimeEntity锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleMimeEntity.php#L16锟絓^锟絔8;;锟絓 {#5050 -headers: Swift_Mime_SimpleHeaderSet锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderSet.php#L16锟絓^锟絔8;;锟絓 {#5049 -factory: Swift_Mime_SimpleHeaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderFactory.php#L18锟絓^锟絔8;;锟絓 {#5090} -headers: array:2 [ "content-transfer-encoding" => [] "content-type" => array:1 [ 0 => Swift_Mime_Headers_ParameterizedHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16锟絓^锟絔8;;锟絓 {#5048 -paramEncoder: null -params: array:1 [ "boundary" => "_=_swift_1708951240_657b30b94e42e05c9b76e6c691afa97a_=_" ] -value: "multipart/related" -name: "Content-Type" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5091} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] ] -order: array:2 [ "content-type" => 0 "content-transfer-encoding" => 1 ] -required: [] -charset: null } -body: null -encoder: Swift_Mime_ContentEncoder_QpContentEncoderProxy锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\QpContentEncoderProxy.php#L18锟絓^锟絔8;;锟絓 {#5095} -idGenerator: Swift_Mime_IdGenerator锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\IdGenerator.php#L14锟絓^锟絔8;;锟絓 {#4652} -boundary: "_=_swift_1708951240_657b30b94e42e05c9b76e6c691afa97a_=_" -compositeRanges: array:3 [ "multipart/mixed" => array:2 [ 0 => 16 1 => 256 ] "multipart/alternative" => array:2 [ 0 => 256 1 => 4096 ] "multipart/related" => array:2 [ 0 => 4096 1 => 65536 ] ] -compoundLevelFilters: array:1 [ 69632 => array:1 [ 4096 => array:2 [ "text/plain" => 4096 "text/html" => 65536 ] ] ] -nestingLevel: 4096 -cache: Swift_KeyCache_DiskKeyCache锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\DiskKeyCache.php#L16锟絓^锟絔8;;锟絓 {#4530} -immediateChildren: array:1 [ 0 => Swift_Image锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Image.php#L16锟絓^锟絔8;;锟絓 {#5059 -mimeTypes: array:986 [ "3dml" => "text/vnd.in3d.3dml" "3ds" => "image/x-3ds" "3g2" => "video/3gpp2" "3gp" => "video/3gpp" "7z" => "application/x-7z-compressed" "aab" => "application/x-authorware-bin" "aac" => "audio/x-aac" "aam" => "application/x-authorware-map" "aas" => "application/x-authorware-seg" "abw" => "application/x-abiword" "ac" => "application/pkix-attr-cert" "acc" => "application/vnd.americandynamics.acc" "ace" => "application/x-ace-compressed" "acu" => "application/vnd.acucobol" "acutc" => "application/vnd.acucorp" "adp" => "audio/adpcm" "aep" => "application/vnd.audiograph" "afm" => "application/x-font-type1" "afp" => "application/vnd.ibm.modcap" "ahead" => "application/vnd.ahead.space" "ai" => "application/postscript" "aif" => "audio/x-aiff" "aifc" => "audio/x-aiff" "aiff" => "audio/x-aiff" "air" => "application/vnd.adobe.air-application-installer-package+zip" "ait" => "application/vnd.dvb.ait" "ami" => "application/vnd.amiga.ami" "apk" => "application/vnd.android.package-archive" "appcache" => "text/cache-manifest" "apr" => "application/vnd.lotus-approach" "aps" => "application/postscript" "arc" => "application/x-freearc" "asc" => "application/pgp-signature" "asf" => "video/x-ms-asf" "asm" => "text/x-asm" "aso" => "application/vnd.accpac.simply.aso" "asx" => "video/x-ms-asf" "atc" => "application/vnd.acucorp" "atom" => "application/atom+xml" "atomcat" => "application/atomcat+xml" "atomsvc" => "application/atomsvc+xml" "atx" => "application/vnd.antix.game-component" "au" => "audio/basic" "avi" => "video/x-msvideo" "aw" => "application/applixware" "azf" => "application/vnd.airzip.filesecure.azf" "azs" => "application/vnd.airzip.filesecure.azs" "azw" => "application/vnd.amazon.ebook" "bat" => "application/x-msdownload" "bcpio" => "application/x-bcpio" "bdf" => "application/x-font-bdf" "bdm" => "application/vnd.syncml.dm+wbxml" "bed" => "application/vnd.realvnc.bed" "bh2" => "application/vnd.fujitsu.oasysprs" "bin" => "application/octet-stream" "blb" => "application/x-blorb" "blorb" => "application/x-blorb" "bmi" => "application/vnd.bmi" "bmp" => "image/bmp" "book" => "application/vnd.framemaker" "box" => "application/vnd.previewsystems.box" "boz" => "application/x-bzip2" "bpk" => "application/octet-stream" "btif" => "image/prs.btif" "bz" => "application/x-bzip" "bz2" => "application/x-bzip2" "c" => "text/x-c" "c11amc" => "application/vnd.cluetrust.cartomobile-config" "c11amz" => "application/vnd.cluetrust.cartomobile-config-pkg" "c4d" => "application/vnd.clonk.c4group" "c4f" => "application/vnd.clonk.c4group" "c4g" => "application/vnd.clonk.c4group" "c4p" => "application/vnd.clonk.c4group" "c4u" => "application/vnd.clonk.c4group" "cab" => "application/vnd.ms-cab-compressed" "caf" => "audio/x-caf" "cap" => "application/vnd.tcpdump.pcap" "car" => "application/vnd.curl.car" "cat" => "application/vnd.ms-pki.seccat" "cb7" => "application/x-cbr" "cba" => "application/x-cbr" "cbr" => "application/x-cbr" "cbt" => "application/x-cbr" "cbz" => "application/x-cbr" "cc" => "text/x-c" "cct" => "application/x-director" "ccxml" => "application/ccxml+xml" "cdbcmsg" => "application/vnd.contact.cmsg" "cdf" => "application/x-netcdf" "cdkey" => "application/vnd.mediastation.cdkey" "cdmia" => "application/cdmi-capability" "cdmic" => "application/cdmi-container" "cdmid" => "application/cdmi-domain" "cdmio" => "application/cdmi-object" "cdmiq" => "application/cdmi-queue" "cdx" => "chemical/x-cdx" "cdxml" => "application/vnd.chemdraw+xml" "cdy" => "application/vnd.cinderella" "cer" => "application/pkix-cert" "cfs" => "application/x-cfs-compressed" "cgm" => "image/cgm" "chat" => "application/x-chat" "chm" => "application/vnd.ms-htmlhelp" "chrt" => "application/vnd.kde.kchart" "cif" => "chemical/x-cif" "cii" => "application/vnd.anser-web-certificate-issue-initiation" "cil" => "application/vnd.ms-artgalry" "cla" => "application/vnd.claymore" "class" => "application/java-vm" "clkk" => "application/vnd.crick.clicker.keyboard" "clkp" => "application/vnd.crick.clicker.palette" "clkt" => "application/vnd.crick.clicker.template" "clkw" => "application/vnd.crick.clicker.wordbank" "clkx" => "application/vnd.crick.clicker" "clp" => "application/x-msclip" "cmc" => "application/vnd.cosmocaller" "cmdf" => "chemical/x-cmdf" "cml" => "chemical/x-cml" "cmp" => "application/vnd.yellowriver-custom-menu" "cmx" => "image/x-cmx" "cod" => "application/vnd.rim.cod" "com" => "application/x-msdownload" "conf" => "text/plain" "cpio" => "application/x-cpio" "cpp" => "text/x-c" "cpt" => "application/mac-compactpro" "crd" => "application/x-mscardfile" "crl" => "application/pkix-crl" "crt" => "application/x-x509-ca-cert" "csh" => "application/x-csh" "csml" => "chemical/x-csml" "csp" => "application/vnd.commonspace" "css" => "text/css" "cst" => "application/x-director" "csv" => "text/csv" "cu" => "application/cu-seeme" "curl" => "text/vnd.curl" "cww" => "application/prs.cww" "cxt" => "application/x-director" "cxx" => "text/x-c" "dae" => "model/vnd.collada+xml" "daf" => "application/vnd.mobius.daf" "dart" => "application/vnd.dart" "dataless" => "application/vnd.fdsn.seed" "davmount" => "application/davmount+xml" "dbk" => "application/docbook+xml" "dcr" => "application/x-director" "dcurl" => "text/vnd.curl.dcurl" "dd2" => "application/vnd.oma.dd2+xml" "ddd" => "application/vnd.fujixerox.ddd" "deb" => "application/x-debian-package" "def" => "text/plain" "deploy" => "application/octet-stream" "der" => "application/x-x509-ca-cert" "dfac" => "application/vnd.dreamfactory" "dgc" => "application/x-dgc-compressed" "dic" => "text/x-c" "dir" => "application/x-director" "dis" => "application/vnd.mobius.dis" "dist" => "application/octet-stream" "distz" => "application/octet-stream" "djv" => "image/vnd.djvu" "djvu" => "image/vnd.djvu" "dll" => "application/x-msdownload" "dmg" => "application/x-apple-diskimage" "dmp" => "application/vnd.tcpdump.pcap" "dms" => "application/octet-stream" "dna" => "application/vnd.dna" "doc" => "application/msword" "docm" => "application/vnd.ms-word.document.macroenabled.12" "docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document" "dot" => "application/msword" "dotm" => "application/vnd.ms-word.template.macroenabled.12" "dotx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.template" "dp" => "application/vnd.osgi.dp" "dpg" => "application/vnd.dpgraph" "dra" => "audio/vnd.dra" "dsc" => "text/prs.lines.tag" "dssc" => "application/dssc+der" "dtb" => "application/x-dtbook+xml" "dtd" => "application/xml-dtd" "dts" => "audio/vnd.dts" "dtshd" => "audio/vnd.dts.hd" "dump" => "application/octet-stream" "dvb" => "video/vnd.dvb.file" "dvi" => "application/x-dvi" "dwf" => "model/vnd.dwf" "dwg" => "image/vnd.dwg" "dxf" => "image/vnd.dxf" "dxp" => "application/vnd.spotfire.dxp" "dxr" => "application/x-director" "ecelp4800" => "audio/vnd.nuera.ecelp4800" "ecelp7470" => "audio/vnd.nuera.ecelp7470" "ecelp9600" => "audio/vnd.nuera.ecelp9600" "ecma" => "application/ecmascript" "edm" => "application/vnd.novadigm.edm" "edx" => "application/vnd.novadigm.edx" "efif" => "application/vnd.picsel" "ei6" => "application/vnd.pg.osasli" "elc" => "application/octet-stream" "emf" => "application/x-msmetafile" "eml" => "message/rfc822" "emma" => "application/emma+xml" "emz" => "application/x-msmetafile" "eol" => "audio/vnd.digital-winds" "eot" => "application/vnd.ms-fontobject" "eps" => "application/postscript" "epub" => "application/epub+zip" "es3" => "application/vnd.eszigno3+xml" "esa" => "application/vnd.osgi.subsystem" "esf" => "application/vnd.epson.esf" "et3" => "application/vnd.eszigno3+xml" "etx" => "text/x-setext" "eva" => "application/x-eva" "evy" => "application/x-envoy" "exe" => "application/x-msdownload" "exi" => "application/exi" "ext" => "application/vnd.novadigm.ext" "ez" => "application/andrew-inset" "ez2" => "application/vnd.ezpix-album" "ez3" => "application/vnd.ezpix-package" "f" => "text/x-fortran" "f4v" => "video/x-f4v" "f77" => "text/x-fortran" "f90" => "text/x-fortran" "fbs" => "image/vnd.fastbidsheet" "fcdt" => "application/vnd.adobe.formscentral.fcdt" "fcs" => "application/vnd.isac.fcs" "fdf" => "application/vnd.fdf" "fe_launch" => "application/vnd.denovo.fcselayout-link" "fg5" => "application/vnd.fujitsu.oasysgp" "fgd" => "application/x-director" "fh" => "image/x-freehand" "fh4" => "image/x-freehand" "fh5" => "image/x-freehand" "fh7" => "image/x-freehand" "fhc" => "image/x-freehand" "fig" => "application/x-xfig" "flac" => "audio/x-flac" "fli" => "video/x-fli" "flo" => "application/vnd.micrografx.flo" "flv" => "video/x-flv" "flw" => "application/vnd.kde.kivio" "flx" => "text/vnd.fmi.flexstor" "fly" => "text/vnd.fly" "fm" => "application/vnd.framemaker" "fnc" => "application/vnd.frogans.fnc" "for" => "text/x-fortran" "fpx" => "image/vnd.fpx" "frame" => "application/vnd.framemaker" "fsc" => "application/vnd.fsc.weblaunch" "fst" => "image/vnd.fst" "ftc" => "application/vnd.fluxtime.clip" "fti" => "application/vnd.anser-web-funds-transfer-initiation" "fvt" => "video/vnd.fvt" "fxp" => "application/vnd.adobe.fxp" "fxpl" => "application/vnd.adobe.fxp" "fzs" => "application/vnd.fuzzysheet" "g2w" => "application/vnd.geoplan" "g3" => "image/g3fax" "g3w" => "application/vnd.geospace" "gac" => "application/vnd.groove-account" "gam" => "application/x-tads" "gbr" => "application/rpki-ghostbusters" "gca" => "application/x-gca-compressed" "gdl" => "model/vnd.gdl" "geo" => "application/vnd.dynageo" "gex" => "application/vnd.geometry-explorer" "ggb" => "application/vnd.geogebra.file" "ggt" => "application/vnd.geogebra.tool" "ghf" => "application/vnd.groove-help" "gif" => "image/gif" "gim" => "application/vnd.groove-identity-message" "gml" => "application/gml+xml" "gmx" => "application/vnd.gmx" "gnumeric" => "application/x-gnumeric" "gph" => "application/vnd.flographit" "gpx" => "application/gpx+xml" "gqf" => "application/vnd.grafeq" "gqs" => "application/vnd.grafeq" "gram" => "application/srgs" "gramps" => "application/x-gramps-xml" "gre" => "application/vnd.geometry-explorer" "grv" => "application/vnd.groove-injector" "grxml" => "application/srgs+xml" "gsf" => "application/x-font-ghostscript" "gtar" => "application/x-gtar" "gtm" => "application/vnd.groove-tool-message" "gtw" => "model/vnd.gtw" "gv" => "text/vnd.graphviz" "gxf" => "application/gxf" "gxt" => "application/vnd.geonext" "gz" => "application/x-gzip" "h" => "text/x-c" "h261" => "video/h261" "h263" => "video/h263" "h264" => "video/h264" "hal" => "application/vnd.hal+xml" "hbci" => "application/vnd.hbci" "hdf" => "application/x-hdf" "hh" => "text/x-c" "hlp" => "application/winhlp" "hpgl" => "application/vnd.hp-hpgl" "hpid" => "application/vnd.hp-hpid" "hps" => "application/vnd.hp-hps" "hqx" => "application/mac-binhex40" "htke" => "application/vnd.kenameaapp" "htm" => "text/html" "html" => "text/html" "hvd" => "application/vnd.yamaha.hv-dic" "hvp" => "application/vnd.yamaha.hv-voice" "hvs" => "application/vnd.yamaha.hv-script" "i2g" => "application/vnd.intergeo" "icc" => "application/vnd.iccprofile" "ice" => "x-conference/x-cooltalk" "icm" => "application/vnd.iccprofile" "ico" => "image/x-icon" "ics" => "text/calendar" "ief" => "image/ief" "ifb" => "text/calendar" "ifm" => "application/vnd.shana.informed.formdata" "iges" => "model/iges" "igl" => "application/vnd.igloader" "igm" => "application/vnd.insors.igm" "igs" => "model/iges" "igx" => "application/vnd.micrografx.igx" "iif" => "application/vnd.shana.informed.interchange" "imp" => "application/vnd.accpac.simply.imp" "ims" => "application/vnd.ms-ims" "in" => "text/plain" "ink" => "application/inkml+xml" "inkml" => "application/inkml+xml" "install" => "application/x-install-instructions" "iota" => "application/vnd.astraea-software.iota" "ipfix" => "application/ipfix" "ipk" => "application/vnd.shana.informed.package" "irm" => "application/vnd.ibm.rights-management" "irp" => "application/vnd.irepository.package+xml" "iso" => "application/x-iso9660-image" "itp" => "application/vnd.shana.informed.formtemplate" "ivp" => "application/vnd.immervision-ivp" "ivu" => "application/vnd.immervision-ivu" "jad" => "text/vnd.sun.j2me.app-descriptor" "jam" => "application/vnd.jam" "jar" => "application/java-archive" "java" => "text/x-java-source" "jisp" => "application/vnd.jisp" "jlt" => "application/vnd.hp-jlyt" "jnlp" => "application/x-java-jnlp-file" "joda" => "application/vnd.joost.joda-archive" "jpe" => "image/jpeg" "jpeg" => "image/jpeg" "jpg" => "image/jpeg" "jpgm" => "video/jpm" "jpgv" => "video/jpeg" "jpm" => "video/jpm" "js" => "application/javascript" "json" => "application/json" "jsonml" => "application/jsonml+json" "kar" => "audio/midi" "karbon" => "application/vnd.kde.karbon" "kfo" => "application/vnd.kde.kformula" "kia" => "application/vnd.kidspiration" "kml" => "application/vnd.google-earth.kml+xml" "kmz" => "application/vnd.google-earth.kmz" "kne" => "application/vnd.kinar" "knp" => "application/vnd.kinar" "kon" => "application/vnd.kde.kontour" "kpr" => "application/vnd.kde.kpresenter" "kpt" => "application/vnd.kde.kpresenter" "kpxx" => "application/vnd.ds-keypoint" "ksp" => "application/vnd.kde.kspread" "ktr" => "application/vnd.kahootz" "ktx" => "image/ktx" "ktz" => "application/vnd.kahootz" "kwd" => "application/vnd.kde.kword" "kwt" => "application/vnd.kde.kword" "lasxml" => "application/vnd.las.las+xml" "latex" => "application/x-latex" "lbd" => "application/vnd.llamagraphics.life-balance.desktop" "lbe" => "application/vnd.llamagraphics.life-balance.exchange+xml" "les" => "application/vnd.hhe.lesson-player" "lha" => "application/x-lzh-compressed" "link66" => "application/vnd.route66.link66+xml" "list" => "text/plain" "list3820" => "application/vnd.ibm.modcap" "listafp" => "application/vnd.ibm.modcap" "lnk" => "application/x-ms-shortcut" "log" => "text/plain" "lostxml" => "application/lost+xml" "lrf" => "application/octet-stream" "lrm" => "application/vnd.ms-lrm" "ltf" => "application/vnd.frogans.ltf" "lvp" => "audio/vnd.lucent.voice" "lwp" => "application/vnd.lotus-wordpro" "lzh" => "application/x-lzh-compressed" "m13" => "application/x-msmediaview" "m14" => "application/x-msmediaview" "m1v" => "video/mpeg" "m21" => "application/mp21" "m2a" => "audio/mpeg" "m2v" => "video/mpeg" "m3a" => "audio/mpeg" "m3u" => "audio/x-mpegurl" "m3u8" => "application/vnd.apple.mpegurl" "m4a" => "audio/mp4" "m4u" => "video/vnd.mpegurl" "m4v" => "video/x-m4v" "ma" => "application/mathematica" "mads" => "application/mads+xml" "mag" => "application/vnd.ecowin.chart" "maker" => "application/vnd.framemaker" "man" => "text/troff" "mar" => "application/octet-stream" "mathml" => "application/mathml+xml" "mb" => "application/mathematica" "mbk" => "application/vnd.mobius.mbk" "mbox" => "application/mbox" "mc1" => "application/vnd.medcalcdata" "mcd" => "application/vnd.mcd" "mcurl" => "text/vnd.curl.mcurl" "mdb" => "application/x-msaccess" "mdi" => "image/vnd.ms-modi" "me" => "text/troff" "mesh" => "model/mesh" "meta4" => "application/metalink4+xml" "metalink" => "application/metalink+xml" "mets" => "application/mets+xml" "mfm" => "application/vnd.mfmp" "mft" => "application/rpki-manifest" "mgp" => "application/vnd.osgeo.mapguide.package" "mgz" => "application/vnd.proteus.magazine" "mid" => "audio/midi" "midi" => "audio/midi" "mie" => "application/x-mie" "mif" => "application/vnd.mif" "mime" => "message/rfc822" "mj2" => "video/mj2" "mjp2" => "video/mj2" "mk3d" => "video/x-matroska" "mka" => "audio/x-matroska" "mks" => "video/x-matroska" "mkv" => "video/x-matroska" "mlp" => "application/vnd.dolby.mlp" "mmd" => "application/vnd.chipnuts.karaoke-mmd" "mmf" => "application/vnd.smaf" "mmr" => "image/vnd.fujixerox.edmics-mmr" "mng" => "video/x-mng" "mny" => "application/x-msmoney" "mobi" => "application/x-mobipocket-ebook" "mods" => "application/mods+xml" "mov" => "video/quicktime" "movie" => "video/x-sgi-movie" "mp2" => "audio/mpeg" "mp21" => "application/mp21" "mp2a" => "audio/mpeg" "mp3" => "audio/mpeg" "mp4" => "video/mp4" "mp4a" => "audio/mp4" "mp4s" => "application/mp4" "mp4v" => "video/mp4" "mpc" => "application/vnd.mophun.certificate" "mpe" => "video/mpeg" "mpeg" => "video/mpeg" "mpg" => "video/mpeg" "mpg4" => "video/mp4" "mpga" => "audio/mpeg" "mpkg" => "application/vnd.apple.installer+xml" "mpm" => "application/vnd.blueice.multipass" "mpn" => "application/vnd.mophun.application" "mpp" => "application/vnd.ms-project" "mpt" => "application/vnd.ms-project" "mpy" => "application/vnd.ibm.minipay" "mqy" => "application/vnd.mobius.mqy" "mrc" => "application/marc" "mrcx" => "application/marcxml+xml" "ms" => "text/troff" "mscml" => "application/mediaservercontrol+xml" "mseed" => "application/vnd.fdsn.mseed" "mseq" => "application/vnd.mseq" "msf" => "application/vnd.epson.msf" "msh" => "model/mesh" "msi" => "application/x-msdownload" "msl" => "application/vnd.mobius.msl" "msty" => "application/vnd.muvee.style" "mts" => "model/vnd.mts" "mus" => "application/vnd.musician" "musicxml" => "application/vnd.recordare.musicxml+xml" "mvb" => "application/x-msmediaview" "mwf" => "application/vnd.mfer" "mxf" => "application/mxf" "mxl" => "application/vnd.recordare.musicxml" "mxml" => "application/xv+xml" "mxs" => "application/vnd.triscape.mxs" "mxu" => "video/vnd.mpegurl" "n-gage" => "application/vnd.nokia.n-gage.symbian.install" "n3" => "text/n3" "nb" => "application/mathematica" "nbp" => "application/vnd.wolfram.player" "nc" => "application/x-netcdf" "ncx" => "application/x-dtbncx+xml" "nfo" => "text/x-nfo" "ngdat" => "application/vnd.nokia.n-gage.data" "nitf" => "application/vnd.nitf" "nlu" => "application/vnd.neurolanguage.nlu" "nml" => "application/vnd.enliven" "nnd" => "application/vnd.noblenet-directory" "nns" => "application/vnd.noblenet-sealer" "nnw" => "application/vnd.noblenet-web" "npx" => "image/vnd.net-fpx" "nsc" => "application/x-conference" "nsf" => "application/vnd.lotus-notes" "ntf" => "application/vnd.nitf" "nzb" => "application/x-nzb" "oa2" => "application/vnd.fujitsu.oasys2" "oa3" => "application/vnd.fujitsu.oasys3" "oas" => "application/vnd.fujitsu.oasys" "obd" => "application/x-msbinder" "obj" => "application/x-tgif" "oda" => "application/oda" "odb" => "application/vnd.oasis.opendocument.database" "odc" => "application/vnd.oasis.opendocument.chart" "odf" => "application/vnd.oasis.opendocument.formula" "odft" => "application/vnd.oasis.opendocument.formula-template" "odg" => "application/vnd.oasis.opendocument.graphics" "odi" => "application/vnd.oasis.opendocument.image" "odm" => "application/vnd.oasis.opendocument.text-master" "odp" => "application/vnd.oasis.opendocument.presentation" "ods" => "application/vnd.oasis.opendocument.spreadsheet" "odt" => "application/vnd.oasis.opendocument.text" "oga" => "audio/ogg" "ogg" => "audio/ogg" "ogv" => "video/ogg" "ogx" => "application/ogg" "omdoc" => "application/omdoc+xml" "onepkg" => "application/onenote" "onetmp" => "application/onenote" "onetoc" => "application/onenote" "onetoc2" => "application/onenote" "opf" => "application/oebps-package+xml" "opml" => "text/x-opml" "oprc" => "application/vnd.palm" "org" => "application/vnd.lotus-organizer" "osf" => "application/vnd.yamaha.openscoreformat" "osfpvg" => "application/vnd.yamaha.openscoreformat.osfpvg+xml" "otc" => "application/vnd.oasis.opendocument.chart-template" "otf" => "application/x-font-otf" "otg" => "application/vnd.oasis.opendocument.graphics-template" "oth" => "application/vnd.oasis.opendocument.text-web" "oti" => "application/vnd.oasis.opendocument.image-template" "otp" => "application/vnd.oasis.opendocument.presentation-template" "ots" => "application/vnd.oasis.opendocument.spreadsheet-template" "ott" => "application/vnd.oasis.opendocument.text-template" "oxps" => "application/oxps" "oxt" => "application/vnd.openofficeorg.extension" "p" => "text/x-pascal" "p10" => "application/pkcs10" "p12" => "application/x-pkcs12" "p7b" => "application/x-pkcs7-certificates" "p7c" => "application/pkcs7-mime" "p7m" => "application/pkcs7-mime" "p7r" => "application/x-pkcs7-certreqresp" "p7s" => "application/pkcs7-signature" "p8" => "application/pkcs8" "pas" => "text/x-pascal" "paw" => "application/vnd.pawaafile" "pbd" => "application/vnd.powerbuilder6" "pbm" => "image/x-portable-bitmap" "pcap" => "application/vnd.tcpdump.pcap" "pcf" => "application/x-font-pcf" "pcl" => "application/vnd.hp-pcl" "pclxl" => "application/vnd.hp-pclxl" "pct" => "image/x-pict" "pcurl" => "application/vnd.curl.pcurl" "pcx" => "image/x-pcx" "pdb" => "application/vnd.palm" "pdf" => "application/pdf" "pfa" => "application/x-font-type1" "pfb" => "application/x-font-type1" "pfm" => "application/x-font-type1" "pfr" => "application/font-tdpfr" "pfx" => "application/x-pkcs12" "pgm" => "image/x-portable-graymap" "pgn" => "application/x-chess-pgn" "pgp" => "application/pgp-encrypted" "php" => "application/x-php" "php3" => "application/x-php" "php4" => "application/x-php" "php5" => "application/x-php" "pic" => "image/x-pict" "pkg" => "application/octet-stream" "pki" => "application/pkixcmp" "pkipath" => "application/pkix-pkipath" "plb" => "application/vnd.3gpp.pic-bw-large" "plc" => "application/vnd.mobius.plc" "plf" => "application/vnd.pocketlearn" "pls" => "application/pls+xml" "pml" => "application/vnd.ctc-posml" "png" => "image/png" "pnm" => "image/x-portable-anymap" "portpkg" => "application/vnd.macports.portpkg" "pot" => "application/vnd.ms-powerpoint" "potm" => "application/vnd.ms-powerpoint.template.macroenabled.12" "potx" => "application/vnd.openxmlformats-officedocument.presentationml.template" "ppam" => "application/vnd.ms-powerpoint.addin.macroenabled.12" "ppd" => "application/vnd.cups-ppd" "ppm" => "image/x-portable-pixmap" "pps" => "application/vnd.ms-powerpoint" "ppsm" => "application/vnd.ms-powerpoint.slideshow.macroenabled.12" "ppsx" => "application/vnd.openxmlformats-officedocument.presentationml.slideshow" "ppt" => "application/vnd.ms-powerpoint" "pptm" => "application/vnd.ms-powerpoint.presentation.macroenabled.12" "pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation" "pqa" => "application/vnd.palm" "prc" => "application/x-mobipocket-ebook" "pre" => "application/vnd.lotus-freelance" "prf" => "application/pics-rules" "ps" => "application/postscript" "psb" => "application/vnd.3gpp.pic-bw-small" "psd" => "image/vnd.adobe.photoshop" "psf" => "application/x-font-linux-psf" "pskcxml" => "application/pskc+xml" "ptid" => "application/vnd.pvi.ptid1" "pub" => "application/x-mspublisher" "pvb" => "application/vnd.3gpp.pic-bw-var" "pwn" => "application/vnd.3m.post-it-notes" "pya" => "audio/vnd.ms-playready.media.pya" "pyv" => "video/vnd.ms-playready.media.pyv" "qam" => "application/vnd.epson.quickanime" "qbo" => "application/vnd.intu.qbo" "qfx" => "application/vnd.intu.qfx" "qps" => "application/vnd.publishare-delta-tree" "qt" => "video/quicktime" "qwd" => "application/vnd.quark.quarkxpress" "qwt" => "application/vnd.quark.quarkxpress" "qxb" => "application/vnd.quark.quarkxpress" "qxd" => "application/vnd.quark.quarkxpress" "qxl" => "application/vnd.quark.quarkxpress" "qxt" => "application/vnd.quark.quarkxpress" "ra" => "audio/x-pn-realaudio" "ram" => "audio/x-pn-realaudio" "rar" => "application/x-rar-compressed" "ras" => "image/x-cmu-raster" "rcprofile" => "application/vnd.ipunplugged.rcprofile" "rdf" => "application/rdf+xml" "rdz" => "application/vnd.data-vision.rdz" "rep" => "application/vnd.businessobjects" "res" => "application/x-dtbresource+xml" "rgb" => "image/x-rgb" "rif" => "application/reginfo+xml" "rip" => "audio/vnd.rip" "ris" => "application/x-research-info-systems" "rl" => "application/resource-lists+xml" "rlc" => "image/vnd.fujixerox.edmics-rlc" "rld" => "application/resource-lists-diff+xml" "rm" => "application/vnd.rn-realmedia" "rmi" => "audio/midi" "rmp" => "audio/x-pn-realaudio-plugin" "rms" => "application/vnd.jcp.javame.midlet-rms" "rmvb" => "application/vnd.rn-realmedia-vbr" "rnc" => "application/relax-ng-compact-syntax" "roa" => "application/rpki-roa" "roff" => "text/troff" "rp9" => "application/vnd.cloanto.rp9" "rpss" => "application/vnd.nokia.radio-presets" "rpst" => "application/vnd.nokia.radio-preset" "rq" => "application/sparql-query" "rs" => "application/rls-services+xml" "rsd" => "application/rsd+xml" "rss" => "application/rss+xml" "rtf" => "application/rtf" "rtx" => "text/richtext" "s" => "text/x-asm" "s3m" => "audio/s3m" "saf" => "application/vnd.yamaha.smaf-audio" "sbml" => "application/sbml+xml" "sc" => "application/vnd.ibm.secure-container" "scd" => "application/x-msschedule" "scm" => "application/vnd.lotus-screencam" "scq" => "application/scvp-cv-request" "scs" => "application/scvp-cv-response" "scurl" => "text/vnd.curl.scurl" "sda" => "application/vnd.stardivision.draw" "sdc" => "application/vnd.stardivision.calc" "sdd" => "application/vnd.stardivision.impress" "sdkd" => "application/vnd.solent.sdkm+xml" "sdkm" => "application/vnd.solent.sdkm+xml" "sdp" => "application/sdp" "sdw" => "application/vnd.stardivision.writer" "see" => "application/vnd.seemail" "seed" => "application/vnd.fdsn.seed" "sema" => "application/vnd.sema" "semd" => "application/vnd.semd" "semf" => "application/vnd.semf" "ser" => "application/java-serialized-object" "setpay" => "application/set-payment-initiation" "setreg" => "application/set-registration-initiation" "sfd-hdstx" => "application/vnd.hydrostatix.sof-data" "sfs" => "application/vnd.spotfire.sfs" "sfv" => "text/x-sfv" "sgi" => "image/sgi" "sgl" => "application/vnd.stardivision.writer-global" "sgm" => "text/sgml" "sgml" => "text/sgml" "sh" => "application/x-sh" "shar" => "application/x-shar" "shf" => "application/shf+xml" "sid" => "image/x-mrsid-image" "sig" => "application/pgp-signature" "sil" => "audio/silk" "silo" => "model/mesh" "sis" => "application/vnd.symbian.install" "sisx" => "application/vnd.symbian.install" "sit" => "application/x-stuffit" "sitx" => "application/x-stuffitx" "skd" => "application/vnd.koan" "skm" => "application/vnd.koan" "skp" => "application/vnd.koan" "skt" => "application/vnd.koan" "sldm" => "application/vnd.ms-powerpoint.slide.macroenabled.12" "sldx" => "application/vnd.openxmlformats-officedocument.presentationml.slide" "slt" => "application/vnd.epson.salt" "sm" => "application/vnd.stepmania.stepchart" "smf" => "application/vnd.stardivision.math" "smi" => "application/smil+xml" "smil" => "application/smil+xml" "smv" => "video/x-smv" "smzip" => "application/vnd.stepmania.package" "snd" => "audio/basic" "snf" => "application/x-font-snf" "so" => "application/octet-stream" "spc" => "application/x-pkcs7-certificates" "spf" => "application/vnd.yamaha.smaf-phrase" "spl" => "application/x-futuresplash" "spot" => "text/vnd.in3d.spot" "spp" => "application/scvp-vp-response" "spq" => "application/scvp-vp-request" "spx" => "audio/ogg" "sql" => "application/x-sql" "src" => "application/x-wais-source" "srt" => "application/x-subrip" "sru" => "application/sru+xml" "srx" => "application/sparql-results+xml" "ssdl" => "application/ssdl+xml" "sse" => "application/vnd.kodak-descriptor" "ssf" => "application/vnd.epson.ssf" "ssml" => "application/ssml+xml" "st" => "application/vnd.sailingtracker.track" "stc" => "application/vnd.sun.xml.calc.template" "std" => "application/vnd.sun.xml.draw.template" "stf" => "application/vnd.wt.stf" "sti" => "application/vnd.sun.xml.impress.template" "stk" => "application/hyperstudio" "stl" => "application/vnd.ms-pki.stl" "str" => "application/vnd.pg.format" "stw" => "application/vnd.sun.xml.writer.template" "sub" => "text/vnd.dvb.subtitle" "sus" => "application/vnd.sus-calendar" "susp" => "application/vnd.sus-calendar" "sv4cpio" => "application/x-sv4cpio" "sv4crc" => "application/x-sv4crc" "svc" => "application/vnd.dvb.service" "svd" => "application/vnd.svd" "svg" => "image/svg+xml" "svgz" => "image/svg+xml" "swa" => "application/x-director" "swf" => "application/x-shockwave-flash" "swi" => "application/vnd.aristanetworks.swi" "sxc" => "application/vnd.sun.xml.calc" "sxd" => "application/vnd.sun.xml.draw" "sxg" => "application/vnd.sun.xml.writer.global" "sxi" => "application/vnd.sun.xml.impress" "sxm" => "application/vnd.sun.xml.math" "sxw" => "application/vnd.sun.xml.writer" "t" => "text/troff" "t3" => "application/x-t3vm-image" "taglet" => "application/vnd.mynfc" "tao" => "application/vnd.tao.intent-module-archive" "tar" => "application/x-tar" "tcap" => "application/vnd.3gpp2.tcap" "tcl" => "application/x-tcl" "teacher" => "application/vnd.smart.teacher" "tei" => "application/tei+xml" "teicorpus" => "application/tei+xml" "tex" => "application/x-tex" "texi" => "application/x-texinfo" "texinfo" => "application/x-texinfo" "text" => "text/plain" "tfi" => "application/thraud+xml" "tfm" => "application/x-tex-tfm" "tga" => "image/x-tga" "thmx" => "application/vnd.ms-officetheme" "tif" => "image/tiff" "tiff" => "image/tiff" "tmo" => "application/vnd.tmobile-livetv" "torrent" => "application/x-bittorrent" "tpl" => "application/vnd.groove-tool-template" "tpt" => "application/vnd.trid.tpt" "tr" => "text/troff" "tra" => "application/vnd.trueapp" "trm" => "application/x-msterminal" "tsd" => "application/timestamped-data" "tsv" => "text/tab-separated-values" "ttc" => "application/x-font-ttf" "ttf" => "application/x-font-ttf" "ttl" => "text/turtle" "twd" => "application/vnd.simtech-mindmapper" "twds" => "application/vnd.simtech-mindmapper" "txd" => "application/vnd.genomatix.tuxedo" "txf" => "application/vnd.mobius.txf" "txt" => "text/plain" "u32" => "application/x-authorware-bin" "udeb" => "application/x-debian-package" "ufd" => "application/vnd.ufdl" "ufdl" => "application/vnd.ufdl" "ulx" => "application/x-glulx" "umj" => "application/vnd.umajin" "unityweb" => "application/vnd.unity" "uoml" => "application/vnd.uoml+xml" "uri" => "text/uri-list" "uris" => "text/uri-list" "urls" => "text/uri-list" "ustar" => "application/x-ustar" "utz" => "application/vnd.uiq.theme" "uu" => "text/x-uuencode" "uva" => "audio/vnd.dece.audio" "uvd" => "application/vnd.dece.data" "uvf" => "application/vnd.dece.data" "uvg" => "image/vnd.dece.graphic" "uvh" => "video/vnd.dece.hd" "uvi" => "image/vnd.dece.graphic" "uvm" => "video/vnd.dece.mobile" "uvp" => "video/vnd.dece.pd" "uvs" => "video/vnd.dece.sd" "uvt" => "application/vnd.dece.ttml+xml" "uvu" => "video/vnd.uvvu.mp4" "uvv" => "video/vnd.dece.video" "uvva" => "audio/vnd.dece.audio" "uvvd" => "application/vnd.dece.data" "uvvf" => "application/vnd.dece.data" "uvvg" => "image/vnd.dece.graphic" "uvvh" => "video/vnd.dece.hd" "uvvi" => "image/vnd.dece.graphic" "uvvm" => "video/vnd.dece.mobile" "uvvp" => "video/vnd.dece.pd" "uvvs" => "video/vnd.dece.sd" "uvvt" => "application/vnd.dece.ttml+xml" "uvvu" => "video/vnd.uvvu.mp4" "uvvv" => "video/vnd.dece.video" "uvvx" => "application/vnd.dece.unspecified" "uvvz" => "application/vnd.dece.zip" "uvx" => "application/vnd.dece.unspecified" "uvz" => "application/vnd.dece.zip" "vcard" => "text/vcard" "vcd" => "application/x-cdlink" "vcf" => "text/x-vcard" "vcg" => "application/vnd.groove-vcard" "vcs" => "text/x-vcalendar" "vcx" => "application/vnd.vcx" "vis" => "application/vnd.visionary" "viv" => "video/vnd.vivo" "vob" => "video/x-ms-vob" "vor" => "application/vnd.stardivision.writer" "vox" => "application/x-authorware-bin" "vrml" => "model/vrml" "vsd" => "application/vnd.visio" "vsf" => "application/vnd.vsf" "vss" => "application/vnd.visio" "vst" => "application/vnd.visio" "vsw" => "application/vnd.visio" "vtu" => "model/vnd.vtu" "vxml" => "application/voicexml+xml" "w3d" => "application/x-director" "wad" => "application/x-doom" "wav" => "audio/x-wav" "wax" => "audio/x-ms-wax" "wbmp" => "image/vnd.wap.wbmp" "wbs" => "application/vnd.criticaltools.wbs+xml" "wbxml" => "application/vnd.wap.wbxml" "wcm" => "application/vnd.ms-works" "wdb" => "application/vnd.ms-works" "wdp" => "image/vnd.ms-photo" "weba" => "audio/webm" "webm" => "video/webm" "webp" => "image/webp" "wg" => "application/vnd.pmi.widget" "wgt" => "application/widget" "wks" => "application/vnd.ms-works" "wm" => "video/x-ms-wm" "wma" => "audio/x-ms-wma" "wmd" => "application/x-ms-wmd" "wmf" => "application/x-msmetafile" "wml" => "text/vnd.wap.wml" "wmlc" => "application/vnd.wap.wmlc" "wmls" => "text/vnd.wap.wmlscript" "wmlsc" => "application/vnd.wap.wmlscriptc" "wmv" => "video/x-ms-wmv" "wmx" => "video/x-ms-wmx" "wmz" => "application/x-msmetafile" "woff" => "application/font-woff" "wpd" => "application/vnd.wordperfect" "wpl" => "application/vnd.ms-wpl" "wps" => "application/vnd.ms-works" "wqd" => "application/vnd.wqd" "wri" => "application/x-mswrite" "wrl" => "model/vrml" "wsdl" => "application/wsdl+xml" "wspolicy" => "application/wspolicy+xml" "wtb" => "application/vnd.webturbo" "wvx" => "video/x-ms-wvx" "x32" => "application/x-authorware-bin" "x3d" => "model/x3d+xml" "x3db" => "model/x3d+binary" "x3dbz" => "model/x3d+binary" "x3dv" => "model/x3d+vrml" "x3dvz" => "model/x3d+vrml" "x3dz" => "model/x3d+xml" "xaml" => "application/xaml+xml" "xap" => "application/x-silverlight-app" "xar" => "application/vnd.xara" "xbap" => "application/x-ms-xbap" "xbd" => "application/vnd.fujixerox.docuworks.binder" "xbm" => "image/x-xbitmap" "xdf" => "application/xcap-diff+xml" "xdm" => "application/vnd.syncml.dm+xml" "xdp" => "application/vnd.adobe.xdp+xml" "xdssc" => "application/dssc+xml" "xdw" => "application/vnd.fujixerox.docuworks" "xenc" => "application/xenc+xml" "xer" => "application/patch-ops-error+xml" "xfdf" => "application/vnd.adobe.xfdf" "xfdl" => "application/vnd.xfdl" "xht" => "application/xhtml+xml" "xhtml" => "application/xhtml+xml" "xhvml" => "application/xv+xml" "xif" => "image/vnd.xiff" "xla" => "application/vnd.ms-excel" "xlam" => "application/vnd.ms-excel.addin.macroenabled.12" "xlc" => "application/vnd.ms-excel" "xlf" => "application/x-xliff+xml" "xlm" => "application/vnd.ms-excel" "xls" => "application/vnd.ms-excel" "xlsb" => "application/vnd.ms-excel.sheet.binary.macroenabled.12" "xlsm" => "application/vnd.ms-excel.sheet.macroenabled.12" "xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" "xlt" => "application/vnd.ms-excel" "xltm" => "application/vnd.ms-excel.template.macroenabled.12" "xltx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.template" "xlw" => "application/vnd.ms-excel" "xm" => "audio/xm" "xml" => "application/xml" "xo" => "application/vnd.olpc-sugar" "xop" => "application/xop+xml" "xpi" => "application/x-xpinstall" "xpl" => "application/xproc+xml" "xpm" => "image/x-xpixmap" "xpr" => "application/vnd.is-xpr" "xps" => "application/vnd.ms-xpsdocument" "xpw" => "application/vnd.intercon.formnet" "xpx" => "application/vnd.intercon.formnet" "xsl" => "application/xml" "xslt" => "application/xslt+xml" "xsm" => "application/vnd.syncml+xml" "xspf" => "application/xspf+xml" "xul" => "application/vnd.mozilla.xul+xml" "xvm" => "application/xv+xml" "xvml" => "application/xv+xml" "xwd" => "image/x-xwindowdump" "xyz" => "chemical/x-xyz" "xz" => "application/x-xz" "yang" => "application/yang" "yin" => "application/yin+xml" "z1" => "application/x-zmachine" "z2" => "application/x-zmachine" "z3" => "application/x-zmachine" "z4" => "application/x-zmachine" "z5" => "application/x-zmachine" "z6" => "application/x-zmachine" "z7" => "application/x-zmachine" "z8" => "application/x-zmachine" "zaz" => "application/vnd.zzazz.deck+xml" "zip" => "application/zip" "zir" => "application/vnd.zul" "zirz" => "application/vnd.zul" "zmm" => "application/vnd.handheld-entertainment+xml" 123 => "application/vnd.lotus-1-2-3" ] -headers: Swift_Mime_SimpleHeaderSet锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderSet.php#L16锟絓^锟絔8;;锟絓 {#5062 -factory: Swift_Mime_SimpleHeaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\SimpleHeaderFactory.php#L18锟絓^锟絔8;;锟絓 {#5061 -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5053 #charStream: Swift_CharacterStream_NgCharacterStream锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16锟絓^锟絔8;;锟絓 {#5052 -charReader: null -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16锟絓^锟絔8;;锟絓 {#5081} -charset: "utf-8" -datas: "" -datasSize: 0 -map: null -mapType: 0 -charCount: 0 -currentPos: 0 } #filter: null #safeMap: array:68 [ 97 => "a" 98 => "b" 99 => "c" 100 => "d" 101 => "e" 102 => "f" 103 => "g" 104 => "h" 105 => "i" 106 => "j" 107 => "k" 108 => "l" 109 => "m" 110 => "n" 111 => "o" 112 => "p" 113 => "q" 114 => "r" 115 => "s" 116 => "t" 117 => "u" 118 => "v" 119 => "w" 120 => "x" 121 => "y" 122 => "z" 65 => "A" 66 => "B" 67 => "C" 68 => "D" 69 => "E" 70 => "F" 71 => "G" 72 => "H" 73 => "I" 74 => "J" 75 => "K" 76 => "L" 77 => "M" 78 => "N" 79 => "O" 80 => "P" 81 => "Q" 82 => "R" 83 => "S" 84 => "T" 85 => "U" 86 => "V" 87 => "W" 88 => "X" 89 => "Y" 90 => "Z" 48 => "0" 49 => "1" 50 => "2" 51 => "3" 52 => "4" 53 => "5" 54 => "6" 55 => "7" 56 => "8" 57 => "9" 32 => " " 33 => "!" 42 => "*" 43 => "+" 45 => "-" 47 => "/" ] } -paramEncoder: Swift_Encoder_Rfc2231Encoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Encoder\Rfc2231Encoder.php#L16锟絓^锟絔8;;锟絓 {#5056 -charStream: Swift_CharacterStream_NgCharacterStream锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterStream\NgCharacterStream.php#L16锟絓^锟絔8;;锟絓 {#5058 -charReader: null -charReaderFactory: Swift_CharacterReaderFactory_SimpleCharacterReaderFactory锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\CharacterReaderFactory\SimpleCharacterReaderFactory.php#L16锟絓^锟絔8;;锟絓 {#5081} -charset: "utf-8" -datas: "" -datasSize: 0 -map: null -mapType: 0 -charCount: 0 -currentPos: 0 } } -emailValidator: Egulias\EmailValidator\EmailValidator锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8锟絓^锟絔8;;锟絓 {#5093} -charset: "utf-8" -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25锟絓^锟絔8;;锟絓 {#5055} } -headers: array:4 [ "content-transfer-encoding" => array:1 [ 0 => Swift_Mime_Headers_UnstructuredHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\UnstructuredHeader.php#L16锟絓^锟絔8;;锟絓 {#5064 -value: "base64" -name: "Content-Transfer-Encoding" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5053} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "content-disposition" => array:1 [ 0 => Swift_Mime_Headers_ParameterizedHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16锟絓^锟絔8;;锟絓 {#5054 -paramEncoder: Swift_Encoder_Rfc2231Encoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Encoder\Rfc2231Encoder.php#L16锟絓^锟絔8;;锟絓 {#5056} -params: array:1 [ "filename" => "sendgrid/x-smtpapi" ] -value: "inline" -name: "Content-Disposition" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5053} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "content-type" => array:1 [ 0 => Swift_Mime_Headers_ParameterizedHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\ParameterizedHeader.php#L16锟絓^锟絔8;;锟絓 {#5046 -paramEncoder: null -params: array:1 [ "name" => "sendgrid/x-smtpapi" ] -value: "application/octet-stream" -name: "Content-Type" -encoder: Swift_Mime_HeaderEncoder_QpHeaderEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\HeaderEncoder\QpHeaderEncoder.php#L16锟絓^锟絔8;;锟絓 {#5053} -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] "content-id" => array:1 [ 0 => Swift_Mime_Headers_IdentificationHeader锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\Headers\IdentificationHeader.php#L20锟絓^锟絔8;;锟絓 {#5045 -ids: array:1 [ 0 => "54b50e08a8c26f98eb28970cd0de604f@swift.generated" ] -emailValidator: Egulias\EmailValidator\EmailValidator锟絔8;;file://D:\rslaravel\vendor\egulias\email-validator\src\EmailValidator.php#L8锟絓^锟絔8;;锟絓 {#5093} -addressEncoder: Swift_AddressEncoder_IdnAddressEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\AddressEncoder\IdnAddressEncoder.php#L25锟絓^锟絔8;;锟絓 {#5051} -name: "Content-ID" -encoder: null -lineLength: 78 -lang: null -charset: "utf-8" -cachedValue: null } ] ] -order: array:2 [ "content-type" => 0 "content-transfer-encoding" => 1 ] -required: [] -charset: "utf-8" } -body: "{"personalizations":[{"custom_args":{"email_subject":"Remote Start Quote 102cmlzspagej5p - UNDEFINED UNDEFINED UNDEFINED anything","domain":"Remotely Started","tracking_id":13165,"tracking_model":"App\\Models\\Quote\\Quote"}}]}" -encoder: Swift_Mime_ContentEncoder_Base64ContentEncoder锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\ContentEncoder\Base64ContentEncoder.php#L16锟絓^锟絔8;;锟絓 {#5057} -idGenerator: Swift_Mime_IdGenerator锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Mime\IdGenerator.php#L14锟絓^锟絔8;;锟絓 {#4652} -boundary: null -compositeRanges: array:3 [ "multipart/mixed" => array:2 [ 0 => 16 1 => 256 ] "multipart/alternative" => array:2 [ 0 => 256 1 => 4096 ] "multipart/related" => array:2 [ 0 => 4096 1 => 65536 ] ] -compoundLevelFilters: array:1 [ 69632 => array:1 [ 4096 => array:2 [ "text/plain" => 4096 "text/html" => 65536 ] ] ] -nestingLevel: 4096 -cache: Swift_KeyCache_DiskKeyCache锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\KeyCache\DiskKeyCache.php#L16锟絓^锟絔8;;锟絓 {#4530} -immediateChildren: [] -children: [] -maxLineLength: 78 -alternativePartOrder: array:3 [ "text/plain" => 1 "text/html" => 2 "multipart/related" => 3 ] -id: "54b50e08a8c26f98eb28970cd0de604f@swift.generated" -cacheKey: "1aec1b4352c9f3846f82e29e865851dd" #userContentType: "application/octet-stream" } ] -children: array:1 [ 0 => Swift_Image锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Image.php#L16锟絓^锟絔8;;锟絓 {#5059} ] -maxLineLength: 78 -alternativePartOrder: array:3 [ "text/plain" => 1 "text/html" => 2 "multipart/related" => 3 ] -id: "f5675bd7d499190eef951332186382e9@swift.generated" -cacheKey: "0d8e412636fe01d6c53d2d854dd8e39f" #userContentType: null } ] -children: array:2 [ 0 => Swift_MimePart锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\MimePart.php#L16锟絓^锟絔8;;锟絓 {#5076} 1 => Swift_Image锟絔8;;file://D:\rslaravel\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Image.php#L16锟絓^锟絔8;;锟絓 {#5059} ] -maxLineLength: 78 -alternativePartOrder: array:3 [ "text/plain" => 1 "text/html" => 2 "multipart/related" => 3 ] -id: "338afa852f559198d1773c3bac20e4eb@swift.generated" -cacheKey: "c52e6fab18a60f2a0dda361278c2b813" #userContentType: "text/html" -nestingLevel: 4096 } Process finished with exit code 1
  9. the above only produces a php warning if $conn is a false value. it also results in a false value for the if() conditional test, which looks like a connection without an error (this is yet another f___ up with the mysqli extension implementation.) it is also due to the different error responses between procedural mysqli and oop mysqli statements. you should be using exceptions for database statement errors (this is the default setting now in php8+) and in most cases simply do nothing else in your code and let php handle any database exception, where php will use its error related settings to control what happens with the actual error information, via an uncaught exception error (database statement errors will 'automatically' get displayed/logged the same as php errors.) you can then eliminate all the existing error handling logic, since it won't get executed upon an error, simplifying your code. a) you need to set php's error_reporting to E_ALL and display_errors to ON, preferably in the php.ini on your development system, so that php will help you by reporting and displaying all the errors it detects. stop and start your web server to get any changes made to the php.ini to take effect and use a phpinfo() statement in a .php scrip to confirm that the settings actually took effect. b) you should be using php8+. c) to use exceptions for the mysqli extension in older versions of php, add the following line of code before the point where you make the database connection - mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
  10. error_reporting(E_ALL); ini_set('display_errors', '1'); $semester = $_GET['semesterid'] ?? 0; $res = $pdo->prepare("SELECT ss.sessionname , ss.id as sessionid , sm.semestername , sm.semestername+0 as termno #, sm.date_until as nextterm # modified , sm.id as smid FROM session ss JOIN semester sm ON sm.sessionid = ss.id WHERE sm.id = ? "); $res->execute([$semester]); $row = $res->fetch(); // $sessionname = $row['sessionname'] ?? ''; $session = $row['sessionid'] ?? 0; // $semestername = $row['semestername'] ?? ''; $termno = $row['termno'] ?? 0; # $nextterm = $row['nextterm'] ?? 0; # modified if ($clid == -1) { $res = $pdo->prepare("SELECT classid FROM student_class WHERE studentid = ? AND semesterid = ? "); $res->execute([$student, $semester]); $clid = $res->fetchColumn(); } switch($termno) { case 1: $term_headings = "<th>1st<br>Term<br>100</th> <!--<th>&ensp;&ensp;&ensp;&ensp;&ensp;</th> <th>&ensp;&ensp;&ensp;&ensp;&ensp;</th>-->"; break; case 2: $term_headings = "<th>1st<br>Term<br>&nbsp;</th> <th>2nd<br>Term<br>100</th> <th>&ensp;&ensp;&ensp;&ensp;&ensp;</th>"; break; default: $term_headings = "<th>1st<br>Term<br>&nbsp;</th> <th>2nd<br>Term<br>&nbsp;</th> <th>3rd<br>Term<br>100</th>"; } $report_title = $termno == 3 ? "End of Year Results" : "End of Term Results"; ################################################################################ # Get scores and put in array with required output structure # ################################################################################ $res = $pdo->prepare("SELECT st.id as stid , concat_ws(' ', st.lastname, st.firstname, st.othername) as stname , st.image , cl.classname , st.dob , st.matricno , sc.classid , l.id as level , sn.sessionname , sm.semestername , sm.date_until , sm.semestername+0 as term , c.subjectid , s.subjectname , exam , score FROM result r JOIN ( student_class sc JOIN class cl ON sc.classid = cl.id JOIN level l ON cl.levelid = l.id JOIN course c ON c.levelid = l.id JOIN student st ON sc.studentid = st.id JOIN semester sm ON sc.semesterid = sm.id JOIN session sn ON sm.sessionid = sn.id JOIN subject s ON c.subjectid = s.id ) ON r.studentclassid = sc.id AND r.courseid = c.id WHERE sn.id = ? AND studentid = ? #AND sm.date_until = ? AND sm.semestername+0 <= ? AND cl.id = ? ORDER BY c.levelid, sc.id, c.subjectid, sc.semesterid, exam "); ############################################################################# ############################################################################# $res->execute( [ $session, $student, $termno, $clid ] ); $data = []; // get data common to all rows from first row $r = $res->fetch(); if ($r) { $studentname = $r['stname']; $studentdob = $r['dob']; $studentmatricno = $r['matricno']; $studentlevel = $r['classname']; $studentsession = $r['sessionname']; $studentterm = "- Term $termno"; $nextterm = $r['date_until']; $passport = "images/" . $r['image']; ### provide image path here $level = $r['level']; // then process the rest of the row data in the first and remaining rows do { if (!isset($data[ $r['subjectid'] ])) { $data[ $r['subjectid'] ] = [ 'name' => $r['subjectname'], #'exams' => ['CA1'=>'', 'CA2'=>'', 'CA3'=>'', 'Exam'=>''], 'exams' => ['CA1'=>'', 'CA2'=>'', 'Exam'=>''], 'scores' => [ 1=>0, 0, 0 ], 'avg' => 0 //'rank' => 0 ]; } if ($r['term'] == $termno && isset($data[$r['subjectid'] ]['exams'][ $r['exam']])) { $data[ $r['subjectid'] ]['exams'][ $r['exam'] ] = $r['score']; } $data[ $r['subjectid'] ]['scores'][$r['term']] += $r['score']; } while ($r = $res->fetch()); // get the avg scores for the class $avgs = classAverageScores($pdo, $clid, $session, $termno); foreach ($avgs as $s => $av) { if (isset($data[$s])) $data[$s]['avg'] = round($av,0); } ###########my ranking here############### /***** manipulating here ************** * * * * / * */ /******************************************** * Derive ordinal suffix for $n * * @param int $n the number * @returns string number with suffix eg 23rd */ function ordinal($n) { $str = "$n"; $t = $n > 9 ? substr($str,-2,1) : 0; $u = substr($str,-1); if ($t==1) return $str . 'th'; else switch ($u) { case 1: return $str . 'st'; case 2: return $str . 'nd'; case 3: return $str . 'rd'; default: return $str . 'th'; } } //function end //$data = []; foreach ($res as $r) { if (!isset($data[$r['subjectname']])) { $data[$r['subjectname']]['students'] = []; } $position = ordinal($r['rank']); $data[$r['subjectname']]['students'][] = [ 'name' => $r['stname'], 'score' => $r['score'], 'rank' => $position ]; } /* //hffffffffff foreach ($res as $r) { if (!isset($data[$r['subjectname']])) { $data[$r['subjectname']]['students'] = []; } $data[$r['subjectname']]['students'][] = [ 'name' => $r['stname'], 'score' => $r['score'], 'rank' => $r['rank'] ]; } */ ################################################################################ # Get pupil count # ################################################################################ $res = $pdo->prepare("SELECT COUNT(DISTINCT stc.studentid) AS pupils FROM student_class stc JOIN semester sm ON sm.id = stc.semesterid JOIN result r ON stc.id = r.studentclassid WHERE sm.id = ? AND stc.classid = ? "); $res->execute([ $semester, $clid ]); $pupil_count = $res->fetchColumn(); ################################################################################ # Loop through the data array to construct the output table rows # ################################################################################ $tdata = ''; $n = 1; $grand_total = 0; $subject_count = 0; foreach ($data as $subid => $subdata) { $tdata .= "<tr><td>$n</td><td>{$subdata['name']}</td>"; foreach ($subdata['exams'] as $s) { $tdata .= "<td>" . ($s=='' ? '&ndash;' : $s) . "</td>"; } foreach ($subdata['scores'] as $t => $s) { if ($s==0) $s = ''; $tdata .= "<td>" . ($t <= $termno ? $s : '') . "</td>"; } $temp = array_filter($subdata['scores']); $total = $temp ? round(array_sum($temp)/count($temp)) : 0; $grand_total += $total; if ($total) { list($grade, $comment) = getGradeComment($pdo, $total, $level); $subject_count++; } else { $grade = '-'; $comment = '-'; } $clr = GRADE_COLOUR[$grade] ?? '#000'; $tdata .= "<td>$total</td><td>{$subdata['avg']}</td><td style='color:$clr; font-weight: 600;'>$grade</td><td>$comment</td></tr>\n"; ++$n; } } else { $studentname = ''; $studentdob = ''; $studentmatricno = ''; $studentlevel = ''; $studentsession = ''; $studentsemester = ''; #$nextterm = ''; $studentterm = ''; $passport = ''; $level = '4'; $pupil_count = 0; $grand_total = 0; $subject_count = 1; // $clid = 0; $tdata = "<tr><td colspan='13'>No results found</td></tr>\n"; } ################################################################################ # Get list of gradings # ################################################################################ $res = $pdo->query("SELECT GROUP_CONCAT( grade, concat('&nbsp;(',comments,')'), '&nbsp;', concat(lomark,'&nbsp;-&nbsp;',himark) ORDER BY id SEPARATOR ', ') FROM examgrade #WHERE level_group = ($level > 5) WHERE level_group = ($level > 6) "); $grade_list = $res->fetchColumn(); ################################# $res = $pdo->query('SELECT MIN(date_format(date_from, "%W %M %e, %Y")) as next_term FROM semester WHERE date_from > CURDATE()'); $nextterm = $res->fetchColumn(); ################################# ################################################################################ # Get end of term assessments # ################################################################################ $res = $pdo->prepare("SELECT a.type , a.assessname , e.grade FROM student_class stc JOIN eot_assessment e ON e.studentclassid = stc.id JOIN assessment a ON e.assessmentid = a.id #JOIN semester sm ON sm.id = stc.date_untilid JOIN semester sm ON sm.id = stc.semesterid WHERE stc.studentid = ? AND sm.id = ? "); $res->execute( [ $student, $semester ] ); $ass_data = $res->fetchAll(PDO::FETCH_GROUP); $afflist = $psychlist = ''; if ($ass_data) { $afflist = "<table class='w3-table assess-tbl' > <tr><th>Domain</th><th>Grade</th></tr>\n"; foreach ($ass_data['Affective'] as $agrades) { $afflist .= "<tr><td>{$agrades['assessname']}</td><td>{$agrades['grade']}</td></tr>\n"; } $afflist .= "</table>\n"; $psychlist = "<table class='w3-table assess-tbl' > <tr><th>Domain</th><th>Grade</th></tr>\n"; foreach ($ass_data['Psychomotor'] as $pgrades) { $psychlist .= "<tr><td>{$pgrades['assessname']}</td><td>{$pgrades['grade']}</td></tr>\n"; } $psychlist .= "</table>\n"; } ################################################################################ # Get end of term comments # ################################################################################ $comments = getEOTComments($pdo, $student, $semester); ?> <!DOCTYPE html> <html lang="en"> <head> <title>End Term Results</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="assets/css/w3.css"> <!--<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> --> <script src="assets/js/jquery.js"></script> <!--<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>--> <script type='text/javascript'> $().ready( function() { }) </script> <style type='text/css'> #student-data { width: 100%; } #student-data td { background:#eee; } #result-tbl { width: 100%; } #result-tbl tr:nth-child(2n) { background-color: #eee; } #result-tbl th { text-align: center; padding: 4px; } #result-tbl th:nth-child(2), #result-tbl th:nth-child(13) { text-align: left; } #result-tbl td { text-align: center; padding: 8px 2px; line-height: 0.5em; } #result-tbl td:nth-child(2), #result-tbl td:nth-child(13) { text-align: left; } #result-tbl td:nth-child(12) { padding-left: 25px; text-align: left; } #result-tbl td:nth-child(1), #result-tbl td:nth-child(6), #result-tbl td:nth-child(9) { border-right: 1px solid gray; } .assess-tbl th { border-top: 1px solid gray; border-bottom: 1px solid gray; } #address { font-family: times ; font-size: 20px; line-height: 1.0em; } #bgd { width : 100vw; height: 100vh; z-index: -5; position: fixed; top: 0; left: 0; background-image: url("logo1.png"); opacity: 0.2; background-repeat: no-repeat; background-attachment: fixed; background-position: center; background-size: 600px 600px; } .summaryhead { width: 65%; text-align: center; border: 1px solid blue; } @media print { .noprint { visibility: hidden; } } </style> </head> <body> <header class='w3-row'> <div class='w3-col m2'><img class='w3-image w3-left w3-padding' src='logo1.png' alt='logo'></div> <div class='w3-col m8 w3-padding w3-center' id='address'> <strong></strong><br> <small><i></i></small><br> <h2><?=$report_title?></h2> </div> <div class='w3-col m2'><img class='w3-image w3-right w3-padding' src='<?= $passport ?>' width='160' alt='student photo'></div> </header> <form class='w3-bar w3-light-gray noprint'> <label class='w3-bar-item'>Term</label> <select class='w3-bar-item w3-border' name='semesterid' onchange='this.form.submit()'> <?= semesterOptions($pdo, 0, $semester)?> </select> <?php if (isset($_SESSION['staff_id'])) { ?> <label class='w3-bar-item'>Class</label> <select class='w3-bar-item w3-border' name='classid' id='classid' onchange='this.form.submit()'> <?= classOptions($pdo, $session, $staff, $clid)?> </select> <label class='w3-bar-item'>Student</label> <select class='w3-bar-item w3-border' name='studentid' id='studentid' onchange='this.form.submit()'> <?= studentOptions($pdo, $semester, $clid, $staff, $student)?> </select> <?php } ?> <button class='w3-button w3-bar-item w3-blue-gray w3-right' onclick='window.print()'>Print</button> </form> <!-- my table here --> <div class="w3-responsive"> <table border='2' id='student-data'> <tr class="bg-dark text-white"> <td><strong>Name</strong></td> <td ><strong><?= $studentname ?></strong></td> <td><strong>Class: </strong></td> <td><strong><?= $studentlevel ?></strong></td> <td><strong>RegNo.: </strong></td> <td><strong><?= $studentmatricno ?></strong></td> <td><strong>DOB: </strong></td> <td><strong><?= $studentdob ?></strong></td> <!-- <td><strong>Name: <?= $studentname ?></strong></td> <td><strong>Class: <?= $studentlevel ?></strong></td> <td><strong>RegNo.: <?= $studentmatricno ?></strong></td> <td><strong>DOB: <?= $studentdob ?></strong></td>--> </tr> <tr> <td>Session/Term: </td> <td><strong><?= $studentsession ?> <?=$studentterm?> </strong></td> <td>Total Students in class: </td> <td><strong> <?=$pupil_count?></strong></td> <td>Score: </td> <td><strong> <?=sprintf('%d/%d', $grand_total, $subject_count*100)?></strong></td> <td>Percentage: </td> <td><strong> <?=round($grand_total/$subject_count, 2).'%'?></strong></td> <!-- <td>Session/Term: <?= $studentsession ?> <?=$studentterm?></td> <td>Score: <?=sprintf('%d/%d', $grand_total, $subject_count*100)?></td> <td>Total Students in class: <?=$pupil_count?></td> <td>Percentage: <?=round($grand_total/$subject_count, 2).'%'?></td> --> </tr> <tr> <td>Number of Time School Open</td> <td> <?= $comments['school_open'] ?> </td> <td>Number of Time Present</td> <td> <?= $comments['student_attendance'] ?> </td> </tr> </table> </div> <!-- my table end here --> <!-- <div id='bgd'>&nbsp;</div> <div class='w3-container w3-padding ' id='wrapper'> <div class='w3-row'> <div class='w3-col'> <b>Name: <?= $studentname ?></b> </div> </div> <div class='w3-row'> <div class='w3-col'> <b>DOB: <?= $studentdob ?></b> </div> </div> <div class='w3-row'> <div class='w3-col'> <b>RegNo.: <?= $studentmatricno ?></b> </div> </div> <div class='w3-row'> <div class='w3-col w3-third'> Class: <?= $studentlevel ?><br> Session: <?= $studentsession ?> <?=$studentterm?><br> </div> <div class='w3-col w3-quarter w3-center'> <div class='w3-panel w3-blue summaryhead' >Pupils in class</div> <div class='w3-panel w3-xlarge summaryhead'> <?=$pupil_count?> </div> </div> <div class='w3-col w3-third'> <div class='w3-panel w3-blue summaryhead' >Percentage</div> <div class='w3-panel w3-xlarge summaryhead'> <?=round($grand_total/$subject_count, 2).'%'?> </div> </div> <div class='w3-col w3-third w3-center'> <div class='w3-panel w3-blue summaryhead' >Score</div> <div class='w3-panel w3-xlarge summaryhead'> <?=sprintf('%d/%d', $grand_total, $subject_count*100)?> </div> </div> </div>--> <div class='w3-responsive'> <table border='0' id='result-tbl'> <tr class='w3-border-bottom w3-dark-gray'> <th>&nbsp;</th> <th>Subject</th> <th>CA 1<br>&nbsp;<br>20</th> <th>CA 2<br>&nbsp;<br>20</th> <!--<th>CA 3<br>&nbsp;<br>10</th>--> <th>Exam<br>&nbsp;<br>60</th> <?=$term_headings?> <!-- <th>1st<br>Term<br>&nbsp;</th> <th>2nd<br>Term<br>&nbsp;</th> <th>3rd<br>Term<br>100</th> --> <th>Total</th> <th>Class<br>Avg</th> <th>Position</th> <th>Grade</th> <th>Comment</th> </tr> <?= $tdata ?> </table> </div> <div class='w3-panel w3-padding w3-small'> <b>Grades: </b><i><?= $grade_list ?></i> </div> <h4><b>Assessments</b></h4> <div class='w3-row-padding w3-small'> <div class='w3-col m5 w3-padding'> <b>Affective</b><br> <?= $afflist ?> </div> <div class='w3-col m1 w3-padding'> &nbsp; </div> <div class='w3-col m6 w3-padding'> <b>Psychomotor</b><br> <?= $psychlist ?> <br> <b>Comments</b><br> <div class='w3-container'> <b class='w3-small'>Teacher</b> <div class='w3-padding w3-border' ><?= $comments['teacher'] ?></div > <b class='w3-small'>Head</b> <div class='w3-padding w3-border' ><?= $comments['head'] ?></div > <b class='w3-small'>Next Term Begins on: </b> <?= $nextterm?> </div> </div> </div> </div> </body> </html> The above code is where I am having issue with. The position column. Here is the code to generate the position, but I don't know where to insert the code below into the above scripts, I have tried several ways but to no avail error_reporting(E_ALL); ini_set('display_errors', '1'); case 'E': $res = $pdo->prepare("SELECT subjectname , stname , score , @seq := IF(subjectname = @prevs, @seq+1, 1) as seq , @rank := IF(score = @prev, @rank, @seq) as rank , @prev := score as prev , @prevs := subjectname as prevs FROM ( SELECT sb.subjectname , concat(st.firstname, ' ', st.lastname) as stname , round( sum( score )) as score FROM student_class stc JOIN student st ON stc.studentid = st.id JOIN class cl ON stc.classid = cl.id JOIN level l ON cl.levelid = l.id JOIN course c ON l.id = c.levelid JOIN subject sb ON c.subjectid = sb.id JOIN result r ON r.courseid = c.id AND r.studentclassid = stc.id WHERE stc.semesterid = ? AND cl.id = ? GROUP BY c.id, sb.id, st.id ORDER BY subjectname, score DESC LIMIT 9223372036854775807 -- MariaDB bug workaround ) ordered JOIN (SELECT @prevs:='', @prev:=0, @seq:=0, @rank:=0) init "); $res->execute([ $semester, $class ]); $chke = 'checked'; $chkm = $chky = ''; break; default: $res = $pdo->prepare("SELECT subjectname , stname , score , @seq := IF(subjectname = @prevs, @seq+1, 1) as seq , @rank := IF(score = @prev, @rank, @seq) as rank , @prev := score as prev , @prevs := subjectname as prevs FROM ( SELECT sb.subjectname , concat(st.firstname, ' ', st.lastname) as stname , round( sum( score )/count(distinct sm.id)) as score FROM student_class stc JOIN student st ON stc.studentid = st.id JOIN class cl ON stc.classid = cl.id JOIN level l ON cl.levelid = l.id JOIN course c ON l.id = c.levelid JOIN subject sb ON c.subjectid = sb.id JOIN result r ON r.courseid = c.id AND r.studentclassid = stc.id JOIN semester sm ON stc.semesterid = sm.id JOIN session sn ON sm.sessionid = sn.id WHERE sm.sessionid = ? AND cl.id = ? GROUP BY cl.id, sb.id, st.id ORDER BY subjectname, score DESC LIMIT 9223372036854775807 -- MariaDB bug workaround ) ordered JOIN (SELECT @prevs:='', @prev:=0, @seq:=0, @rank:=0) init ORDER BY subjectname, score DESC "); $res->execute([ $session, $class ]); $chky = 'checked'; $chkm = $chke = ''; break; } /*function getOrdinalSuffix($score) { $score = abs($score) % 100; $lastChar = substr($score, -1, 1); switch ($lastChar) { case '1' : return ($score == '11') ? 'th' : 'st'; case '2' : return ($score == '12') ? 'th' : 'nd'; case '3' : return ($score == '13') ? 'th' : 'rd'; } return 'th'; } $list = ''; for ($score = 1; $score < 150; $score++) { $list .= "$score" . getOrdinalSuffix($score) . "\n"; } ///print "$list";*/ /******************************************** * Derive ordinal suffix for $n * * @param int $n the number * @returns string number with suffix eg 23rd */ /* function ordinal($n) { $str = "$n"; $t = $n > 9 ? substr($str,-2,1) : 0; $u = substr($str,-1); if ($t==1) return $str . 'th'; else switch ($u) { case 1: return $str . 'st'; case 2: return $str . 'nd'; case 3: return $str . 'rd'; default: return $str . 'th'; } }*/ // calling function here /******************************************** * Derive ordinal suffix for $n * * @param int $n the number * @returns string number with suffix eg 23rd */ function ordinal($n) { $str = "$n"; $t = $n > 9 ? substr($str,-2,1) : 0; $u = substr($str,-1); if ($t==1) return $str . 'th'; else switch ($u) { case 1: return $str . 'st'; case 2: return $str . 'nd'; case 3: return $str . 'rd'; default: return $str . 'th'; } } //function end $data = []; foreach ($res as $r) { if (!isset($data[$r['subjectname']])) { $data[$r['subjectname']]['students'] = []; } $position = ordinal($r['rank']); $data[$r['subjectname']]['students'][] = [ 'name' => $r['stname'], 'score' => $r['score'], 'rank' => $position ]; }
  11. Dear Team, I had created page for approval process for submitted data. The submitted data will display for the approver on bellow table In this table the approver will verify the submitted data by clicking approve button. Once he clicked the button , the popup will be display the data based on the "Approved for" category. Modal code is <div class="modal fade" id="Id01" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> <div class="modal-dialog modal-xl"> <form method="post" action="" > <div class="modal-content"> <div class="modal-header"> <div class="row" style="width:100%"> <div class="col-md-6"> <label>Dealer Name</label> <input type="text" name="dealername" class="dealername form-control" id="dealername" value="" style="width:100%" readonly/> </div> <div class="col-md-2" hidden> <label>Dealer ID</label> <input type="text" name="dealerid" class="dealerid form-control" id="dealerid" value="" style="width: 100%" readonly/> </div> <div class="col-md-3"> <label>Month</label> <input type="text" name="month" class="month form-control" id="month" value="" style="width: 100%" readonly/> </div> <div class="col-md-3"> <label>Approval for</label> <input type="text" name="approvalfor" class="approvalfor form-control" id="approvalfor" value="" style="width:100%" readonly/> </div> </div> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div class="tbl_fixed1"> <table cellpadding="0" cellspacing="0" border="0" id="Approval_View_Table" > <thead> </thead> <tbody> </tbody> </table> </div> </div> <div class="mb-1" style="margin-right:15px;margin-left:15px" > <label for="message-text" class="control-label">Remarks:</label> <textarea type="text" rows="2" class="form-control" required name="Remarks" value="" placeholder="Enter Remarks if any" ></textarea> </div> <div class="modal-footer"> <div class="d-grid gap-2 mx-auto d-md-block"> <button type="submit" name="Approve" id="Approve" class="btn btn-success btn-sm" style="box-shadow: 5px 5px 5px #839192" value="Approve" >APPROVE </button> <button type="submit" name="Return" id="Return" class="btn btn-danger btn-sm" value="Return" style="box-shadow: 5px 5px 5px #839192; margin-left: 15px" onclick="getLastYearData()">RETURN </button> </div> </div> </div> </form> </div> </div> Like above modal, the table header and data will append using below script. <script> // for get the data function Approve(field, id, month) { if (field == 'TIV') { $.ajax({ type: 'get', dataType: 'JSON', url: 'TIV_View.php', data: 'Month=' + month + '&dealerid=' + id, success: function (response) { var len = response.length; $("#Approval_View_Table tbody").empty(); $("#Approval_View_Table thead").empty(); var tr_hdr = "<tr>" + "<th align='center' style='width:5%'>S.No</th>" + "<th align='center' style='width:13.57%'>District</th>" + "<th align='center' style='width:13.57%' onclick='sortTable(0)'>Categoey</th>" + "<th align='center' style='width:13.57%' onclick='sortTable(1)'>Brand</th>" + "<th align='center' style='width:13.57%' onclick='sortTable(2)'>Sub Category</th>" + "<th align='center' style='width:13.57%' onclick='sortTable(3)'>Model</th>" + "<th align='center' style='width:12.14%'>Quantity</th>" + "<th align='center' style='width:15%'>Average Selling Price</th>" + "</tr>"; for (var i = 0; i < len; i++) { var Brand = response[i].Brand; var Category = response[i].Category; var Sub_Category = response[i].Sub_Category; var Model = response[i].Model; var Quantity = response[i].Quantity; var ASP = response[i].ASP; var District = response[i].District; var Dealer_Name = response[i].Dealer_Name; var tr_str = "<tr>" + "<td align='center'>" + (i + 1) + "</td>" + "<td >" + District + "</td>" + "<td>" + Category + "</td>" + "<td>" + Brand + "</td>" + "<td>" + Sub_Category + "</td>" + "<td>" + Model + "</td>" + "<td align='center'>" + Quantity + "</td>" + "<td align='center'>" + ASP + "</td>" + "</tr>"; $("#Approval_View_Table tbody").append(tr_str); document.getElementById("approvalfor").value = 'TIV Sales Data'; document.getElementById("month").value = month; document.getElementById("dealerid").value = id; document.getElementById("dealername").value = Dealer_Name; } $("#Approval_View_Table thead").append(tr_hdr); $('#Id01').modal('show'); } }); }else if (field == 'Marketingpromotion') { $.ajax({ type: 'get', dataType: 'JSON', url: 'Marketing_View.php', data: 'Month=' + month + '&dealerid=' + id, success: function (response) { var len = response.length; $("#Approval_View_Table tbody").empty(); $("#Approval_View_Table thead").empty(); var tr_hdr = "<tr>" + "<th align='center' style='width:5%'>S.No</th>" + "<th align='center' style='width:10%'>Department</th>" + "<th align='center' style='width:10%'>Categoey</th>" + "<th align='center' style='width:5%'>Activity</th>" + "<th align='center' style='width:5%'>Product Category</th>" + "<th align='center' style='width:7%'>Date</th>" + "<th align='center' style='width:11%'>Customers Foot Falls</th>" + "<th align='center' style='width:10%'>No.of.Enquiries</th>" + "<th align='center' style='width:5%'>No.of.Order</th>" + "<th align='center' style='width:5%'>Total Budget in LKS</th>" + "<th align='center' style='width:7%'>Total Spent in LKS</th>" + "<th align='center' style='width:7%'>Remarks</th>" + "<th align='center' style='width:7%'>Attachment</th>" + "<th align='center' style='width:7%'>Reference No</th>" + "</tr>"; for (var i = 0; i < len; i++) { var Department = response[i].department; var Category = response[i].Category; var Activity = response[i].Activity; var Product_category = response[i].Product_category; var Date = response[i].Date; var Customersfootfalls = response[i].Customersfootfalls; var No_of_Enquiries = response[i].No_of_Enquiries; var No_of_Orders = response[i].No_of_Orders; var Total_budget_lacs = response[i].Total_budget_lacs; var Total_spent_lacs = response[i].Total_spent_lacs; var Remarks = response[i].Remarks; var Month = response[i].Month; var dealerid = response[i].dealerid; var Attachment = response[i].Attachment; var Directory = response[i].Directory; var Referencenumber = response[i].Referencenumber; var Dealer_Name = response[i].Dealer_Name; var tr_str = "<tr>" + "<td align='center'>" + (i + 1) + "</td>" + "<td>" + Department + "</td>" + "<td>" + Category + "</td>" + "<td>" + Activity + "</td>" + "<td align='center'>" + Product_category + "</td>" + "<td align='center'>" + Date + "</td>" + "<td align='center'>" + Customersfootfalls + "</td>" + "<td align='center'>" + No_of_Enquiries + "</td>" + "<td align='center'>" + No_of_Orders + "</td>" + "<td align='center'>" + Total_budget_lacs + "</td>" + "<td align='center'>" + Total_spent_lacs + "</td>" + "<td align='center'>" + Remarks + "</td>" + '<td><a class="link" href="' + Directory + Attachment + '" target="_blank"> ' + Attachment + ' </a></td>' + "<td align='center'>" + Referencenumber + "</td>" + "</tr>"; $("#Approval_View_Table tbody").append(tr_str); document.getElementById("approvalfor").value = 'Marketing & Promotion Data'; document.getElementById("month").value = month; document.getElementById("dealerid").value = id; document.getElementById("dealername").value = Dealer_Name; } $("#Approval_View_Table thead").append(tr_hdr); $('#Id01').modal('show'); } }); }else if (field == 'Revenue') { $.ajax({ type: 'get', dataType: 'JSON', url: 'Revenue_View.php', data: 'Month=' + month + '&dealerid=' + id, success: function (response) { var len = response.length; $("#Approval_View_Table tbody").empty(); $("#Approval_View_Table thead").empty(); var tr_hdr = "<tr>" + "<th align='center' style='width:5%'>S.No</th>" + "<th align='center' style='width:10%'>Department</th>" + "<th align='center' style='width:35%'>Description</th>" + "<th align='center' style='width:10%'>Excavator</th>" + "<th align='center' style='width:10%'>Grader Category</th>" + "<th align='center' style='width:10%'>WheelLoader</th>" + "<th align='center' style='width:10%'>SLM</th>" + "<th align='center' style='width:10%'>Total Revenue</th>" + "</tr>"; for (var i = 0; i < len; i++) { var Department = response[i].Department; var Description = response[i].Description; var ExcavatorTarget = response[i].ExcavatorTarget; var ExcavatorActual = response[i].ExcavatorActual; var GraderTarget = response[i].GraderTarget; var GraderActual = response[i].GraderActual; var WheelLoaderTarget = response[i].WheelLoaderTarget; var WheelLoaderActual = response[i].WheelLoaderActual; var SLMTarget = response[i].SLMTarget; var SLMActual = response[i].SLMActual; var CompactorTarget = response[i].CompactorTarget; var CompactorActual = response[i].CompactorActual; var RevenueTarget = response[i].RevenueTarget; var RevenueActual = response[i].RevenueActual; var Dealer_Name = response[i].Dealer_Name; var Margin = response[i].Margin; var Month = response[i].Month; var tr_str = "<tr>" + "<td align='center'>" + (i + 1) + "</td>" + "<td align='center'>" + Department + "</td>" + "<td >" + Description + "</td>" + "<td align='center'>" + ExcavatorActual + "</td>" + "<td align='center'>" + GraderActual + "</td>" + "<td align='center'>" + WheelLoaderActual + "</td>" + "<td align='center'>" + SLMActual + "</td>" + "<td align='center'>" + RevenueActual + "</td>" + "</tr>"; $("#Approval_View_Table tbody").append(tr_str); document.getElementById("approvalfor").value = 'After Sales Revenue Data'; document.getElementById("month").value = month; document.getElementById("dealerid").value = id; document.getElementById("dealername").value = Dealer_Name; } $("#Approval_View_Table thead").append(tr_hdr); $('#Id01').modal('show'); } }); }else if (field == 'Equipementpopulation') { $.ajax({ type: 'get', dataType: 'JSON', url: 'Equipment_population_view.php', data: 'Month=' + month + '&dealerid=' + id, success: function (response) { var len = response.length; $("#Approval_View_Table tbody").empty(); $("#Approval_View_Table thead").empty(); var tr_hdr = "<tr>" + "<th align='center' style='width:10%'>S.No</th>" + "<th align='center' style='width:18%'>Category</th>" + "<th align='center' style='width:18%'>Warranty</th>" + "<th align='center' style='width:18%'>Non-Warranty</th>" + "<th align='center' style='width:18%'>No Of Machine Comissioned</th>" + "<th align='center' style='width:10%'>Total</th>" + "</tr>"; for (var i = 0; i < len; i++) { var Category = response[i].Category; var Warranty = response[i].Warranty; var Non_Warranty = response[i].Non_Warranty; var Machine_Comission = response[i].Machine_Comission; var Total = response[i].Total; var Dealer_Name = response[i].Dealer_Name; var EQ_Population_ID = response[i].EQ_Population_ID; var tr_str = "<tr>" + "<td align='center'>" + (i + 1) + "</td>" + "<td >" + Category + "</td>" + "<td align='center'>" + Warranty + "</td>" + "<td align='center'>" + Non_Warranty + "</td>" + "<td align='center'>" + Machine_Comission + "</td>" + "<td align='center'>" + Total + "</td>" + "</tr>"; $("#Approval_View_Table tbody").append(tr_str); document.getElementById("approvalfor").value = 'Equipment Population Data'; document.getElementById("month").value = month; document.getElementById("dealerid").value = id; document.getElementById("dealername").value = Dealer_Name; } $("#Approval_View_Table thead").append(tr_hdr); $('#Id01').modal('show'); } }); }else if (field == 'Employeeexpense') { $.ajax({ type: 'get', dataType: 'JSON', url: 'Employee_Expense_View.php', data: 'Month=' + month + '&dealerid=' + id, success: function (response) { var len = response.length; $("#Approval_View_Table tbody").empty(); $("#Approval_View_Table thead").empty(); var tr_hdr = "<tr>" + "<th align='center' style='width:5%'>S.No</th>" + "<th align='center' style='width:18%'>Employee Name</th>" + "<th align='center' style='width:7%'>Department</th>" + "<th align='center' style='width:7%'>Salary</th>" + "<th align='center' style='width:7%'>TA&DA</th>" + "<th align='center' style='width:7%'>Mobile Exp</th>" + "<th align='center' style='width:7%'>Medical</th>" + "<th align='center' style='width:7%'>LTA</th>" + "<th align='center' style='width:7%'>PF</th>" + "<th align='center' style='width:7%'>ESI</th>" + "<th align='center' style='width:7%'>Incentive</th>" + "<th align='center' style='width:7%'>Others</th>" + "<th align='center' style='width:7%'>Total</th>" + "</tr>"; for (var i = 0; i < len; i++) { var EmployeeName = response[i].EmployeeName; var Department = response[i].Department; var Salary = response[i].Salary; var TaandDa = response[i].TaandDa; var MobileExp = response[i].MobileExp; var MedicalReimbursement = response[i].MedicalReimbursement; var LeaveTravelAssistance = response[i].LeaveTravelAssistance; var ProvidendFund = response[i].ProvidendFund; var ESI = response[i].ESI; var Incentive = response[i].Incentive; var Others = response[i].Others; var Total = response[i].Total; var Dealer_Name = response[i].DealerName; var tr_str = "<tr>" + "<td align='center'>" + (i + 1) + "</td>" + "<td>" + EmployeeName + "</td>" + "<td align='center'>" + Department + "</td>" + "<td align='center'>" + Salary + "</td>" + "<td align='center'>" + TaandDa + "</td>" + "<td align='center'>" + MobileExp + "</td>" + "<td align='center'>" + MedicalReimbursement + "</td>" + "<td align='center'>" + LeaveTravelAssistance + "</td>" + "<td align='center'>" + ProvidendFund + "</td>" + "<td align='center'>" + ESI + "</td>" + "<td align='center'>" + Incentive + "</td>" + "<td align='center'>" + Others + "</td>" + "<td align='center'>" + Total + "</td>" + "</tr>"; $("#Approval_View_Table tbody").append(tr_str); document.getElementById("approvalfor").value = 'Employee Expense Data'; document.getElementById("month").value = month; document.getElementById("dealerid").value = id; document.getElementById("dealername").value = Dealer_Name; } $("#Approval_View_Table thead").append(tr_hdr); $('#Id01').modal('show'); } }); }else if (field == 'Infrastructureexpense') { $.ajax({ type: 'get', dataType: 'JSON', url: 'Infrastructure_Expense_view.php', data: 'Month=' + month + '&dealerid=' + id, success: function (response) { var len = response.length; $("#Approval_View_Table tbody").empty(); $("#Approval_View_Table thead").empty(); var tr_hdr = "<tr>" + "<th align='center' style='width:5%'>S.No</th>" + "<th align='center' style='width:15%'>Office Name</th>" + "<th align='center' style='width:8.9%'>Rent</th>" + "<th align='center' style='width:8.9%'>Maintenance</th>" + "<th align='center' style='width:8.9%'>Electricity</th>" + "<th align='center' style='width:8.9%'>Land line</th>" + "<th align='center' style='width:8.9%'>Courier / Postage</th>" + "<th align='center' style='width:8.9%'>Stationary</th>" + "<th align='center' style='width:8.9%'>Welfare</th>" + "<th align='center' style='width:8.9%'>Vehicle Running / Maintenance</th>" + "<th align='center' style='width:8.8%'>Total</th>" + "</tr>"; for (var i = 0; i < len; i++) { var Officename = response[i].Officename; var Rent = response[i].Rent; var Maintenance = response[i].Maintenance; var Electricity = response[i].Electricity; var Landlinetelephone = response[i].Landlinetelephone; var Courierorpostage = response[i].Courierorpostage; var Stationary = response[i].Stationary; var Welfare = response[i].Welfare; var Vehicle_Running_maintenance = response[i].Vehicle_Running_maintenance; var Total = response[i].Total; var Dealer_Name = response[i].Dealer_Name; var tr_str = "<tr>" + "<td align='center'>" + (i + 1) + "</td>" + "<td>" + Officename + "</td>" + "<td align='center'>" + Rent + "</td>" + "<td align='center'>" + Maintenance + "</td>" + "<td align='center'>" + Electricity + "</td>" + "<td align='center'>" + Landlinetelephone + "</td>" + "<td align='center'>" + Courierorpostage + "</td>" + "<td align='center'>" + Stationary + "</td>" + "<td align='center'>" + Welfare + "</td>" + "<td align='center'>" + Vehicle_Running_maintenance + "</td>" + "<td align='center'>" + Total + "</td>" + "</tr>"; $("#Approval_View_Table tbody").append(tr_str); document.getElementById("approvalfor").value = 'Infrastructure Expense Data'; document.getElementById("month").value = month; document.getElementById("dealerid").value = id; document.getElementById("dealername").value = Dealer_Name; } $("#Approval_View_Table thead").append(tr_hdr); $('#Id01').modal('show'); } }); }else if (field == 'Otherexpense') { $.ajax({ type: 'get', dataType: 'JSON', url: 'Other_Expense_view.php', data: 'Month=' + month + '&dealerid=' + id, success: function (response) { var len = response.length; for (var i = 0; i < len; i++) { var costofbankguarantee = response[i].costofbankguarantee; var paidpartsandlubsinventorycarryingcost = response[i].paidpartsandlubsinventorycarryingcost; var marketingevents = response[i].marketingevents; var discounttocustomer = response[i].discounttocustomer; var LegalandTaxationExpense = response[i].LegalandTaxationExpense; var Total = response[i].Total; var Dealer_Name = response[i].Dealer_Name; document.getElementById("approvalfor1").value = 'Other Expense Data'; document.getElementById("month1").value = month; document.getElementById("dealerid1").value = id; document.getElementById("dealername1").value = Dealer_Name; document.getElementById("costofbankguarantee").value = costofbankguarantee; document.getElementById("paidpartsandlubsinventorycarryingcost").value = paidpartsandlubsinventorycarryingcost; document.getElementById("marketingevents").value = marketingevents; document.getElementById("discounttocustomer").value = discounttocustomer; document.getElementById("LegalandTaxationExpense").value = LegalandTaxationExpense; document.getElementById("Total").value = Total; } $('#Id02').modal('show'); } }); } } </script> All the tables are working properly. I want to short all the table column. Can any one please help me how to do that.
  12. If you're only internet is a touch screen device, I feel sorry for you.

  13. have you determined that the code where the query is at is even being executed, by echoing something at that point? you likely have a typo, but because of all the isset() statements, you are hiding any error messages that that php would give you. except for unchecked checkbox/radio fields, all form fields will be set once the form has been submitted. the only time you should have isset() statements in your form processing code are for checkbox/radio fields. instead of the huge line of isset() statements, just detect if a post method form has been submitted. likewise, all that logic for the $id variable is (probably) pointless. you should also trim all the input data before validating it. you should validate all the data before using it, storing validation errors in an array using the field name as the array index. you should ALWASY list out the columns in the INSERT query. you should get your code to work for one user input form field, then worry about all the code needed for the rest of the fields. if you have more than about 2-3 form fields, you should use a data-driven design, where you have the expected fields defined in an array, along with any validation rules, and any processing rules (is a field used in the insert query, the set part of an update query, the where part of an update query, the where part of a delete query), then loop over this defining array and use simple general-purpose logic to operate on each field, rather than to spend your time writing out repeated code for 38 different fields.
  14. there's no field named submit in the form, and even if there was, it won't be included in the form data since it isn't a successful form control at the time the form was submitted, since the form is being submitted via an on change event. i recommend that you instead detect in the php code if a post method from was submitted. i also recommend that you log the $_POST and $_FILES data at the start of the php code so that you can see what is being submitted. none of this has anything to do with the linked to stack overflow thread. also in the php code, if the total size of the form data exceeds the post_max_size setting, both the $_POST and $_FILES arrays will be empty. after you have detected if a post method form was submitted, you must detect this condition and setup a message for the user that the form data was too large and could not be processed. if there is $_FILES data, you must then test the ['error'] element before using any of the uploaded file information. the ['error'] element will be a zero if the file successfully uploaded and can be processed. lastly, since you are using ajax to upload the file, nothing the upload.php file does in the way of redirecting will have any affect on the web page being displayed in the browser. you would want to output failure or success messages back to the ajax code to be displayed in the browser.
  15. the code is probably redirecting around a couple of times, back to the form without any get parameters. based on the paths in the require statements in the two pieces of posted code, you either have multiple database.php files at different paths OR auth.php isn't just the 2nd piece of code you have posted and there's more to this than what has been posted? what's the full code for auth.php? next, by putting the form and the form processing code on different pages and accepting a get input that controls what message gets displayed, you have more code than is needed and you are opening up your site to a phishing attack, where someone can steal your user's login credentials on a copy of your site, then redirect them back to your site, making it look like they just mistyped a value. here's a laundry list of things you should/should not be doing - put the form processing and the form on the same page. don't attempt to detect if form field(s) are set to detect if the form has been submitted. if you had 30 or a 100 fields, would writing out isset() code using all those fields make sense? instead, just detect if a post method form was submitted. all the always-set fields will then be set. keep the form data as a set in an array variable, then operate on elements in this array variable throughout the rest of the code. forget you ever saw this validate() function. it can from bad code at w3schools, is misnamed, and the only thing it is doing 'properly' is to trim the data value. after you do item #3 on this list, you can trim all the data at once, using one single php statement. when you validate the input data, store user/validation errors in an array using the field name as the array index. after the end of all the validation logic, if the array holding the errors is empty, use the form data. use a prepared query when supplying external, unknown, dynamic values to an sql query when it gets executed to prevent any sql special characters from being able to break the sql syntax, which is how sql injection is accomplished. you would also want to switch to the much simpler PDO extension. don't store passwords as plain-text. use php's password_hash() and password_verify() list out the columns you are selecting in a query. if the query matches a row of data, you know that the WHERE clause was true. there's no good reason to compare in the php code the value(s) that were used in the WHERE clause. Don't Repeat Yourself (DRY.) the only value you should store in a session variable upon successful login is the user's id (autoincrement primary index.) you should query on each page request to get any other user information. upon successful completion of the post method form processing code, redirect to the exact same url of the current page to cause a get request for that page. this will prevent the browser from trying to resubmit the form data if the visitor reloads the page or navigates back to the page. if there are errors at step #7 in this list, the code will continue on to display the html document, display any errors in the errors array, redisplay the form, populating the appropriate form field values with the existing data. to get a form to submit to the same page it is on, simply leave out the entire action='...' attribute. any value you output on a web page needs to have htmlentities() applied to it to help prevent cross site scripting.
  16. is the following a true statement - you are picking an existing 'post' to edit via the $_GET['id'] input, and what you are showing us is the code that would allow the category(_id) to be changed? are you also editing other 'post' columns? next, you (will) have an issue if there are user/validation errors in the post method form processing code, in that you would want to initially populate the form field values with the existing data, then after the form has been submitted, populate the form field values with the submitted form data, so that the user doesn't need to keep reentering the changes over and over. the way to do this is to define an internal array variable that will initially receive the existing data, if the form has never been submitted (this internal array variable will be empty), then receives a trimmed working copy of the $_POST data inside the post method form processing code. this variable then gets used throughout the rest of the code. an element in this array variable would be what gets used in the code setting the selected attribute for the category select/option menu. $post in SELECT ... FROM posts ... code is this variable. here's a laundry list of issues based on the snippets of code - there's no useful comments to help anyone looking at the code know what it is trying to do, i.e. what my first paragraph is asking. the $_GET['id'] input is a 'required' input for this page. if it isn't set, doesn't contain a integer > 0, or the SELECT query using it doesn't match a row of data, that's an application error. you should trim, then validate this input. if it isn't valid, setup and display a unique and helpful error message for each possible type of failure. only use it if it is valid, then if the query doesn't match a row of data, setup a unique and helpful error message for that and don't even display the edit form if there's no data to edit. i recommend that you pre-fetch any data from a SELECT query into an appropriately named php variable, then test/use that variable in the html document. you are doing this for the $post data. do the same for the category data. this will separate the different concerns in the code, making it easier to test, debug, and maintain the code. don't attempt to detect if the submit button is set. there are cases where it won't be. instead detect if a post method form was submitted. if there can be more than one set of post method form processing code on a page, use a hidden field with a unique value in it to control which set of form processing code to execute. ALL the post method form processing code needs to be inside the conditional statement that has detected if the form has been submitted. if the UPDATE query can result in duplicate data for columns that must be unique, you need error handling for that query that tests the error number and sets up a unique and helpful error message for any problem with the data values that were submitted. to get the form to submit to the same page it is on, leave the entire action='...' attribute out of the form tag. you should use the FILTER_VALIDATE... flags. not the FILTER_SANITIZE ... flags. you want to validate input data, not sanitize it. if it is not valid, repopulate the field with the value and let the user correct what is wrong with it. since you are not testing the return value from the filter_var() calls, you doesn't actually know if the test failed or not before using the values. the current code is using boolean false values when filter_var() fails, which can trigger sql data type errors, which is exactly what hackers want as feedback when they intentionally do things to trigger errors. you should also use prepared queries when supplying external, unknown, dynamic values to a query when it gets executed. you would also want to switch to the much simpler PDO extension. a prepared query, while only adding one php statement per query, when using the PDO extension, actually simplifies the sql query syntax and provides protection for all datatypes.
  17. Hi, I'm currently making a form where student sign up for their clubs(clubs-join.php). Then, after they sign up, they will be sent to another page called clubs-result.php. They will see their output like this: Thanks for joining Mr. a You have joined the following clubs: (this is based on what clubs Mr a chose) Gentlemen Club(GT) Pet Society Club(PS) However, I could only get this output: Thanks for joining Mr. a You have joined the following clubs: Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Practical\Practical3\clubs-result.php on line 19 This is clubs-join.php <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>Join TARUC's interest clubs</h1> <form method="post" action="clubs-result.php"> Gender: <input type="radio" name="gender" value="male"> Male <?php if (isset($gender) && $gender == "male") { echo "checked"; } ?> <input type="radio" name="gender" value="female"> Female<br><br> <?php if (isset($gender) && $gender == "female") { echo "checked"; } ?> Name: <input type="text" maxlength="50" id="name" name="name"><br><br> Mobile Phone: <input type="text" maxlength="20" id="phone" name="phone"><br><br> Interest Clubs: (Select 1 to 3 clubs)<br> <!-- $clubs = array("Ladies Club", "Gentlemen Club", "DOTA and Gaming Club", "Manga and Comic Club", "Pet Society Club", "Farmville Club");--> <?php $club = array( 'LD' => 'Ladies Club', 'GT' => 'Gentlemen Club', 'DG' => 'DOTA and Gaming Club', 'MC' => 'Manga and Comic Club', 'PS' => 'Pet Society Club', 'FV' => 'Farmville Club' ); foreach($club as $code => $clubName){ echo '<input type = "checkbox" class = "radio" value = "$club" name = "club" />'; echo $clubName; echo'<br>'; } ?> <!-- <input type = "checkbox" class = "radio" value = "Ladies Club(LD)" name = "club" />Ladies Club<br> <input type = "checkbox" class = "radio" value = "Gentlemen Club(GT)" name = "club" />Gentlemen Club<br> <input type = "checkbox" class = "radio" value = "DOTA and Gaming Club(GC)" name = "club" />DOTA and Gaming Club<br> <input type = "checkbox" class = "radio" value = "Manga and Comic Club(MCC)" name = "club" />Manga and Comic Club<br> <input type = "checkbox" class = "radio" value = "Pet Society Club(PS)" name = "club" />Pet Society Club<br> <input type = "checkbox" class = "radio" value = "Farmville Club(FV)" name = "club" />Farmville Club<br>--> <input type="submit" value="Submit"> <input type="reset" value="Reset"> </form> <?php // define variables and set to empty values $name = $phone = $gender = $club = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $phone = test_input($_POST["phone"]); $gender = test_input($_POST["gender"]); $club = test_input($_POST["club"]); } ?> </body> </html> This is clubs-result.php <?php $gender = $_POST["gender"]; $name = $_POST["name"]; $club = $_POST["club"]; echo "<h1>Thanks for joining</h1>"; if ($gender == "female") { echo "<h2><b>Ms. $name</b></h2>"; } else { echo "<h2><b>Mr. $name</b></h2>"; } echo "You have joined the following clubs:<br>"; if (isset($club)) { echo "<ul>"; foreach ($club as $code => $clubName) { echo "<li>"; echo ($clubName($code)); echo "</li>"; } echo "</ul>"; } I tried changing the coding at $club part, but I still cant get the output that I want, can anyone point out my mistake?
  18. Hi all I have the following file of json data (json_file.json): { "name": "as.up.data.forward", "time": "2022-07-27T09:46:50.565402155Z", "identifiers": [{ "device_ids": { "device_id": "my_arduino-device", "application_ids": { "application_id": "mydevicename" }, "dev_eui": "012345678910", "join_eui": "109876543210", "dev_addr": "123456" } }] } I am using the following code to extract and display some of the data: <?php $json = file_get_contents('json_file.json'); // Decode the JSON file $json_data = json_decode($json,true); $identifiers_array = ($json_data['identifiers']); foreach($identifiers_array as $elem) { print_r($elem['device_ids']['application_ids']['application_id']); echo("<br/>"); print_r($elem['device_ids']['dev_eui']); echo("<br/>"); print_r($elem['device_ids']['device_id']); } ?> The output as expected, shows: mydevicename 012345678910 my_arduino-device My Question is: Can I not avoid the use of the foreach by doing something along the lines of: print_r($identifiers_array['device_ids']['application_ids']['application_id']); (can I not point to a specific element?) I'm really just wondering if I am following a 'best practice' method here. Thanks Russell
  19. hello i have my header externally here i wanted to add a php script so that the role can be queried in the database. I see the header on every page but the php script only doesn't work in the header if I put the script on the page it works can someone help me here? function template_header($title) { echo <<<EOT <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,minimum-scale=1"> <title>$title</title> <link href="style.css" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"> </head> <body class="loggedin"> <header> <h1>DaKo Website</h1> <a class="responsive-toggle" href="#"> <i class="fas fa-bars"></i> </a> </header> <nav class="navtop responsive-width-100 responsive-hidden"> <div> <h1>DaKo Website Status: <?=$usrrole?></h1> <a href="home.php"><i class="fas fa-home"></i>Home</a> <a href="profile.php"><i class="fas fa-user-circle"></i>Profile</a> <?php if($usrrole == 'Admin'):?> <a href="admin/index.php" target="_blank"><i class="fas fa-user-cog"></i>Admin</a> <?php endif;?>
  20. one of the file uploads is failing, but because you don't have error checking and validation logic, you don't know if or why it is failing. the post method form processing code should - detect if a post method form has been submitted. do not attempt to test if the submit button is set. if the total size of the form data exceeds the post_max_size setting, both the $_POST and $_FILES arrays will be empty. you need to test for this condition and setup a message letting the user know that the form data was too large and could not be processed. if there is $_FILES data, you need to test the ['error'] element of each file to make sure it uploaded without any error before using any of the file data. there's a list of the error values at https://www.php.net/manual/en/features.file-upload.errors.php don't copy variables to other variables for nothing. this is just a waste of your time typing. just use the original variables. you need to validate all input data before using it, storing validation errors in an array using the field name as the array index. if an input is 'required' and it is an empty string or it must have a specific format, setup a unique message for each validation error telling the user what was wrong with the data value. after the end of all the validation logic, if there are no errors (the array holding the errors will be empty), use the submitted form data. using a prepared query (the PDO database extension is much simpler to use than the mysqli extension), insert the data and get the last insert id from that query. use the id as the file part of the filename. as already mentioned, user submitted data can be anything and should be carefully used or in this case not used at all as part of the filename.
  21. then $_POST['submit'] is likely not set and that block of code isn't running or you have some code that you didn't post that's setting it to null. do you have php's error_reporting set to E_ALL and display_errors set to ON, preferably in the php.ini on your system, so that php would help you by reporting and displaying all the errors it detects? you should be getting an undefined variable error for $mentor and another error at the foreach() statement about it being null. next, a post method form is using when performing an action on the server, such as inserting, updating, deleting data, or sending an email, ... Yo should be using a get method form/link for searching for data to display.
  22. Hi there, I am trying to view a list of customers that are currently assigned to my by my login ID (or a users login ID) in the database and view them in a list. Nothing is displaying in the list. Here is what I have written so far. $stmt = $pdo->prepare('SELECT id, username,email,role FROM accounts WHERE id = ?'); $stmt->execute([$_SESSION['id']]); $account = $stmt->fetch(PDO::FETCH_ASSOC); if(isset($_POST['submit'])){ $stmt = $pdo->prepare('SELECT * FROM contacts where mentor = ?'); $stmt->execute([$account['id']]); $mentor = $stmt->fetchAll(PDO::FETCH_ASSOC); } Table - contacts Column name - mentor - stores user ID from accounts table Table - accounts Column name - id Table to view clients <table class="table table-sm table-hover" id="myTable"> <tr class="header"> <th scope="col">Name</th> <th scope="col">Mobile</th> <th scope="col">Date of Birth</th> <th scope="col">Status</th> <th scope="col">Photo</th> <th>Action</th> </tr> <?php if($fullContactInfo == null){ echo "<tr><td>No Record Found!</td></tr>"; }else{ foreach($mentor as $info){ ?> <tr> <td><?php echo $info['name']; ?> <?php echo $info['last_name']; ?></td> <td><?php echo $info['mobile_number']; ?></td> <td><?php $date = $info['dob']; $bits = explode('-', $date); $date = $bits[2] . '/' . $bits[1] . '/' . $bits[0]; echo $date; ?></td> <td><?php echo $info['status']; ?></td> <td><img src="<?php echo $info['image']; ?>" alt="" style="height: 30px; width:30px;"></td> <td> <a href="display.php?id=<?=$info['id']?>"><i class="fa fa-eye" aria-hidden="true"></i></a> <a href="update.php?id=<?=$info['id']?>"><i class="fas fa-pencil-alt"></i></a> </td> </tr> <?php } } ?> </table> I var_dump of $accounts shows the account information as required and a dump of $mentor shows NULL Any help would gratefully be appreciated. Cheers.
  23. I have a website that l use Book your travel theme lately l realized that my site is giving a widescreen on mobile version for some reason! l have only made an update for the plugins 2 days ago l dont remember having that problem after l updated the plugin My main site is in Arabic language and should be viewing right to left but it鈥檚 giving a wide screen from the left side on posts pages here is an example https://turkiyaholidays.com/%d9%81%d9%86%d8%a7%d8%af%d9%82-%d8%aa%d9%82%d8%b3%d9%8a%d9%85/ Looking for your urgent help thank you
  24. Im sorry, but I don't understand totally 馃槗. I was using many tutorials to write that "site" and it was going easy until this moment. My registration was working, but now it doesn't. I don't even know how to test it because its always showing me that error and Im soo newbie 馃槶. I don't know where to put this exactly <?php echo '<pre>'; print_r($_POST); echo '</pre>'; ?> <form method='post'> <input type='text' name='somefield'> <input type='submit'> </form> Now I got this here and I've modified form by deleting action="registerFinal.php" from it, but still shows that error: <tbody> <form method="post"><!-- ten fragment inputow jest wysylany submitem do pliku registerFinal.php --> <tr class="logRegSiteTextBox"> <td>login: </td> <td><input type="text" placeholder="tak" title="nie" name="loginREGfield" required></td> </tr> <tr class="logRegSiteTextBox"> <td>e-mail: </td> <td><input type="text" placeholder="tak" title="nie" name="emailREGfield" required></td> </tr> <tr class="logRegSiteTextBox"> <td>has艂o: </td> <td><input type="password" placeholder="tak" title="nie" name="passwordREGfield" required></td> </tr> <tr class="logRegSiteTextBox"> <td>powt贸rz has艂o: </td> <td><input type="password" placeholder="tak" title="nie" required></td> </tr> <tr> <td></td> <td><input type="submit" value="Zarejestruj si臋" class="myButtonREG"></td> </tr> </form> <?php echo '<pre>'; print_r($_POST); echo '</pre>'; ?> </tbody> I cannot mix form with html table... then Im not mixing it now: <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Rejestracja</title> <link rel="icon" href="./pic/icon.png"> </head> <body style="background-color:#000000;"> <main> <link rel="stylesheet" type="text/css" href="style.php"/> <div class="logRegSiteImage"> <br> <div class="logRegSiteText">Fraktomeda</div> <div class="logRegSite2Text">Rozleg艂y Wszech艣wiat czeka!</div> <br><br><br> <div class="logRegSite3Text">Strategiczna gra przegl膮darkowa, w kt贸rej przejmujesz w艂adz臋 nad planet膮, aby wkr贸tce kolonizowa膰 kolejne 艣wiaty, zawiera膰 sojusze i niszczy膰 wrog贸w. To tutaj do艣wiadczysz ogromu Wszech艣wiata, jego wszelkich wspania艂o艣ci oraz zjawisk kt贸re badane s膮 przez naukowc贸w od wiek贸w. Przejmij dowodzenie ju偶 teraz i poka偶, jak buduje si臋 pot臋g臋 mi臋dzygalaktyczn膮!</div> <br><br> <div id="blackBG"> <a href="./login.php" class="myButtonLOG">Zaloguj si臋</a> <a href="./register.php" class="myButtonREG">Zarejestruj si臋</a> </div> <br><br><br> <table class="horizontalCenter"> <thead> <tr> <th colspan="3" class="logRegSite3Text">Rejestrowanie</th> </tr> </thead> <tbody> <!--<form method="post"><!-- ten fragment inputow jest wysylany submitem do pliku registerFinal.php <tr class="logRegSiteTextBox"> <td>login: </td> <td><input type="text" placeholder="tak" title="nie" name="loginREGfield" required></td> </tr> <tr class="logRegSiteTextBox"> <td>e-mail: </td> <td><input type="text" placeholder="tak" title="nie" name="emailREGfield" required></td> </tr> <tr class="logRegSiteTextBox"> <td>has艂o: </td> <td><input type="password" placeholder="tak" title="nie" name="passwordREGfield" required></td> </tr> <tr class="logRegSiteTextBox"> <td>powt贸rz has艂o: </td> <td><input type="password" placeholder="tak" title="nie" required></td> </tr> <tr> <td></td> <td><input type="submit" value="Zarejestruj si臋" class="myButtonREG"></td> </tr> </form>--> </tbody> </table> </div> <form method="post"> <input type="text" placeholder="tak" title="nie" name="loginREGfield" required> </form> <?php echo '<pre>'; print_r($_POST); echo '</pre>'; ?> </main> </body> </html> Not working, same problem
  25. while this isn't the cause of the problem, you need to validate the resulting web page(s) at validator.w3.org you cannot spread the markup for a form throughout a html table. you can put a compete html table inside a form and you can put a complete form inside a single table data cell <td>...</td>, but you cannot intermix the markup for a table and a form. also, the form and form processing code should be on the same page. this will simplify all the code. the code for a page should be laid out in this general order - initialization post method form processing get method business logic - get/produce data needed to display the page html document post method from processing code should - detect if a post method form was submitted. keep the form data as an array variable, then operate on elements in this array variable throughout the rest of the code. trim all the inputs at once. when you do item #2 on this list, you can trim all the data using one single line of code. validate all the inputs, storing validation errors in an array using the field name as the array index. after the end of all the validation logic, if the array holding the errors is empty, use the submitted form data. an insert/update query can result in duplicate data for things that must be unique, such as a username or email column. your code should handle query errors in these cases. the simplest way of doing this is to use exceptions for database statement errors and have exception try/catch logic only is these cases. the catch logic would test the error number and if it is for something that the visitor can correct, setup a message telling the visitor exactly what was wrong with the data that they submitted, so that they can potentially submit new value(s) that will succeed. for all other error numbers, just re-throw the exception and let php handle it. after the end of the form processing logic, if there are no errors, redirect to the exact same URL of the current page to cause a get request for the page. this will prevent the browser from trying to resubmit the form data should the visitor reload the page or navigate away from and back to that URL. if you want to display a one-time success message, store it in a session variable, then test, display, and clear that session variable at the appropriate location in the html document. if there are errors at item #5 on this list, the code would continue on to display the html document, display any errors, redisplay the form, populating the field values with any existing data. any dynamic value you output on a web page should have htmlentities applied to it to help prevent cross site scripting. the http 405 error means you are using a method that isn't supported or configured correctly. this isn't being cause by anything you are doing with the database server. what is the actual URL of the form page and what is the url in the browser's address bar after you submit the form? as a test, to see if just a basic form will work, make a new .php page with the following and test it - <?php echo '<pre>'; print_r($_POST); echo '</pre>'; ?> <form method='post'> <input type='text' name='somefield'> <input type='submit'> </form> after you submit the form, the print_r output should show an array with the field name as an index and whatever value you type into the field.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.