ratata Skrevet 15. mars 2005 Del Skrevet 15. mars 2005 har ein phpbb database med rundt 100 brukarar, eg skal oppgradere forumet, og då er det naudsynt å konvertere user_regdate kolonna frå vanleg dato til unix timestamp. Eg veit om alle konverterane rundt om, men det eg er på utkikk etter er noko som kan konvertera heile stasen på ei gong. Er det mogleg å laga noko script elns? Har posta i database kategorien, men der er det knapt liv :\ Lenke til kommentar
Gilbert Skrevet 15. mars 2005 Del Skrevet 15. mars 2005 Om du klarer å knekke denne koden kommer du langt på vei :-) while-løkke mysql_query(select) mktime() mysql_query(update) Lenke til kommentar
ratata Skrevet 15. mars 2005 Forfatter Del Skrevet 15. mars 2005 heh, er jo selvfølgelig newb og ^^ hadde vore goda pota om du gav meg ei lita forklaring Lenke til kommentar
Gilbert Skrevet 15. mars 2005 Del Skrevet 15. mars 2005 (endret) No problem! // hente informasjon om tabellen $query = mysql_query("SELECT * FROM brukere"); // gjør at det samme skjer for hver post $null = "0"; while($null < mysql_numrows($query)) { // hente gammel dato $id = mysql_result($query,$null,"id"); $gammel_dato = mysql_result($query,$null,"dato"); // vet ikke hvordan formatet er på den "vanlige datoen" // du refererer til. kanskje du klarer å snekre det sammen // ut fra det du kan lese om explode og mktime? // sette inn ny dato mysql_query("UPDATE brukere SET dato = '".$ny_dato."' WHERE id = '".$id."'); // avslutte løkke } edit: mulig du må gjøre noe med kolonnetype - int(11) er vel tilstrekkelig Endret 15. mars 2005 av fjartan Lenke til kommentar
Nervetattoo Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 mktime er forhåpentligvis en tungvindt kommando å bruke så fremt du har et tidsformat som er noenlunde standard. Bruk strtotime() om du kan. Lenke til kommentar
audunr Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 mysql_query("UPDATE brukere SET user_regdate = UNIX_TIMESTAMP(user_regdate)"); Mulig jeg er vel optimistisk, men burde ikke dette fungere? Du må vel forandre kolonnetype først til et eller annet som takler både datoformatet og heltall. MVH Audun Lenke til kommentar
Gilbert Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 mysql_query("UPDATE brukere SET user_regdate = UNIX_TIMESTAMP(user_regdate)"); WHOW har aldri tenkt på det på den måten før! Simpelthen genialt audunr Lenke til kommentar
ratata Skrevet 16. mars 2005 Forfatter Del Skrevet 16. mars 2005 flotte saker, men kvar skal eg sette inn denne setninga? Lenke til kommentar
Gilbert Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 Dersom den fungerer etter intensjonen, velger du (i phpmyadmin) SQL, og skriver inn setningen der. Husk å bytte ut "brukere" med ditt tabellnavn. Lenke til kommentar
ratata Skrevet 16. mars 2005 Forfatter Del Skrevet 16. mars 2005 presterte å skriva noko feil her, alle tidspunkta vart setne til 0 Korleis importerer eg ei rad (eller ein hel db for den del) inn i phpmyadmin? Lenke til kommentar
Gilbert Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 Triste greier - har du backup? I såfall kan du velge SQL - " Location of the textfile" Lenke til kommentar
ratata Skrevet 16. mars 2005 Forfatter Del Skrevet 16. mars 2005 (endret) har selvfølgelig backup edit: men eg får feilmelding om feil syntaxen når eg skriv inn mysql_query("UPDATE nuke_users SET user_regdate = UNIX_TIMESTAMP(user_regdate)"); Endret 16. mars 2005 av ratata Lenke til kommentar
Torbjørn Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 hvorfor i all verden vil du ikke beholde vanlig dato? den er jo laget for nettopp dette? Lenke til kommentar
Torbjørn Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 mysql_query("UPDATE brukere SET user_regdate = UNIX_TIMESTAMP(user_regdate)"); Mulig jeg er vel optimistisk, men burde ikke dette fungere? Du må vel forandre kolonnetype først til et eller annet som takler både datoformatet og heltall. MVH Audun idet du forandrer kolonnetype vil innholdet forkludres og følgelig vil det ikke gå Lenke til kommentar
Nervetattoo Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 Du kan dog lage et ny felt med int eller bigint og sette denne til unix timestamp. Det feltet du forandret nå var nok av typen timestamp, og ikke et int-felt. mysql_query("UPDATE brukere SET user_new_regdate = UNIX_TIMESTAMP(user_regdate)"); Lenke til kommentar
ratata Skrevet 16. mars 2005 Forfatter Del Skrevet 16. mars 2005 hvorfor i all verden vil du ikke beholde vanlig dato? den er jo laget for nettopp dette? nei, phpnuke versjonen av phpbb er med vanlig dato... men den vanlige versjonen skal visstnok ha unixtime Lenke til kommentar
muffe Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 har selvfølgelig backup edit: men eg får feilmelding om feil syntaxen når eg skriv inn mysql_query("UPDATE nuke_users SET user_regdate = UNIX_TIMESTAMP(user_regdate)"); Fordi mysql_query er en PHP funksjon. Du må plukke ut SQL spørringen og bruke bare den: UPDATE nuke_users SET user_regdate = UNIX_TIMESTAMP(user_regdate) Lenke til kommentar
Lokaltog Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 (endret) Haha, jeg leste feil (tenkte omvendt). Glem alt som står under. Hmm, er det bare meg eller har dere feilinformert hele veien? Så vidt jeg vet så brukes UNIX_TIMESTAMP til å hente ut timestamp-verdien til en kolonne med datatype f.eks. DATETIME, slik at man slipper å styre med det i PHP. Bruk et par av spørringene over her og bytt ut UNIX_TIMESTAMP med FROM_UNIXTIME, som setter inn verdiene fra et unix-timestamp inn i en kolonne med en dato-datatype. Uff, det var uforståelig. Prøv noe á la dette: * Gjør om navnet på kolonnen user_regdate til user_olddate * Lag en ny kolonne med datatype DATETIME med navnet user_regdate * Kjør denne PHP-koden: <?php $result = mysql_query("SELECT * FROM `nuke_users`"); while($row = mysql_fetch_object($result)) { mysql_query("UPDATE `nuke_users` SET `user_regdate` = FROM_UNIXTIME(`$row->olddate`) WHERE `id` = '$row->id'"); } ?> * Slett kolonnen user_olddate Tror det skal funke rimelig bra? Edit: lagde en PHP-snutt isteden. Tror den skal funke enda bedre. Endret 16. mars 2005 av Lokaltog Lenke til kommentar
Gilbert Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 Hmm, er det bare meg eller har dere feilinformert hele veien? Så vidt jeg vet så brukes UNIX_TIMESTAMP til å hente ut timestamp-verdien til en kolonne med datatype f.eks. DATETIME, slik at man slipper å styre med det i PHP. "frå vanleg dato til unix timestamp" <--- er det ikke akkurat det han er ute etter? Lenke til kommentar
Lokaltog Skrevet 16. mars 2005 Del Skrevet 16. mars 2005 "frå vanleg dato til unix timestamp" <--- er det ikke akkurat det han er ute etter? Misforsto hele greia jeg! Beklager! Spørsmål til trådstarter: Hvilken datatype er kolonnen med dato nå? Er det VARCHAR eller noe slikt, eller er det et skikkelig datoformat? Hvis det er et skikkelig datoformat, så bruk heller UNIX_TIMESTAMP(kolonne) enn å forandre datatypen til INT eller VARCHAR med unix-timestamp'en i. Mye mer fleksibelt og effektivt å bruke en datatype som er beregnet på datoer. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå