Just nu i M3-nätverket
Gå till innehåll

Tid och PHP/MySQL


mindsleep

Rekommendera Poster

Kanske hör hemma i något SQL forum. Men jag frågar här eftersom jag använder PHP för att plocka ut informationen från MySQL.

 

Jag har en tabell som innehåller start och stop tid för en dag.

 

Ex: MondayStart och MondayStop.

 

De ska innehålla tidsangivelser...ex: 08:35 eller 22:36

 

Totalt handlar det om 14 fält (2 för varje dag i veckan. En start och en stopp). Jag kom tyvärr inte på att göra det smartare och jag tror jag har mera nytta av det då jag hämtar ut informationen.

 

Hursomhelst så har jag jätteproblem att välja vilken typ som fälten ska vara. TIME ser bra ut. Men vissa dagar så finns varken start eller stop tid. så jag hade tänkt kunna markera det på något sätt i fältet då jag matar in poster så att dessa inte ska väljas.

 

Men om jag lämnar ett TIME fält tomt vid inmatning sätts det automatiskt till 00:00:00 vilket är en giltig tid (Tolv på natten).

 

Jag skulle kunna lösa detta igenom att ha ytterligare fält i tabellen typ "isClosed" Men det blir 7 onödiga fält till (1 för varje dag).

 

Frågan som jag kommer köra ser ungefär så här:

SELECT * FROM tabell WHERE time>MondayStart AND time<MondayStop

 

time är då aktuell tid som jag får ut igenom PHP med korrekt.

 

Så...hur ska jag lösa detta lite snyggt? 7 extra fält löser problemet. Men jag tycker det är onödigt. Kanske jag ska göra in ett time() värde som en INT och sedan bara sätta -1 på de dagar som är stängda. Hade dock varit lite trevligt att kunna använda PHPMyAdmin utan att behöva räkna ut PHP´s time() för att mata in nya poster.

Länk till kommentar
Dela på andra webbplatser

Nej. NULL går inte att ge TIME fält. Enligt dokumentationen ges 00:00:00 om det blir fel eller icke initierat. Men man kan jobba med - typ -800:23:23 vilket innebär -800 timmar. Men jag vet inte hur det blir då jag kör min SQL fråga då jag har ett värde som faktiskt betyder något. Hade jag en INT så kan den INTén representera både tid och ett numreriskt värde. Men då får jag som sagt inte se själva tiden direkt i databasen. Vilket är trist.

 

Funderar på att lägga till 7 stycken INT(1) fält eftersom jag inte ser hur jag ska kunna se om det ät initierat eller inte. Blir då totalt 45 fält i tabellen. Känns lite onödigt. Men jag ser inte hur jag ska kunna fixa det utan att använda mig av ett boolean värde fält. Alltså INT(1) skulle då vara som jag skrivit ovan isClosed.

Länk till kommentar
Dela på andra webbplatser

Mr Andersson

Det enklaste i ditt läge är nog ett fält till för varje dag, som anger om det finns tid inmatat eller ej.

Länk till kommentar
Dela på andra webbplatser

Det enklaste i ditt läge är nog ett fält till för varje dag, som anger om det finns tid inmatat eller ej.

 

Ja, jag tror det lutar mot ett "isClosed" fält. Är det 1 så ska inte tiden läsas för den aktuella dagen. Är det default 0 så ska tiden avläsas för den aktuella dagen.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...