Bilderimport

Fragen Rund um den Quelltext.
Benutzeravatar
fischeranalytics
Beiträge: 0
Registriert: Mo 24. Jul 2017, 14:18

Bilderimport

Beitragvon fischeranalytics » Mo 24. Jul 2017, 14:20

Guten Tag,
ich habe eine Frage zum Bilderimport PHP Skript.
Und zwar: wo müssen die zu importierenden Bilder liegen?
Habe ich es richtig angepasst - ich will nur Bilder passend zur Artikelnummer importieren?

Code: Alles auswählen

<?PHP
 
// Nur einfache Fehler melden
error_reporting(E_ERROR | E_WARNING | E_PARSE);
 
include_once("../conf/main.conf.php");
include_once("../phpwf/plugins/class.mysql.php");
include_once("../phpwf/plugins/class.string.php");
include_once("../phpwf/plugins/class.user.php");
 
include_once("../www/lib/class.erpapi.php");
//include_once("../www/lib/class.erpapi_custom.php");
 
 
class secure_t
{
  var $id;
  function GetGET($val)
  {
    if($val == 'id')return '';
    return $_GET[$val];
  }
 
}
 
class app_t {
  var $DB;
  var $String;
  var $User;
}
if(empty($app))
{
  $app = new app_t();
}
 
if(empty($app->Secure))$app->Secure = new secure_t();
if(empty($app->User))$app->User = new User($app);
 
if(empty($app->Conf))
{
  $conf = new Config();
  $app->Conf = $conf;
}
if(empty($app->DB))$app->DB = new DB($conf->WFdbhost,$conf->WFdbname,$conf->WFdbuser,$conf->WFdbpass);
if(empty($app->String))$app->String = new WawiString();
 
if(empty($app->erp))
{
  $erp = new erpAPI($app);
  $app->erp = $erp;
}
 
if(isset($argv[1]) && isset($argv[2]))
{
  $importer = new Importer($app, $argv[1] ,'./'.$argv[2], isset($argv[3])?$argv[3]:null);
} else {
  echo "Bitte import_mit_bild.php Typ <Datei>.csv angeben\r\n";
  echo "mögliche Typen:
    artikel
    ";
  echo "\r\n";
}
 
class Importer
{
  function __construct(&$app, $typ, $Datei, $parameter)
  {
    $this->app = $app;
    $projekt = $this->app->DB->Select("SELECT standardprojekt FROM firma WHERE id='".$this->app->User->GetFirma()."' LIMIT 1");
    $projektid = $projekt;
    $this->Laender = $this->app->erp->GetSelectLaenderliste(true);
 
 
 
    $col = array(0,2,3);
    $csvarray = array();
 
    if(file_exists($Datei) && is_file($Datei))
    {
      $csvfile = $Datei;
      if (($handle = fopen($csvfile, "r")) !== FALSE) {
        $row = 0;
        while (($csv = fgetcsv($handle,0,';')) !== FALSE) {
 
          $row++;
          //Falls Datei in ISO-8859-1 und nicht UTF-8
 
          $num = count($csv); 
          //Anzahl Spalten in CSV
          //ab zweiter Spalte ausführen aber nur wenn es mehr als eine Spalte gibt
          if($row > 1 && $num >= 2)
          {
            foreach($csv as $k =>$v){
              $ucsv[$k] = $v;
            }
            //Parameter als escaped Version für direkte SQL-Statements
            foreach($csv as $k =>$v){
              $csv[$k] = $this->app->DB->real_escape_string($v);
 
            }
 
            switch($typ)
            {
              case 'artikel':
                $this->artikel($csv, $ucsv);
                break;
 
            }
 
          }elseif($row == 1){
 
          }
        }
        fclose($handle);
 
      }
    } else {
      echo "Datei ".$Datei." existiert nicht\r\n";
      exit;
    }
 
  }
 
  function artikel(&$csv, &$ucsv)
  {
    //Holt die Werte aus dem $ucsv Array, dessen Indizes den Spalten der CSV Datei entsprechen ab 0 beginnend
    $nummer = $ucsv[0];
    $bild = $ucsv[7];
 
    //Variablen werden in ein neues Array gespeichert, um Artikel einfacher einzufügen. Keys entsprechen Spaltennamen der Tabelle artikel in der Datenbank
    $art['nummer'] = $nummer;
 
    //Fügt den Artikel in die Datenbank ein
    $artid = $this->app->erp->InsertUpdateArtikel($art);
 
    //Holt den Pfad für den Speicherort der Bilder
    $pfad = $this->app->Conf->WFuserdata;
    $pfad = rtrim($pfad);
    //Legt den Ordner für den Speicherort der Bilder fest, sollte der Ordner dms sein
    $pfad .= "/dms/";
 
    //Falls der Ordner dms nicht existiert wird er angelegt
    if(!file_exists($pfad)){
      mkdir($pfad, 0777, true);
    }
 
    $speicherpfad = $pfad.$this->app->Conf->WFdbname;
 
    if(!file_exists($speicherpfad)) {
      mkdir($speicherpfad, 0777, true);
    }
 
    //Datei wird angelegt und in WaWision hinterlegt
    $fileid = $this->app->erp->CreateDatei($bild, $bild, "", "", $bild, "",true,$speicherpfad);
    $this->app->erp->AddDateiStichwort($fileid, "Bild", "artikel", $artid);
 
 
 
  }
 
 
 
}
 
 
?>

