Import tekster

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

Redaktører: Agerskov, Peter Rude, Sarah Aagaard

Import tekster

Indlægaf ht » ons maj 21, 2014 10:08 pm

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);
}
?>
Brugeravatar
ht
 
Indlæg: 62
Tilmeldt: ons nov 23, 2011 10:33 pm

Tilbage til Udviklerforum

Hvem er online

Brugere der læser dette forum: Ingen og 0 gæster

cron