Import tekster

Dette forum er mest for udviklere samt udveksling af erfaringer ved brug af Saldi.

Redaktører: Agerskov, Peter Rude, Sarah Aagaard

Besvar
Brugeravatar
ht
Indlæg: 62
Tilmeldt: ons nov 23, 2011 10:33 pm

Import tekster

Indlæg af ht »

Jeg har lavet en mulighed for at importere tekster under "indstillinger" , jeg har "lånet lidt fra din (Peter) vare import side :) og det lader til at fungerer fint.
Et hurtigt print her :

Kode: Vælg alt

<?php
// -------------------------------------------- systemdata/tekster.php ------ patch 2.0.9 -----2009.06.25---------------
// LICENS
//
// Dette program er fri software. Du kan gendistribuere det og / eller
// modificere det under betingelserne i GNU General Public License (GPL)
// som er udgivet af The Free Software Foundation; enten i version 2
// af denne licens eller en senere version efter eget valg
//
// Dette program er udgivet med haab om at det vil vaere til gavn,
// men UDEN NOGEN FORM FOR REKLAMATIONSRET ELLER GARANTI. Se
// GNU General Public Licensen for flere detaljer.
//
// En dansk oversaettelse af licensen kan laeses her:
// http://www.fundanemt.com/gpl_da.html
//
// Copyright (c) 2004-2009 DANOSOFT ApS
// Modfied by H.Thomsen ht@basslab.com 2014 Basslab.com
// ----------------------------------------------------------------------

@session_start();
$s_id=session_id();
$modulnr=1;
$css="../css/standard.css";
$title="Tekster";
$rightoptxt="<a href=\"tekster.php?do=ryd\" >Ryd tekster</a><br> <a href=\"tekster.php?do=import\">Importer tekster</a>";

$_SESSION["debug" ] = '0'; // HVIS "DEBUG" DATA SKAL VISES SÅ SÆTTET DEN TIL '1'

include("../includes/connect.php");
include("../includes/online.php");
include("../includes/std_func.php");
include("top.php");

$sort=if_isset($_GET['sort']);
if (!$sort) $sort="tekst";
$sprog_id=if_isset($_GET['sprog_id']);
$kopier=if_isset($_GET['kopier']);
$title="findtekst(30,$sprog_id)";
$do=if_isset($_REQUEST['do']);
$filnavn=if_isset($_POST['filnavn']);
$submit=if_isset($_POST['submit']);
$splitter=$_POST['splitter'];
$feltnavn=$_POST['feltnavn'];
$feltantal=$_POST['feltantal'];
//$varenr=$_POST['varenr'];
//$bilag=$_POST['bilag'];
$tegnset=if_isset($_REQUEST['tegnset']);

