Mysql TIME HTML form girdi

5 Cevap php

I am having an add/edit form to update and add to database, and I was not sure what the best way is to input TIME type (HH:MM:SS). Should I use multiple html text inputs for HH, MM, SS? if so, is there a function that prepares the string for database input?

Temelde ne girmek için çalışıyorum, belirli bir görevi tamamlamak için aldı kaç saat, dakika, saniye.

Herkes burada bana doğru yönde işaret edebilir?

Ben CodeIgniter (PHP) kullanarak bir web sitesi tasarlıyorum.

Teşekkürler

Let me go ahead and clarify what needs to happen a bit more... The user is required to enter data specific to sports more in particular to a players minutes and seconds played. I'm thinking of maybe simplifying it to only minutes. Perhaps this way input is only 1 thing. Then again my question is, what method would work to convert this "minute number" to the correct MYSQL TIME format?

5 Cevap

Ben bazı alternatifler ve çözümler arandı ve ben bu ile geldi:

$min = 60;
$time[] = floor($min/60);
$time[] = $min%60;

Ve ben MySQL TIME biçimine dönüştürmek için aşağıdaki kullanılan

INSERT INTO table (min) VALUES (MAKETIME($time[0], $time[1], 0))

Ben üzerinde çalışıyorum bir app benzer bir şey yapmak için bir yardımcı yazdı. Mine form_dropdown yardımcısında inşa arayarak, üç dropdowns, hh, mm ve am / pm oluşturur. Ben açılan çıkışlar veri almak, bir kez ben bunu 24 saat biçimini dönüştürmek ve sonra ben sadece MySQL için doğru biçime dizeleri bitiştirmek. Bir yardımcı olduğundan ben sadece form_time() kullanarak herhangi bir görünümden arayabilirsiniz. Eğer onu görmek için yardımcı olacağını düşünüyorsanız ben burada gönderebilirsiniz.

Dana

just use now() function, if your DB is MYSQL is you want to save the current time

örn:

UPDATE tbl SET timemodified = NOW()

and make sure that timemodified has a type of "time"

Ow sory bu noktayı özledim. o / .she onun / görevi bitirmek daha sonra sonra uhm belki, DB bir başlangıç ​​zamanı olması gerekir. Eğer sonuç o / o görevi yerine zaman olacaktır başlangıç ​​saati bitiş saati (geçerli zaman) onu çıkarmak DB sorgulamak gerekir

Bu 2 numaraları için denetler, sonra ":" sonra 2 sayı, sonra ":", sonra nihayet 2 numaraları tekrar:

$cleanTime = preg_match( '/(\d\d)\:(\d\d)\:(\d\d)/', $_POST[ 'NAME_OF_TIME_INPUT' ] );
if( !$cleanTime ){ /* ... error ... */ }

tüm bölü, haha ​​(ben İfadelerinin kullanıldığı zaman ilk idi) korkuyor olmayın.

<input <form sayfası üzerindeki name öznitelik içeriği ile NAME_OF_TIME_INPUT yerini

yani eğer <input name="coolinput" /> daha sonra kullanmak $_POST[ 'coolinput' ]

Bu (web) UI tasarımı, nasıl kullanıcıların delirtiyor olmadan giriş zaman ebedi mücadeleleri biridir. O tam ihtiyacınız biçimi / şartlar ve hedef kitleye bağlıdır çünkü ne özel durum için çalışır, sadece siz karar verebilirsiniz şeydir.

Genel kurallar olarak diyorum ki:

  • Don't, belirli bir biçimde, örneğin gerektiren bir serbest biçimli metin alanı yapmak O kadar karışıklık için çok kolay çünkü, ve hiçbir doğrulama yaparsanız kullanıcılar giriş veya pisliği zaman inkar edecektir "zaman (SS: SS: DD) girin".
  • Önlemek için deneyin [0-23] [0-59] onlar (, kaydırma, tıklatın, tıklatın, kaydırma, tıklatın, kaydırma, tıklayın) oldukça ağrı olabilir çünkü [0-59] dropdowns.

Kamu web siteleri için durum olurdu kullanım kolaylığı, yüksek bir öncelik ise, belki bir Javascript gelişmiş timepicker iyi bir fikirdir. (Saatin ellerini sürükleyerek gibi) ama kimse aldığı çok süslü bir şey kullanmamaya çalışın.

Bir serbest form, serbest formatlı metin alanı iyi bir fikir olabilir. Kullanıcı sadece "16:34" ya da "gece yarısı", "15:00" yazabilirsiniz. Aksi takdirde onlar kaybolmuş hissedebilirsiniz, kullanıcılar başlamak için örnekler vermeniz gerekebilir. Sen ucunda strtotime ile bu çalıştırabilirsiniz, ancak boşlukları doldurmak ve doğrulama bir sürü yapmak gerekebilir.

Hedef kitleniz çok hızlı klavye sırayla içlerinden sekmesine odaklı ve beklenebilir ise üç kısa metin alanları iyi bir fikir olabilir.

SQL için biçimlendirilmesi için olduğu gibi, ancak bir UNIX timestamp bunu birleştirin ve SQL için o zaman damgası biçimlendirmek gerekir, kullanıcıdan zamanlı giriş alırsınız:

date('Y-m-d H:i:s', $timestamp);