I think it is best to just get all the records in the table, ordered by date and fill in the gaps using PHP.
It is difficult to generate a sequence of dates in MySQL. You often see solutions with stored procedures and temp tables, like here.
In PHP, create a loop that goes through each date until today. In the loop you can check for each record if a date exists in the results of the query. If not, you can just render an empty row or whatever you want.
This check is not so expensive, because you sort the results in the query by date as well, so you will only need to check if the current record has the same date as the current date in the loop.
If the date of the record is greater, you should not process this record yet. If the date is the same, process the record and fetch the next record.