switch ($do) {
	case 'ryd':
		if ($ryd=if_isset($_GET['ryd'])) {
		db_modify("delete from tekster where sprog_id='$sprog_id'",__FILE__ . " linje " . __LINE__);
		}
		break;
	case 'Hent':
		if(!empty($_FILES['uploadfilename']['name']) or !empty($filnavn)){
			echo "Saa henter vi File <br> Tegnsæt er : $tegnset";	
			if (basename($_FILES['uploadfilename']['name'])) {
				$filnavn="../temp/".$db."_".str_replace(" ","_",$brugernavn).".csv";
				if(move_uploaded_file($_FILES['uploadfilename']['tmp_name'], $filnavn)) {
					vis_tekster($filnavn,'','','1',$tegnset);
				} else echo "Der er sket en fejl under hentningen, pr&oslash;v venligst igen";
			} elseif($submit=='Vis'){
				vis_tekster($filnavn,$splitter,$feltnavn,$feltantal,$tegnset);
			}
		} else{
			echo "File er tom eller mangler!? <br>Prøv igen<br>";
			upload();
		}
		break;
	case 'Vis':
			vis_tekster($filnavn,$splitter,$feltnavn,$feltantal,$tegnset);
		break;
	case 'import':
		upload();
		break;
	case 'Import':
		if (($filnavn)&&($splitter)){
			overfoer_data($filnavn,$splitter,$feltnavn,$feltantal,$tegnset);
		}
		else{
			vis_tekster($filnavn,$splitter,$feltnavn,$feltantal,$tegnset);	
		}
		break;
	default:
		if($_POST) {
			$tekstantal=if_isset($_POST['tekstantal']); 
			$id=if_isset($_POST['id']); 
			$tekst=if_isset($_POST['tekst']); 
			$ny_tekst=if_isset($_POST['ny_tekst']); 
			for ($x=1;$x<=$tekstantal;$x++) {
				$tmp=addslashes(trim($ny_tekst[$x]));
				if ($id[$x] && $tmp && $tekst[$x]!=$ny_tekst[$x]) db_modify("update tekster set tekst='$tmp' where id='$id[$x]'",__FILE__ . " linje " . __LINE__);
			}
		}
		if (!$sprog_id) $sprog_id=1;

		$x=0;
		if ($kopier) {
			$q = db_select("select * from tekster where sprog_id=$kopier order by tekst",__FILE__ . " linje " . __LINE__);
			while ($r = db_fetch_array($q)) {
				$x++;
				$id[$x]=$r['id'];
				$tekst_id[$x]=$r['tekst_id'];
				$tekst[$x]=$r['tekst'];
			}
		}	
		$tekstantal=$x;
		for($x=1; $x<=$tekstantal; $x++){
			if (!$r=db_fetch_array(db_select("select id from tekster where sprog_id=$sprog_id and tekst_id=$tekst_id[$x] order by $sort",__FILE__ . " linje " . __LINE__))){
				db_modify("insert into tekster (sprog_id,tekst_id,tekst)values('$sprog_id','$tekst_id[$x]','$tekst[$x]')"); 
			} else {
				db_modify("update tekster set tekst='$tekst[$x]' where id='$r[id]'",__FILE__ . " linje " . __LINE__);
			}
		}
		$x=0;
		$q = db_select("select * from tekster where sprog_id=$sprog_id order by $sort",__FILE__ . " linje " . __LINE__);
		while ($r = db_fetch_array($q)) {
			$x++;
			$id[$x]=$r['id'];
			$tekst_id[$x]=$r['tekst_id'];
			$tekst[$x]=$r['tekst'];
		}
		$tekstantal=$x;

		print "<form name=\"tekster\" action=\"tekster.php?sprog_id=$sprog_id&sort=$sort\" method=\"post\">";
		print "<input type=hidden name=tekstantal value=\"$tekstantal\">";
		print "<table border=1><tbody>";
		print "<tr><td><a href=tekster.php?sprog_id=$sprog&sort=tekst_id>Id</a></td>";
		print "<td width=400><a href=tekster.php?sprog_id=$sprog&sort=tekst>".findtekst(31,$sprog_id)."</a></td>";
		print "<td title=\"".findtekst(33,$sprog_id)."\">".findtekst(32,$sprog_id)."</td>";
		for($x=1; $x<=$tekstantal; $x++){
			print "<input type=hidden name=id[$x] value=\"$id[$x]\">";
			print "<input type=hidden name=tekst[$x] value=\"$tekst[$x]\">";
			print "<tr><td>$tekst_id[$x]</td><td>$tekst[$x]</td>";
			print "<td><input type=text class=\"inputbox\" name=\"ny_tekst[$x]\" size=\"90\" value=\"$tekst[$x]\"></td>";
		}
		print "<tr><td colspan=3 align=center><input type=submit accesskey=\"o\" value=\"OK\" name=\"submit\"></td></tr>";
		print "</form>";
		print "</tbody></table>";
		break;
}

print "</body></html>";

function upload($bilag){
	print "<form enctype=\"multipart/form-data\" action=\"tekster.php\" method=\"POST\">\n";
	print "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"900000\">\n";
	print "<input type=\"hidden\" name=\"bilag\" value=$bilag>\n";
	print "V&aelig;lg datafil: <input name=\"uploadfilename\" type=\"file\" /><br />\n";
	print "<input type=\"submit\" name=\"do\" value=\"Hent\" /></td></tr>\n";
	print "</form>";
}


