Avatar billede vels Nybegynder
06. marts 2012 - 19:59 Der er 11 kommentarer og
1 løsning

Første ledige dato

Hej

Jeg har en tabel som har en colum som er en dato.

Jeg har brug for den første dato som ikke er i tabellen, dvs det kan være dags dato eller en anden ud fra tabellen.

eks: (dags dato=2012-03-06)

-----------------------
|        tabel        |
-----------------------
|  id  |  dato        |
-----------------------
|  1  |  2012-03-06  |
|  1  |  2012-03-07  |
|  1  |  2012-03-08  |
-----------------------

Forventer resultat: 2012-03-09

Hvis tabellen så sådan her ud (dags dato=2012-03-06):
-----------------------
|        tabel        |
-----------------------
|  id  |  dato        |
-----------------------
|  1  |  2012-03-08  |
-----------------------

Forventer resultat: 2012-03-06

Nogle forslag til hvordan jeg nemmest får dato'en?
Avatar billede mediman Nybegynder
06. marts 2012 - 20:03 #1
Er det implicit at dato ikke må være < dags dato?
Avatar billede vels Nybegynder
06. marts 2012 - 20:06 #2
Hej

Det må gerne være dags dato, bare dags dato ikke er i tabellen.

Hvis dags dato er i tabellen, så er næste kandidat dags dato+1 hvis den heller ikke er i tabellen.

/Jesper
Avatar billede mediman Nybegynder
06. marts 2012 - 20:11 #3
Hvilket format ligger dato i?
Avatar billede vels Nybegynder
06. marts 2012 - 20:12 #4
Hej

Det ligger sådan her:
2012-03-20

yyyy-mm-dd
Avatar billede mediman Nybegynder
06. marts 2012 - 20:14 #5
er det en varchar(10)?
Avatar billede vels Nybegynder
06. marts 2012 - 20:17 #6
Nej

Typen "date" i mysql

/Jesper
Avatar billede mediman Nybegynder
06. marts 2012 - 20:30 #7
Nå, ok, jeg plejer at bruge time - men logikken er vel den samme.

Lav en select order by date where date >= today.

Sæt $match = false

Lav derefter en mysql_fetch_array med en (if $match==false) hvor du tæller dagen op med en for hvert gennemløb.

Sæt $match = true første gang du har et hit.
Avatar billede vels Nybegynder
06. marts 2012 - 20:45 #8
Det vil jeg forsøge mig med. SMider du et svar?
Avatar billede mediman Nybegynder
06. marts 2012 - 20:55 #9
JA - når du melder tilbage at det virker :-)
Avatar billede vagnk Juniormester
07. marts 2012 - 08:55 #10
Æhem. Hva ska han gøre hvis han skal gennem øvelsen to gange på samme dag?
Avatar billede vels Nybegynder
01. april 2012 - 19:53 #11
Jeg kom frem til det her:

date_default_timezone_set("Europe/Paris");

//$db = new Database;

// create the $db object
$db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);

// connect to the server
$db->connect();
$ts = time();

$try_date = date("Y-m-d", $ts);

$date_count=1;
while ($date_count <> 0) {

$sql = "SELECT COUNT(*) as free_date
          FROM bookingdate
          WHERE booking_date = '".$try_date."'";

$record = $db->query_first($sql);

$date_count = $record['free_date'];

$try_date = date("Y-m-d", strtotime($try_date. ' + 1 day'));

}
$try_date = date("j-n-Y", strtotime($try_date. ' - 1 day'));
echo $try_date;
Avatar billede vels Nybegynder
01. juli 2012 - 20:01 #12
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester