Nasıl php kullanarak MySQL tabloya açılan çıkışlar seçilen tarih eklemek için?

4 Cevap php

Eğer tarih seçimi için 5 dropdowns varsa (Y, m, d, h, i) nasıl PHP5 kullanarak bir datetime olarak mySQL tablo tek bir sütuna seçilen tarih ve saat eklemek istiyorsun?

Ben onlar gibi bir dize kombine gerekir biliyorum:

$DateTime="$Year-$Month-$Day $Hour:$Minute:00";

ve sonra belki strtotime kullanın:

$Date=date('Y-m-d H:i:s', strtotime($DateTime)) ;

ama nerede değişkenleri bildirmek ve nasıl ben bir sorgu gibi içine yaratırım:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "details")) {

$insertSQL = sprintf("INSERT INTO sessions (Location1, Location2, Date)
 VALUES (%s, %s, $s)",

                       GetSQLValueString($_POST['Location1'], "text"),
                       GetSQLValueString($_POST['Location2'], "text"),
                       GetSQLValueString($_POST[' ???? '], "date"));

4 Cevap

Thanks to all who tried to help - the answer was a lot less complicated (blonde moment I guess! lol) Just needed to declare the post variables as:

$ _POST ['StartDate'] = "$ Yıl-Ay-$ $ $ Gün Saat: $ Dakika: 00";

Bu MySQL formatında zaten de zaman dönüşüm için gerek yok (YEY!)

Ayrıca mktime () fonksiyonunun içine bakmak olabilir: http://ca.php.net/mktime

Daha sonra sadece tarih değişkeni gibi bildirmek gerekir:

$date = mktime($_POST['H'],$_POST['i'],0,$_POST['m'],$_POST['d'],$_POST['Y']);

$location1 = mysql_real_escape_string( $_POST['Location1'];
$location2 = mysql_real_escape_string( $_POST['Location2'];

$insertSQL = "INSERT INTO sessions (Location1, Location2, Date) VALUES ('$location1', '$location2', $date)";

mysql_query( $insertSQL );

EDIT:

Veya, kullandığınız sprintf biçimini kullanarak:

$date = mktime($_POST['H'],$_POST['i'],0,$_POST['m'],$_POST['d'],$_POST['Y']);  

$insertSQL = sprintf("INSERT INTO sessions (Location1, Location2, Date)
     VALUES (%s, %s, $s)",

                           GetSQLValueString($_POST['Location1'], "text"),
                           GetSQLValueString($_POST['Location2'], "text"),
                           GetSQLValueString($date, "date"));

Ama önce GetSQLValueString işlevini hiç kullanmamış, bu yüzden ben sadece bunu kullanmak için doğru yolu varsayabiliriz.

'Ekran modu' ve MySQL modu arasında dönüştüren bir yardımcı işlev oluşturun, ti gelecekte birçok diğer projelerde kullanışlı gelecektir.

Date - Verilen dizi biçimine göre biçimlendirilmiş bir dize döndürür

MkTime - Bir tarih için Unix zaman damgasını döndürür

Strtotime - Unix zaman damgası içine İngilizce metinsel datetime açıklamasına Ayrıştırma

MySQL sizin için bu kolay hale getirmek için bir fonksiyon sağlar. http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function%5Ffrom-unixtime">FROM_UNIXTIME(). Orada tarih-parçaları bir dize olarak ayrıştırmak gerek olduğunu biliyorum çünkü ben, o havai strtodate çok daha az olduğu gibi, mktime() timestamp için tarih almak için kullanmak istiyorum.

Aşağıdaki Aklıma en düz ileri bir yaklaşımdır:

$date = mktime($_POST['H'], $_POST['i'], 0, $_POST['m'], $_POST['d'], $_POST['Y']);

$location1 = mysql_real_escape_string( $_POST['Location1'];
$location2 = mysql_real_escape_string( $_POST['Location2'];

$insertSQL = "INSERT INTO sessions (Location1, Location2, Date) VALUES ('$location1', '$location2', FROM_UNIXTIME($date))";

I GetSQLValueString (ben sadece bunu duydum) Dreamweaver özel işlevi olduğunu varsayarak yaşıyorum. Ben, gerçi uygulamaya dönük eminim.