function vis_tekster($filnavn,$splitter,$feltnavn,$feltantal,$tegnset){
	global $charset;
	$fp=fopen("$filnavn","r");
	if ($fp) {
		for ($y=1; $y<4; $y++) {
			$tmp=fgets($fp);
			if($tmp) $linje=$tmp;
		}
		if ($charset=='UTF-8' && $tegnset!='UTF-8') $linje=utf8_encode($linje);
		elseif ($charset!='UTF-8' && $tegnset=='UTF-8') $linje=utf8_decode($linje);
		$tmp=$linje;
		while ($tmp=substr(strstr($tmp,";"),1)) {$semikolon++;}
		$tmp=$linje;
		while ($tmp=substr(strstr($tmp,","),1)) {$komma++;}
		$tmp=$linje;
		while ($tmp=substr(strstr($tmp,chr(9)),1)) {$tabulator++;}
		$tmp='';
		if (($komma>$semikolon)&& ($komma>$tabulator)) {$tmp='Komma'; $feltantal=$komma;}
		elseif (($semikolon>$tabulator)&&($semikolon>$komma)) {$tmp='Semikolon'; $feltantal=$semikolon;}			
		elseif (($tabulator>$semikolon)&&($tabulator>$komma)) {$tmp='Tabulator'; $feltantal=$tabulator;}			
		if (!$splitter) {$splitter=$tmp;}
		$cols=$feltantal+1;
	}
	fclose($fp);
	$tmp='';
	if ($feltnavn) {
		for ($y=0; $y<=$feltantal; $y++) {
	 		if ($tmp) $tmp=$tmp.";".$feltnavn[$y];
			else $tmp=$feltnavn[$y];
		}
		setcookie("saldi_vareimp",$tmp,time()+60*60*24*30);
	} elseif (isset($_COOKIE['saldi_vareimp'])) {
		$tmp = $_COOKIE['saldi_vareimp'];
		$feltnavn=explode(";",$tmp);
	}
	print "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"1\"><tbody>";
	print "<form enctype=\"multipart/form-data\" action=\"tekster.php\" method=\"POST\">";
	print "<tr><td colspan=$cols align=center><span title='Angiv tegnsæt for import'>Tegnsæt<select name=\"tegnset\">\n";
	if ($tegnset=='ISO-8859-1') print "<option>ISO-8859-1</option>\n";
	if ($tegnset=='UTF-8') print "<option>UTF-8</option>\n";
	if ($tegnset!='ISO-8859-1') print "<option>ISO-8859-1</option>\n";
	if ($tegnset!='UTF-8') print "<option>UTF-8</option>\n";
	print "</select></span>";
	print "<span title='Angiv hvilket skilletegn der anvendes til opdeling af kolonner'>Separatortegn&nbsp;<select name=splitter>\n";
	if ($splitter) {print "<option>$splitter</option>\n";}
	if ($splitter!='Semikolon') print "<option>Semikolon</option>\n";
	if ($splitter!='Komma') print "<option>Komma</option>\n";
	if ($splitter!='Tabulator') print "<option>Tabulator</option>\n";
	print "</select></span>";
	print "<input type=\"hidden\" name=\"filnavn\" value=$filnavn>";
	print "<input type=\"hidden\" name=\"feltantal\" value=$feltantal>";
	print "&nbsp; <input type=\"submit\" name=\"do\" value=\"Vis\" />";

	$felt_navn=array("sprog_id","tekst_id", "tekst");
	$felt_antal=count($felt_navn);
	for ($y=0; $y<=$feltantal; $y++) {
		for ($x=0; $x<=$felt_antal; $x++) {
			if ($felt_navn[$x] && $feltnavn[$y]==$felt_navn[$x] && $felt_aktiv[$x]==1) {
				print "<BODY onLoad=\"javascript:alert('Der kan kun v&aelig;re 1 kolonne med $felt_navn[$x]')\">";
				$feltnavn[$y]='';
			} elseif ($felt_navn[$x] && $feltnavn[$y]==$felt_navn[$x]) $felt_aktiv[$x]=1;
		}
		if ($feltnavn[$y]=='varenr')$varenr=1;
		if ($feltnavn[$y]=='beskrivelse')$beskrivelse=1;
	}		
	if ($filnavn && $splitter /*&& $varenr==1*/) print "&nbsp; <input type=\"submit\" name=\"do\" value=\"Import\" /></td></tr>";
	print "<tr><td colspan=$cols><hr></td></tr>\n";
	if ((!$splitter)||($splitter=='Semikolon')) {$splitter=';';}
	elseif ($splitter=='Komma') {$splitter=',';}
	elseif ($splitter=='Tabulator') {$splitter=chr(9);}
	for ($y=0; $y<=$feltantal; $y++) {
		if ($feltnavn[$y]) print "<td><select name=feltnavn[$y]>\n";
		else  print "<td align=center><select name=feltnavn[$y]>\n";
		print "<option>$feltnavn[$y]</option>\n";
		if ($feltnavn[$y]) print "<option></option>\n";
		for ($x=0; $x<=$felt_antal; $x++) {
			if ($feltnavn[$y]!=$felt_navn[$x]) print "<option>$felt_navn[$x]</option>\n";
		}
		print "</td>";
	}
	print "</form></td></tr>";
	$fp=fopen("$filnavn","r");
	if ($fp) {
		$x=0;
		$kontonumre=array();
		while (!feof($fp)) {
			$skriv_linje=0;
			if ($linje=fgets($fp)) {
				$x++;
				$skriv_linje=1;
				if ($charset=='UTF-8' && $tegnset!='UTF-8') $linje=utf8_encode($linje);
				elseif ($charset!='UTF-8' && $tegnset=='UTF-8') $linje=utf8_decode($linje);
				$felt=array();
				$felt = opdel($splitter, $linje);
				for ($y=0; $y<=$feltantal; $y++) {
					$feltfejl[$y]=0;
					$felt[$y]=trim($felt[$y]);
					if ((substr($felt[$y],0,1) == '"')&&(substr($felt[$y],-1) == '"')) $felt[$y]=substr($felt[$y],1,strlen($felt[$y])-2);
				}
	 		}
			if ($skriv_linje==2) print "<BODY onLoad=\"javascript:alert('R&oslash;de linjer/felter indeholder fejl og bliver ikke importeret')\">";
			if ($skriv_linje>=1){
				print "<tr>";
	#			print "<tr><td>$bilag</td>";
				for ($y=0; $y<=$feltantal; $y++) {
					if ($skriv_linje==2) $color="#e00000";
					elseif ($feltfejl[$y]) $color="#e00000";
					else $color="#000000";
					if ($feltnavn[$y]) {print "<td><span style=\"color: $color;\">$felt[$y]&nbsp;</span></td>";}
					else {print "<td align=center><span style=\"color: rgb(153, 153, 153);\">$felt[$y]&nbsp;</span></td>";}
				}
				print "</tr>";
			}
		}
	}
	 fclose($fp);
	print "</tbody></table>";
}

