Wird der CJ aber durch den Besuch des Frontends angeschubst, dann steht die Seite. Erst das Schließen des Browser lässt die Seite wieder auftauchen. Der CJ wurde aber ordnungsgemäß ausgeführt.
Woran kann das liegen?
Hier noch der Quelltext:
Code: Alles auswählen
<?php
ini_set("auto_detect_line_endings", true);
$show_importform = FALSE;
$show_list = FALSE;
$table['table_name'] ="rex_com_user";
$rfields = rex_xform_manager_table::getFields($table['table_name']);
//$replacefield = rex_request("replacefield","string");
//echo $replacefield;echo '<br />';
$replacefield = "Mitgliedsnummer";
$divider = rex_request("divider","string",";");
//echo $divider; echo '<br />';
$divider = ";";
//$missing_columns = rex_request("missing_columns","int");
//echo 'Missin:'.$missing_columns;echo '<br />';
$missing_columns = "1";
$debug = rex_request("debug","string");
//echo 'Debug: '.$debug;
if($replacefield == "") $replacefield = "id";
if(!in_array($divider,array(";",",","tab"))) $divider = ",";
if($missing_columns != 2 && $missing_columns != 3) $missing_columns = 1;
if($debug != 1) $debug = 0;
$func = "";
$show_importform = FALSE;
$fieldarray = array();
//$filename = $_FILES['file_new']['tmp_name'];
$div = $divider;
if($div == "tab") $div = "\t";
$counter = 0; // importierte
$dcounter = 0; // nicht imporierte
$ecounter = 0; // leere reihen
$rcounter = 0; // replace counter
$icounter = 0; // insert counter
$errorcounter = 0;
$i = rex_sql::factory();
if($debug) {
$i->debugsql = 1;
}
$fp = fopen("../redaxo/include/addons/xform/plugins/manager/import/blarablara.csv",'r');
while ( ($line_array = fgetcsv ($fp, 30384, $div)) !== FALSE )
{
if(count($fieldarray) == 0)
{
// ******************* first line
$fieldarray = $line_array;
$mc = array();
foreach($fieldarray as $k => $v)
{
if(!array_key_exists($fieldarray[$k],$rfields))
{
$mc[$fieldarray[$k]] = $fieldarray[$k];
}
}
if(count($mc)>0)
{
if($missing_columns == 3)
{
echo rex_warning('Es fehlen folgende Felder: '.implode(", ",$mc));
$show_importform = TRUE;
$func = "import";
break;
}elseif($missing_columns == 2)
{
$error = FALSE;
foreach($mc as $mcc)
{
$sql = 'ALTER TABLE `'.$table['table_name'].'` ADD `'.mysql_real_escape_string($mcc).'` TEXT NOT NULL;';
$upd = rex_sql::factory();
$upd->setQuery($sql);
if($upd->getError())
{
$error = TRUE;
echo rex_warning('Feld "'.$mcc.'" konnte nicht angelegt werden: '.$upd->getError());
}else
{
echo rex_info('Feld "'.$mcc.'" wurde angelegt');
}
}
if($error)
{
echo rex_warning('Import wurde abgebrochen, da Fehler aufgetaucht sind.');
$show_importform = TRUE;
break;
}
$rfields = rex_xform_manager_table::getFields($table['table_name']);
}
}
}else
{
if(!$line_array)
{
break;
}else
{
$counter++;
$i->setTable($table['table_name']);
$replacevalue = "";
foreach($line_array as $k => $v)
{
if($fieldarray[$k] != "" && array_key_exists($fieldarray[$k],$rfields))
{
//$i->setValue($fieldarray[$k],mysql_real_escape_string($v));
$i->setValue($fieldarray[$k],mysql_real_escape_string(utf8_encode($v)));
if($replacefield == $fieldarray[$k])
{
//$replacevalue = $v;
$replacevalue = utf8_encode($v);
}
}
}
// noch abfrage ob
// $replacefield
$cf = rex_sql::factory();
$cf->setQuery('select * from '.$table['table_name'].' where '.$replacefield.'="'.mysql_real_escape_string($replacevalue).'"');
if($cf->getRows()>0)
{
$i->setWhere($replacefield.'="'.mysql_real_escape_string($replacevalue).'"');
$i->update();
$error = $i->getError();
if($error == "") {
$rcounter++;
}else {
$dcounter++;
echo rex_warning('Datensatz konnte nicht importiert werden: '.$error);
}
}else
{
$i->insert();
$error = $i->getError();
if($error == "") {
$icounter++;
}else {
$dcounter++;
echo rex_warning('Datensatz konnte nicht importiert werden: '.$error);
}
}
}
}
//$show_list = TRUE;
}
?>