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!