function opdel ($splitter,$linje){
	global $feltantal;
	$anftegn=0;	
	$x=0;
	$y=0;

	if (substr($linje,0,1)==chr(34)) {
		$anftegn=1;
		$x++;	
 }
	for($z=$x;$z<=strlen($linje);$z++) {
		$tegn=substr($linje,$z,1);
		if (!$anftegn && substr($linje,$z-1,1)==$splitter && $tegn==chr(34)) {
			$anftegn=1;
 		}
		if ($anftegn && $tegn==chr(34) && substr($linje,$z+1,1)==$splitter) {
			$y++;
			$z++;
			$anftegn=0;
		} elseif (!$anftegn && substr($linje,$z,1)==$splitter) {
			$y++;
		} elseif ($tegn!=chr(34)) {
			$var[$y]=$var[$y].substr($linje,$z,1);
		}
	}
	return $var;
}

function overfoer_data($filnavn,$splitter,$feltnavn,$feltantal,$tegnset){
	global $charset;
	$x=0;
	echo "<br> variabler i funktion : $filnavn,$splitter,$feltnavn,$feltantal,$charset<br>";
	$fp=fopen("$filnavn","r");
	if ($fp) {
		for ($y=1; $y<4; $y++) {
			$tmp=fgets($fp);
			if($tmp) $linje=$tmp;
		}
		$tmp=$linje;
		while ($tmp=substr(strstr($tmp,";"),1)) {$semikolon++;}
		$tmp=$linje;
		while ($tmp=substr(strstr($tmp,","),1)) {$komma++;}
		$tmp=$linje;
		while ($tmp=substr(strstr($tmp,chr(9)),1)) {$tabulator++;}
		$tmp='';
		if (($komma>$semikolon)&& ($komma>$tabulator)) {$tmp='Komma'; $feltantal=$komma;}
		elseif (($semikolon>$tabulator)&&($semikolon>$komma)) {$tmp='Semikolon'; $feltantal=$semikolon;}
		elseif (($tabulator>$semikolon)&&($tabulator>$komma)) {$tmp='Tabulator'; $feltantal=$tabulator;}
		if (!$splitter) {$splitter=$tmp;}
		$cols=$feltantal+1;
	}
	fclose($fp);

	for ($y=0; $y<=$feltantal; $y++) {
		for ($x=0; $x<=$felt_antal; $x++) {
			if ($felt_navn[$x] && $feltnavn[$y]==$felt_navn[$x]&& $felt_aktiv[$x]==1) {
			print "<BODY onLoad=\"javascript:alert('Der kan kun v&aelig;re 1 kolonne med $felt_navn[$x]')\">";
			$feltnavn[$y]='';
			} elseif ($felt_navn[$x] && $feltnavn[$y]==$felt_navn[$x]) $felt_aktiv[$x]=1;
		}
	}

	if ((!$splitter)||($splitter=='Semikolon')) {$splitter=';';}
	elseif ($splitter=='Komma') {$splitter=',';}
	elseif ($splitter=='Tabulator') {$splitter=chr(9);}

	transaktion('begin');

	$fp=fopen("$filnavn","r");
	if ($fp) {
		$kontonumre=array();
		$x=0;
		$imp_antal=0;
		$upd_antal=0;
		$kostpris=0;
		$salgspris=0;
		$varenr="";	
		while (!feof($fp)) {
			$skriv_linje=0;
			if ($linje=fgets($fp)) {
				$x++;
				$skriv_linje=1;
				if ($charset=='UTF-8' && $tegnset!='UTF-8') $linje=utf8_encode($linje);
				elseif ($charset!='UTF-8' && $tegnset=='UTF-8') $linje=utf8_decode($linje);
				$felt=array();
	 			$felt = opdel($splitter, $linje);
	 			for ($y=0; $y<count($felt); $y++) {
					$medtag_felt[$y]=1;
					if (!trim($feltnavn[$y])) $medtag_felt[$y]=0;
					$felt[$y]=trim($felt[$y]);
					$feltnavn[$y]=strtolower($feltnavn[$y]);
					if ((substr($felt[$y],0,1) == '"')&&(substr($felt[$y],-1) == '"')) $felt[$y]=substr($felt[$y],1,strlen($felt[$y])-2);
					
					if ($feltnavn[$y]=='tekst_id')	{
						$ValTekstId = $felt[$y];
					}
					if ($feltnavn[$y]=='tekst')	{
						$ValTekst = pg_escape_string($felt[$y]);
					}
					if ($feltnavn[$y]=='sprog_id')	{
						$ValSprog = $felt[$y];
					}
				}
	 		}
			if ($skriv_linje==1) {
				if ($ValTekst && $ValSprog && $ValTekstId) {
					if ($r=db_fetch_array(db_select("SELECT tekst_id,tekst FROM tekst_test WHERE tekst_id='$ValTekstId'",__FILE__ . " linje " . __LINE__))) {
						if($r['tekst'] != $ValTekst){
						db_modify("UPDATE tekst_test SET sprog_id='$ValSprog', tekst='$ValTekst' WHERE tekst_id='$r[tekst_id]'",__FILE__ . " linje " . __LINE__);
						}
					} else {
						db_modify("INSERT INTO tekst_test (sprog_id,tekst_id,tekst) VALUES ($ValSprog,'$ValTekstId','$ValTekst')",__FILE__ . " linje " . __LINE__);
					}
				}
			}
		}
	}
	 fclose($fp);
	transaktion('commit');
	print "</tbody></table>";
	print "<BODY onLoad=\"javascript:alert('$x Tekster importeret, database opdateret')\">";
	print "<meta http-equiv=\"refresh\" content=\"0;URL=tekster.php?sprog_id=1\">";
	exit;
} # endfunc overfoer_data


if(isset($_SESSION["debug" ]) && $_SESSION["debug" ] == '1')
{
	echo "<b>POST</b><br>";
	print_r($_POST);
	echo "<br><b>GET</b><br>";
	print_r($_GET);
   	echo "<br><b>FILE</b><br>";
   	print_r($_FILES);
   	echo "<br><b>REQUEST</b><br>";
	print_r($_REQUEST);
	echo "<br><b>SESSION</b><br>";
	print_r($_SESSION);
	echo "<br><b>GLOBALS</b><br>";
	print_r($GLOBALS);
	echo "<br><b>SERVER</b><br>";
	print_r($_SERVER);
}
?>
AnnekeH
Indlæg: 1
Tilmeldt: tirs maj 12, 2020 12:56 pm
Geografisk sted: Denmark

Re: Import tekster

Indlæg af AnnekeH »

Det er virkelig cool. Jeg vil prøve at bruge
Indehaver af bloggen, tekstforfatter
Besvar