MySQL Veritabanı Yanlış bilgiler Gönderilmesi Form

4 Cevap php

Ben bir MySQL veritabanı ancak tarihi veri gönderen bir form oluşturduk, Zaman, Yıl ve Ay alanları sürekli olmasına rağmen aynı tarihte (1 Ocak 1970) geri dönmek ben veritabanına bilgi gönderdiğinizde formu görüntüler Geçerli tarih, bana zaman vb. Zaman ve tarih alanları otomatik olarak geçerli saati ve tarihi görüntüler ki ben zaten kurdum. Birisi bana bu konuda yardım eder misiniz.

Form:

    <html>

<head>
<title>Ultan's Blog | New Post</title>
<link rel="stylesheet" href="css/newposts.css" type="text/css" />
</head>

<body>
<div class="new-form">
<div class="header">
<a href="edit.php"><img src="images/edit-home-button.png"></a>
</div>
<div class="form-bg">
<?php
if (isset($_POST['submit'])) {

    $month = htmlspecialchars(strip_tags($_POST['month']));
    $date = htmlspecialchars(strip_tags($_POST['date']));
    $year = htmlspecialchars(strip_tags($_POST['year']));
    $time = htmlspecialchars(strip_tags($_POST['time']));
    $title = htmlspecialchars(strip_tags($_POST['title']));
    $entry = $_POST['entry'];

        $timestamp = strtotime($month . " " . $date . " " . $year . " " . $time);

    $entry = nl2br($entry);

    if (!get_magic_quotes_gpc()) {
        $title = addslashes($title);
        $entry = addslashes($entry);
    }

    mysql_connect ('localhost', 'root', 'root') ;
    mysql_select_db ('tmlblog');

$sql = "INSERT INTO php_blog (timestamp,title,entry) VALUES ('$timestamp','$title','$entry')";

    $result = mysql_query($sql) or print("Can't insert into table php_blog.<br />" . $sql . "<br />" . mysql_error());

    if ($result != false) {
        print "<p class=\"success\">Your entry has successfully been entered into the blog. </p>";
    }

    mysql_close();
}
?>

<?php
$current_month = date("F");
$current_date = date("d");
$current_year = date("Y");
$current_time = date("H:i");
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<input type="text" name="month" value="<?php echo $current_month; ?>" />
<input type="text" name="date" value="<?php echo $current_date; ?>" />
<input type="text" name="year" value="<?php echo $current_year; ?>" />


<input type="text" name="time" id="time" size="5"value="<?php echo $current_time; ?>" />

<input class="field2" type="text" id="title" value="Title Goes Here." name="title" size="40" />

<textarea class="textarea" cols="80" rows="20" name="entry" id="entry" class="field2"></textarea>

<input class="field" type="submit" name="submit" id="submit" value="Submit">

</form>
</div>
</div>
 </div>
 <div class="bottom"></div>
 <!-- //End Wrapper!-->  
</body>

</html>

</html>

alt text

Nedense mesajlar bir zaman damgası olmadan teslim ediliyor ve varsayılan bir zaman damgası geri mi döneceğiz.

4 Cevap

Sen adında üç metin kutuları var date. $_POST['month'] ve $_POST['year'] set olmadığından, strtotime() doğru damgası anlamaya ve SQL sorgusu bu gibi görünüyor olamaz:

INSERT INTO php_blog (timestamp,title,entry) VALUES ('','Title Goes Here.','')

PHP kodu beklediği için giriş elemanlarının isimlerini değiştirin:

<input type="text" name="month" value="<?php echo $current_month; ?>" />
<input type="text" name="date" value="<?php echo $current_date; ?>" />
<input type="text" name="year" value="<?php echo $current_year; ?>" />

Bunu yaptıktan sonra, strtotime() tarih ayrıştırmak ve sorgu içine doğru değeri eklemek mümkün olacak.

INSERT INTO php_blog (timestamp,title,entry) VALUES ('1272738360','Title Goes Here.','')

Lütfen formu veritabanını "Keneler" çok düşük miktarda veriyor gibi geliyor. Eğer bir adla = "tarih" ve id = "tarih" üç kat var dikkat edin. Bu büyük ihtimalle bir sorundur. (Lütfen "kaynaklandığını" göre) kullanım ay, yıl, tarih yapmak, o isimleri ve kimlikleri değiştirin.

Bu strtotime içeri tarih gönderiyorsunuz biçimini tanımak için başarısız olabilir

Klasik YYYY/MM/DD biçimini deneyin:

 $timestamp = strtotime("$year/$month/$date $time");

Looks like strtotime don't understand the format you feeding to it.
Use mktime instead.

Neyse her zaman kod hata ayıklamak zorunda, yani bir şey yanlış giderse görmek için sorguyu çıktı.

Veya mysql destekli tipi colymn kullanmak düşünün, date veya datetime

Sen karışabilir bir unix timestamp hangi 2010-05-01 00:00:00 dize sadece sayı ans MySQL zaman damgası türü sütun