Zitat:
|
Ich vermute mal, dass du da keine Excel-Datei 'daten.xls' hast, sondern eine CSV-Datei 'daten.csv' ?
|
nee, xls.
also um eine vorherige datenbankabfrage komm ich auf jeden fall nicht rum. weil die DB gar nicht so wie oben beschrieben aufgebaut ist, sondern so, sorry:
Zitat:
Datenbanktabelle:
ID Wert1 Wert2 Wert3 ... Datum
Excelfile:
Key Wert1 Wert2 Wert3 ... Datum
|
dabei ist id die datensatz-ID und key eine zahlenkombination.
der key muss also aus einer anderen tabelle geholt werden.
konnte aber die schleifen auf nur 2 kürzen, weil ich beim speichern der daten aus der datenbank in das array auch gleichzeitig die daten aus dem excelfile hole. die zweite schleife brauche ich um die daten wieder in die datenbnak zu speichern.
das script braucht nur 0.28 sec, also besser gehts nicht.
PHP-Code:
while($d = mysql_fetch_array($res_q)){
$arr['id'][$x] = ...;
$arr['wert1'][$x] = ...;
$arr['wert2'][$x] = ...;
$arr['wert3'][$x] = ...];
if($xls->sheets[0]['cells'][$row][2] > 0){
$arr['wert4'][$x] = $xls->sheets[0]['cells'][$row][2];
$arr['wert5'][$x] = $xls->sheets[0]['cells'][$row][3];
$arr['wert6'][$x] = $xls->sheets[0]['cells'][$row][5];
$arr['wert7'][$x] = $xls->sheets[0]['cells'][$row][6];
$arr['wert8'][$x] = $xls->sheets[0]['cells'][$row][8];
$arr['wert9'][$x] = $xls->sheets[0]['cells'][$row][10];
}
$x++;
}
if(array_sum($arr['wert3']) > 0){
$del = "DELETE FROM table WHERE ...";
$res_del = mysql_query($del);
if($res_del != TRUE){
$error3 = TRUE;
}
}
if($error3 != TRUE){
$i = "INSERT INTO table (";
$i.= "id, ";
$i.= "..._id, ";
$i.= "wert4, ";
$i.= "wert5, ";
$i.= "wert6, ";
$i.= "wert7, ";
$i.= "wert8, ";
$i.= "wert9, ";
$i.= "date) ";
$i.= "VALUES ";
$durchlauf = 0;
foreach($arr['wert4'] as $key => $value){
if($durchlauf > 0){ $i.= ", "; } // Komma setzen für nächsten Durchlauf
$i.= "(";
$i.= "'" . $arr['id'][$key] . "', ";
$i.= "'1', ";
$i.= "'" . $arr['wert4'][$key] . "', ";
$i.= "'" . $arr['wert5'][$key] . "', ";
$i.= "'" . $arr['wert6'][$key] . "', ";
$i.= "'" . $arr['wert7'][$key] . "', ";
$i.= "'" . $arr['wert8'][$key] . "', ";
$i.= "'" . $arr['wert9'][$key] . "', ";
$i.= "'" . $date . "'";
$i.= ")";
$durchlauf++;
}
$res_i = mysql_query($i);