sauterbe
Administrator
Beiträge: 6
Registriert: Mi 31. Dez 2014, 13:34

Re: Bilderimport

Beitragvon sauterbe » Di 25. Jul 2017, 04:20

In dem der CSV Datei steht ja ein Dateiname.

D.h. m besten in den Ordner wo die Bilder im originalen liegen diese PHP Datei kopieren und von dor ausführen.

dann braucht man nichts anpassen. Alternativ absolute Pfade in dem CSV angeben.

Dann adressiert man das Bild ja direkt.

Benutzeravatar
fischeranalytics
Beiträge: 0
Registriert: Mo 24. Jul 2017, 14:18

Re: Bilderimport

Beitragvon fischeranalytics » Di 25. Jul 2017, 09:51

Also ich habe jetzt im Wawi Verzeichnis einen Unterordner gemacht.
Dort die Bilder + csv + bilderimport.php abgelegt.
Dann "php bilderimport artikel art.csv" ausgeführt.
Letztlich ist bei den Artikeln als Artikelbild nun eine index.php hinterlegt?

Angegeben habe ich im csv
Artikelnummer;Artikelnummer.jpg;

Die jpgs sind ebenso benannt.
-Ggf. gibt es einige Artikelnummern die kein Bild hinterlegt haben - ist das schlimm?-

Aber auch bei denen, welche ein Bilder hinterlegt haben, erscheint nur eine index.php als Bild.

sauterbe
Administrator
Beiträge: 6
Registriert: Mi 31. Dez 2014, 13:34

Re: Bilderimport

Beitragvon sauterbe » Di 25. Jul 2017, 15:29

das skript erwartet für jeden artikel ein bild

ansonsten müssten sie das skript kurz anpassen

wenn kein bild dann weiter sozusagen

Code: Alles auswählen

if($bild!=""){
    //Datei wird angelegt und in WaWision hinterlegt
    $fileid = $this->app->erp->CreateDatei($bild, $bild, "", "", $bild, "",true,$speicherpfad);
    $this->app->erp->AddDateiStichwort($fileid, "Bild", "artikel", $artid);
}

Benutzeravatar
fischeranalytics
Beiträge: 0
Registriert: Mo 24. Jul 2017, 14:18

Re: Bilderimport

Beitragvon fischeranalytics » Mi 26. Jul 2017, 14:21

Jetzt scheint gar nichts mehr importiert zu werden. :shock:

sauterbe
Administrator
Beiträge: 6
Registriert: Mi 31. Dez 2014, 13:34

Re: Bilderimport

Beitragvon sauterbe » Do 27. Jul 2017, 05:11

haben sie jemand der sich mit PHP auskennt? das der mal mit drauf schaut?

Benutzeravatar
fischeranalytics
Beiträge: 0
Registriert: Mo 24. Jul 2017, 14:18

Re: Bilderimport

Beitragvon fischeranalytics » Do 27. Jul 2017, 08:53

Leider nicht. Es erschließt sich mir auch nicht, was falsch sein könnte.
PHP Datei im Ordner,
CSV wie oben aufgebaut,
Kommando gestartet.

sauterbe
Administrator
Beiträge: 6
Registriert: Mi 31. Dez 2014, 13:34

Re: Bilderimport

Beitragvon sauterbe » So 30. Jul 2017, 04:24

es kommt auch sonst keine fehlermeldung?

Benutzeravatar
fischeranalytics
Beiträge: 0
Registriert: Mo 24. Jul 2017, 14:18

Re: Bilderimport

Beitragvon fischeranalytics » Mo 31. Jul 2017, 12:05

Nein leider nicht.
Sobald ich den Befehl mit Enter bestätigt habe,
dauerts 1-2 Sekunden und dann ist nichts passiert.

sauterbe
Administrator
Beiträge: 6
Registriert: Mi 31. Dez 2014, 13:34

Re: Bilderimport

Beitragvon sauterbe » Mo 31. Jul 2017, 16:02

vielleicht mal einen Beispielordner mit 2-3 Bildern und der CSV Datei und dem angepassten Importer aufgerufenen Befehl hier posten