webForumDet fria alternativet

Från textfil till MySql

8 svar · 205 visningar · startad av Gislaved.net

Gislaved.netMedlem sedan juni 20001 521 inlägg
#1

Jag har en textfil där jag har lagrat en massa poster, en post på varje rad.

Varje rad ser ut ungefär såhär:

idnr|namn|nästa fält|ännu ett fält...|och så vidare....

Hur kan jag läsa av innehållet i varje fält till en variabel, för att kunna lagra datan i en MySql-databas?

------------------
Gislaved.net
"Tänk på vad du säger så att du inte säger vad du tänker."

nanneMedlem sedan dec. 19991 749 inlägg
#2

Läs in filen och loopa

Gör en explode på | i varje rad du kommer in och gör en INSERT med arrayen.

------------------
Fatal Error: Call to undefined function:
brain() in ./self.php on line 1

nanne.net

woodiMedlem sedan feb. 20001 270 inlägg
#3

Vad Nanne försöker berätta är följande:

$fp=fopen("textfilen.txt", "r");
if($fp) {
while(!feof($fp)) {
$s=fgets($fp, 30000);
$s=explode("|",$s);
mysql_query("insert into tabellnamn set fält1='$s[0]',fält2='$s[1]'");
}
}

------------------
woodi

Svenska FF1
www.johan-skog.nu

[Redigerat av woodi den 27 okt 2000]

Gislaved.netMedlem sedan juni 20001 521 inlägg
#4

Visst... det fungerar fint! Tack!

Om jag vill börja från slutet av filen istället... hur gör jag då?

------------------
Gislaved.net
"Tänk på vad du säger så att du inte säger vad du tänker."

woodiMedlem sedan feb. 20001 270 inlägg
#5

Då får Du läsa in raderna i en array och sedan sortera den fallande rsort().
Och sedan göra en explode på varje array-post.

------------------
woodi

Svenska FF1
www.johan-skog.nu

Gislaved.netMedlem sedan juni 20001 521 inlägg
#6

Okej... jag fick ordning på det till slut. Tack!

Det enda som krånglar är ett litet datumfält som jag vill ha i ett annat format. I textfilen står det som 25/9 - 2000 18:56, det vill säga dagen och månaden anges med en eller två siffror. Jag vill ha datumet i formatet 200009251856 om det går.

Jag använder substr för att plocka ut delar av datumet, men jag får det inte riktigt att stämma.

------------------
Gislaved.net
"Tänk på vad du säger så att du inte säger vad du tänker."

woodiMedlem sedan feb. 20001 270 inlägg
#7

Använd följande funktion och anropa från loopen.

Function GetTime($indate){
$indate="25/9 - 2000 18:56";
$tmp=explode("/",$indate);
$day=$tmp[0];
$tmp=explode(" ",$tmp[1]);
$month=$tmp[0];
$year=$tmp[2];
$tmp=explode(":",$tmp[3]);
$hour=$tmp[0];
$minute=$tmp[1];

if(strlen($day)==1)
  $day="0".$day;
if(strlen($month)==1)
  $month="0".$month;
   
$outdate=$year.$month.$day.$hour.$minute; 
return $outdate;

}

Anropa med:
$NewDate=GetTime("25/9 - 2000 18:56");

------------------
woodi

Svenska FF1
www.johan-skog.nu

Gislaved.netMedlem sedan juni 20001 521 inlägg
#8

Tack woodi! Du är en ängel... :-)

explode-grejen var smart... den ska jag använda mig av fler gånger.

------------------
Gislaved.net
"Tänk på vad du säger så att du inte säger vad du tänker."

woodiMedlem sedan feb. 20001 270 inlägg
#9

Hey, varsågod! :)

------------------
woodi

Svenska FF1
www.johan-skog.nu

135 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)