Ich versuche, eine Reihe von jedem Auto mit den Daten, die das Auto angestellt ist, zu bekommen.Erhalten Sie alle Daten zwischen 2 Daten aus der Datenbank pro Art von Artikel
Bisher habe ich eine Funktion, die alle Daten aus allen Rechnungszeilen anstelle eines Arrays für jedes Auto erhält. Wie kann ich das zur Arbeit bringen?
Mein Ziel wird es sein, eine Liste der Autos zu bekommen, die im ausgewählten Zeitraum verfügbar sind, aber zuerst versuche ich, es mit statischem Start und Enddatum zum Laufen zu bringen. Ich dachte daran, eine Schleife zu bekommen, die alle verschiedenen Auto-IDs bekommt und für jede Auto-ID wird ein Array erstellt, das alle Daten enthält.
<?php
$start_date = '2017-06-12';
$end_date = '2017-06-14';
$items = array();
$result = mysqli_query($con, "SELECT * FROM invoice_line ");
$carid = null;
while ($car = mysqli_fetch_array($result)) {
$carid = $car['car_car_id'];
echo $carid;
//second part
$car = mysqli_query($con, "SELECT * FROM invoice_line WHERE car_car_id = '$carid' AND start_date>='$start_date' AND end_date<='$end_date'");
while ($car_available = mysqli_fetch_array($car)) {
echo $car_available['car_car_id'];
}
} // end second part
?>
<?php
function getDateRange($startDate, $endDate, $format="Y-m-d")
{
//Create output variable
$datesArray = array();
//Calculate number of days in the range
$total_days = round(abs(strtotime($endDate) - strtotime($startDate))/86400, 0) + 1;
//Populate array of weekdays and counts
for($day=0; $day<$total_days; $day++)
{
$datesArray[] = date($format, strtotime("{$startDate} + {$day} days"));
}
//Return results array
return $datesArray;
}
?>
Update: änderte ich den Code zu dem, was ich habe auf die Kommentare jetzt basiert, statt mir alle Autos geben, die nicht in Gebrauch sind die mir die Autos geben, wo der Start- und Enddatum irgendwo zwischen das $ start_date end $ end_date. Also, wie kann ich das verwenden, um eine Liste der Autos zu erhalten, die in diesem Zeitraum nicht verwendet werden. Hier unten ist ein Beispiel der DB, wie Sie sehen können, dass mehrere Datensätze mit derselben Dose aber in einem anderen Zeitraum sein können. Zum Beispiel wenn $ start_date ist 2017-02-03 und $ end_date ist 2017-02-05 Auto Nummer 1 und 3 sollte dort sein, aber wenn das Startdatum ist 2017-06-11 Ende und Datum ist 2017-06-13 nur Auto-Nummer man sollte dort sein, weil es eine Aufzeichnung dieses Autos gibt, das in diesem Zeitraum benutzt wird.
-- phpMyAdmin SQL Dump
-- version 4.6.4
-- https://www.phpmyadmin.net/
--
-- Host: localhost:8889
-- Generation Time: Jun 11, 2017 at 10:43 AM
-- Server version: 5.6.28
-- PHP Version: 7.0.10
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Database: `rentacar`
--
-- --------------------------------------------------------
--
-- Table structure for table `invoice_line`
--
CREATE TABLE `invoice_line` (
`car_car_id` int(10) UNSIGNED NOT NULL,
`invoice_invoice_number` int(10) UNSIGNED NOT NULL,
`start_date` date NOT NULL,
`end_date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `invoice_line`
--
INSERT INTO `invoice_line` (`car_car_id`, `invoice_invoice_number`, `start_date`, `end_date`) VALUES
(3, 2, '2017-06-12', '2017-06-14'),
(2, 2, '2017-06-10', '2017-06-20'),
(1, 1, '2017-06-01', '2017-06-03');
--
-- Indexes for dumped tables
--
ist es viel effizienter, den Filter auf der SQL-Anweisung zu haben, so dass Sie nur diejenigen erhalten, die Sie brauchen, es sei denn, Sie brauchen die ganze Liste an anderer Stelle – Isac
Ok ich brauche diese Liste nirgendwo anders, aber ich bin nicht so gut mit Abfrage aber sieh es jetzt an – marijn
SELECT * FROM invoice_line WHERE car_id = $ auto und start_date> = '$ start_date' und enddatum <= '$ end_date' – Isac