Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Vartotoju registracijos data MySQL duomenų bazėje

Parašė kieshute· 2010 Lap. 20 10:11:00
#1

Sveiki,

Noriu turima tinklapi pasodinti ant PHP-Fusion. Dabartineje mano duombazeje juseriu registravimosi datos irasomos DATETIME formatu, pvz.: 2010-10-10 12.20", o PHP-Fusion duomenu bazeje juseriu registravimosi datas irasineja INT(10) formatu, pvz.: 1451262133.

Noredamas perkelti savo turima DB i nauja TVSa turiu arba pakeisti esamos DB juseriu registravimosi datas i formata INT(10) arba kazkaip padaryti, kad PHP-Fusion i duombaze irasinetu laika man reikiamu formatu.

Ka patartumet?

Ar imanoma padaryti taip, kad instaliuojant PHP-Fusion i MySQL 'users' lentele lauko 'user_joined' datos formatas butu ne standartinis INT(10), o DATETIME, ir taip pat kur ka pakeisti, kad nauju uzsiregistravusiu juseriu reg data i MySQL ikristu butent DATETIME formatu, o ne INT(10)?

Gal galite pateikti pavizdi kaip konvertuoti esamus duomenu bazes irasus ir pakeisti formata is DATETIME y INT(10) ?

Buciau dekingas uz patarimus ir uz "uzvedima ant kelio" :)

Parašė Kelmas· 2010 Lap. 20 11:11:56
#2


<?php
// Patarimas: prieš šito kodo naudojimą pasidarom VARCHAR(30) laukelį, o paskui kai baigsim konvertuot keičiame į INT(10)
// Iš TVS pasiimam įstojimo datą DATETIME formatų
$query = mysql_query("SELECT `my_tvs_joined`, `my_tvs_id` FROM `my_tvs_users` LIMIT 1000");
if (mysql_num_rows($query)) {
	// Prasukame ciklą su kiekvienu gražintu nariu
	while ($data = mysql_fetch_assoc($query)) {
		// Atnaujiname vartotojo datą
		mysql_query("UPDATE `my_tvs_users` SET `my_tvs_joined` = '".strtotime($data['my_tvs_joined'])."' WHERE `my_tvs_id` = '".$data['my_tvs_id']."' LIMIT 1");
	}
}
?>

Redagavo Kelmas· 2010 Lap. 21 13:11:00

Parašė kieshute· 2010 Lap. 20 13:11:51
#3

Aciu Karoli uz pateikta siulyma, taciau as su php sunkiai bendrauju :) o jei teisybe pasakius, nieko neraukiu
Va kitas reikalas jei tai, kas tavo pateikta butu imanoma per phpmyadmin pacioje duombazeje padaryti - tai sita as sugebesiu...

Arba kur tureciau padeti tavo pateikta koda?
Koda imesti i tarkim koadas.php failiuka, ji atitinkamai pakoregavus prie mano duombazes lenteliu ir lauku pavadinimu, tada ta failiuka imest kur nors i public_html kataloga ir ji paleist www.tinklapis.lt/kodas.php

Ar kaip?

Redagavo kieshute· 2010 Lap. 20 13:11:03

Parašė Kelmas· 2010 Lap. 20 14:11:49
#4

Failą nesvarbu kur įkelsi. Svarbiausia per naršyklė į jį įeiti. Bet prieš įkėlimą reikia susitvarkyti lentelių pavadinimus, laukelių pavadinimus ir prisirašyti viršuje šito kodo DB prisijungimą (mysql_connect()/mysql_select_db())

Parašė kieshute· 2010 Lap. 21 11:11:17
#5

Idejau koda su prisijungimu prie DB i php faila ir ji paleidau per narsykle, taciau datu formatas mano duombazej pasikeite ne taip, kaip noretusi: rodo tik metus, pvz 2007., bet man reikia kad is datos 2007-10-12 12.45 taptu formatu 1234567892
kazka darau ne taip?

Redagavo kieshute· 2010 Lap. 21 11:11:36

Parašė kieshute· 2010 Lap. 21 11:11:37
#6

Ir dar - data pakeita ~700 irasu, visi kiti liko nepakite, o irasu pas mane daugiau nei 2700...

Parašė Kelmas· 2010 Lap. 21 13:11:45
#7

Kas dėl įrašų LIMITO - žiūrim pirmą užklausa ir gale randam LIMIT 1000. Norint atnaujinti visus visus įrašus jį reikia išviso iš ten pašalinti. Kas dėl kodo - atnaujinau savo kodą, dabar turėtu VEIKTI.

Redagavo Kelmas· 2010 Lap. 21 13:11:42

Parašė kieshute· 2010 Lap. 21 19:11:04
#8

OK. Limita nuemiau.
Sukonvertino data i toki formata: 38007, bet INT(10) ar neturetu buti is 10 skaiciu? Kazkas ne taip... Kai importinu sukonvertuotas datas i PHP-Fusion - raso, kad narys uzsiregistraves 1970 metais :D

Parašė BeNiko· 2010 Lap. 23 17:11:56
#9

Ar pakeitei tą datos laukelį į varchar(30)?

Parašė kieshute· 2010 Lap. 23 22:11:03
#10

Taip, pakeiciau. Bet vis tiek man del nezinomu priezasciu nesigavo susitvarkyti su tuo php kodu.
Taciau, radau roki sprendima ir jis suveike (per phpmyadmin):
1. useriu lenteles datos lauko formata pakeiciau is DATETIME i DATE (skirtumas tarp situ formatu tik tas, kad nerodoma valandos ir minutes)
2. po to useriu lenteles datos lauko formata pakeiciau i varchar(30) [Null - No, default -None]
3. tada paleidau sita mysql komanda: update usertable set regdate=UNIX_TIMESTAMP(regdate)

visa tai man pakeite esamas datas, ir suimportavus duomenis i PHP-Fusion TVS'a rodomos normalios useriu uzsiregistravimo datos (isskyrus tai, kad valandos ir minutes rodomos 00 val 00 min), taciau tai ne beda :)

Didelis aciu uz patarimus ir supporta!