Kim T Skrevet 2. februar 2008 Del Skrevet 2. februar 2008 (endret) Hei! Jeg er egentlig ny innenfor PHP men vil ikke si at jeg ikke kan det heller. Har klart å lage mitt eget CMS og har et gammelt CMS som jeg har gjort forandringer på og hvor det er mulig å gjøre flere ting. Dette har ført til at tabellen er blitt noe større. Det er flere linjer i tabellen hvor dataen lagres. Jeg lurer på hva som er beste måten å scripte et script som henter ut all info fra den gamletabellen (lagret den i en fil) for så å forandre innsetting av verdier i den nye databasen. Eksempel på gammel tabell: `id` , `overskrift` , `ingress` , `innhold`, `lenkeadresse`, `lenkejanei`, `bilde`, `publiseringsingsdato`, `dato_fjernes` Eksempelpå ny tabell: `id`, `overskrift` , `forfatter`, `dato_skrevet`, `ingress`, `innhold` , `lenkeadresse`, `lenkejanei`, `lenketittel`, `bilde`, `fotografi`, `fil_1`, `filnavn_1`, `fil_2`, `filnavn_2`, `fil_3`, `filnavn_3`, `informasjonskilde`, `publiseringsdato`, `dato_fjernes` Som dere ser så innholder den nye tabellen flere felt som jeg må fylle inn ved konvertering over til den nye tabellen. Spørsmålet hvordan starter jeg? Hvilke funksjoner må jeg ta i bruk? På forhånd takk... Kim.. Endret 2. februar 2008 av Kim T Lenke til kommentar
grimjoey Skrevet 2. februar 2008 Del Skrevet 2. februar 2008 Er du sikker på at du skal ha 3 filer assosiert til en rad, hverken mer eller mindre? Hva er kilden til den nye dataen du skal legge inn? Hva vil du endre fra den gamle tabellen til den nye? Lenke til kommentar
Kim T Skrevet 2. februar 2008 Forfatter Del Skrevet 2. februar 2008 Problemet mitt er at jeg oppdatere den nye tabellen med den gamle. Når den gamle har færre linjer. Så må jeg lage et script som fyller ut de "tomme" linjene. For det er noen felt som er nødvendig å fylle inn. De kan ikke være tomme med andre ord. F.eks: Gammel tabell: id navn passord Ny tabell: id navn passord adresse hobby I den nye tabellen må jeg fylle ut adresse. Jeg har ikke det i den gamle tabellen og dermed må jeg lage et script som fyller ut den nødvendige informasjonen. Lenke til kommentar
grimjoey Skrevet 2. februar 2008 Del Skrevet 2. februar 2008 Men scriptet kan ikke gjette informasjonen som skal inn i adresse feltet. Lenke til kommentar
Kim T Skrevet 2. februar 2008 Forfatter Del Skrevet 2. februar 2008 Nei og det er det jeg vil lage. F.eks, Det ser jo slik ut nå: INSERT INTO `pub` VALUES(43, 'overskrift', 'ingress', 'innhold', 'bilde', 'ja', 'lenkeadresse', 'dato_publisert', 'dato_skal_fjernes'); Den nye er jo slik: INSERT INTO `pub` (`id`, `overskrift`, `forfatter`, `dato_skrevet`, `ingress`, `innhold`, `lenkeadresse`, `lenkejanei`, `lenketittel`, `bilde`, `fotografi`, `fil_1`, `filnavn_1`, `fil_2`, `filnavn_2`, `fil_3`, `filnavn_3`, `informasjonskilde`, `publiseringsdato`, `dato_fjernes`) Som du ser er det jo flere felt i den nye enn den gamle. Det er noen felt som er nødvendig å fylle ut. Disse hadde jeg tenkte å lage en variabel på som er konstant og putte inn. Det som jeg tror må gjøres er å finne et "system" og for så sette inn der det mangler. Og jeg lurer på hvordan jeg skal starte. Dette kan da ikke være noe nytt at folk oppdaterer en mysql database med flere felt? Det som jeg trenger å vite er hvordan dere gjør det når det er flere felt i det nye enn det gamle. Kim.. Lenke til kommentar
grimjoey Skrevet 2. februar 2008 Del Skrevet 2. februar 2008 (endret) Start med å lage en funksjon som henter data fra den gamle tabellen og returnerer det som et array noe liknende: Array ( [0] - Array ( [id] - 1 [overskrift] - blabla [ingress] - blabla [innhold] - blabla [lenkeadresse] - blabla [lenkejanei] - ja [bilde] - bilde.jpg [publiseringsdato] - 121212 [dato_fjernes] - 412341 ) [1] - Array ( [id] - 2 [overskrift] - blabla [ingress] - blabla [innhold] - blabla [lenkeadresse] - blabla [lenkejanei] - ja [bilde] - bilde.jpg [publiseringsdato] - 121212 [dato_fjernes] - 412341 ) ) så gjøre: $adresse = '' foreach ( $array as $rad ) { $insertString = ''; foreach ( $rad as $k => $v ) { $insertString .= $k . ' = ' . $v . ', '; } $qry = "insert into nytabell set $insertString, adresse = $adresse;"; mysql_query( $qry ) or die( $qry . ' - ' . mysql_error() ); } ønsker du å lage en liste med adresser som skal settes inn kan du endre: foreach ( $array as $rad ) til foreach ( $array as $index => $rad ) og $qry = "insert into nytabell set $insertString, adresse = $adresse;"; til $qry = "insert into nytabell set $insertString, adresse = {$adresse[$index]};"; i tillegg til å gjøre om $adresse til et array med adresse strenger. Endret 2. februar 2008 av grimjoey 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å