Ok, ist ja dann doch peinlich, wenn man den Bug findet. Wage, zu betonen, dass ich tatsächlich lange gesucht habe.
Hab aber immer noch ein Problem...
Diesmal kann ichs allerdings sogar generell darstellen:
Zwei Arrays: Einen habe ich soeben aus meiner Datenbank gelutscht, der ist so aufgebaut $foo['bar'][$i] wobei es sechs feststehende Werte für bar gibt und halt ne Menge $i's und am Ende des ganzen den Wert.
Der andere Array ist eine CSV-Eingabe mit der ich so ziemlich alles machen kann. Im Moment ist sie, weil das zu meiner Scriptidee passte, so aufgebaut $foo[$i][bar].
Ich habe: ein nichtfunktionierendes und ineffektives Script, dass so schlecht ist, dass es sich nicht lohnt, den Fehler auszumerzen (so siehts für mich aus, aber ich habe keine Ahnung von Arrays und PHP.
// hier vorrausgeht der quer¥ an die datenbank.
while ($old = mysql_fetch_array($olddata)) {
$woinbekannt = array_search(trim($old['bekannt']),$data['bekannt']);
// hier soll folgendes passieren: doubles werden gefunden, die keys werden gespeichert und die infos im ursprungsarray $data geupdatet.
if($woinbekannt AND $old['fremd']==$data['fremd'][$woinbekannt]) { //double
if($data['sprache'][$woinbekannt]=="default") $data['sprache'][$woinbekannt] = $old['sprache'];
if($data['hinweis'][$woinbekannt]=="") $data['hinweis'][$woinbekannt] = $old['hinweis'];
if($data['phase'][$woinbekannt]=="0" AND $data['zeit'][$woinbekannt]=="0") {
$data['phase'][$woinbekannt]=$old['phase'];
$data['zeit'][$woinbekannt]=$old['zeit'];
}
$doubles[] = $woinbekannt;
$data['id'][$woinbekannt] = $old['id']; // damit ich die vokabel anhand ihrer ID updaten kann
}
}
// now for the doubletrouble... hier also die doubles updaten + löschen
if($doubles) {
foreach($doubles AS $dbl) {
$freshdouble = mysql_query("UPDATE wookable Set sprache = '".$data['sprache'][$dbl]."', phase = ".$data['phase'][$dbl].",bekannt = '".$data['bekannt'][$dbl]."',fremd = '".$data['fremd'][$dbl]."',hinweis = '".$data['hinweis'][$dbl]."',zeit = '".$data['zeit'][$dbl]."' WHERE user IN ('".$name."') AND id = ".$data['id'][$dbl]);
unset($data['sprache'][$dbl],$data['bekannt'][$dbl],$data['fremd'][$dbl],$data['hinweis'][$dbl],$data['phase'][$dbl],$data['zeit'][$dbl],$data['id'][$dbl]);
}
}
// und die völlig neuen neu einfügen.
for($i=0;$i<$length;$i++) {
if($data['bekannt'][$i]) $fresh = mysql_query('INSERT INTO wookable
(id
, user
, sprache
, bekannt
, fremd
, hinweis
, phase
, zeit
) VALUES ('', ''.$name.'', ''.$data['sprache'][$i].'', ''.$data['bekannt'][$i].'', ''.$data['fremd'][$i].'', ''.$data['hinweis'][$i].'', ''.$data['phase'][$i].'', ''.$data['zeit'][$i].'')');
}
Ich suche jetzt: Ggf. eine Meinung: Gibt es hierfür eine bessere Lösung (BITTE!) oder was kann ich hierdran verbessern. Dann müsst ich noch den Bug tracen, aber ich hoffe noch auf eine resourcenschonendere Lösung.