AW: Werte mit ähnlicher Uhrzeit zusammenfügen
@saila
wenn ich Dich richtig verstehe
betrifft das doch wieder nur die Ausgabe der Daten aus der Datenbank - und dann auch nur die, die zusammen gehören. Oder nicht?
@Duddle
Kann man denn Werte in einem Array vergleichen und zusammen führen?
Naja, ich habe jetzt eine Lösung gefunden. Sicher nicht die eleganteste, aber es läuft.
PHP:
for($i = 0; $i < count($neu_multi); $i++){
$tag = $neu_multi[$i][0];
$datum = $neu_multi[$i][1];
$time = $neu_multi[$i][2];
$zeit = $neu_multi[$i][3];
$bl = $neu_multi[$i][4];
$is = $neu_multi[$i][5];
if(($bl == 0 AND $is == 0)==FALSE){ // Zeilen ohne bl und is filtern
if(isset($time_alt)){$abs = abs($time_alt[0] - $time);} // absoluter Wert aus alter Zeit und Zeit
// Bei is vor Bl
if($i > 0 AND $abs < $tolleranz AND $bl_alt[0] == 0 AND $bl > 0){
$is = $is_alt[0] + $is;
$eintrag = "UPDATE $tb_liste
SET is = '$is',
bl = '$bl',
timestamp = '$time'
WHERE timestamp = '$time_alt[0]' ";
$eintragen = mysql_query($eintrag)OR die(mysql_error());
}
// Bei is nach Bl
elseif($i > 0 AND $abs < $tolleranz AND $bl == 0){
if($bl == 0){$bl = $bl_alt[0];}
$is = $is_alt[0] + $is;
$eintrag = "UPDATE $tb_liste
SET is = '$is',
bl = '$bl',
timestamp = '$time'
WHERE timestamp = '$time_alt[0]' ";
$eintragen = mysql_query($eintrag)OR die(mysql_error());
}
// Neue Spalte erstellen
else{
$eintrag = "INSERT
INTO $tb_liste
SET tag = '$tag',
datum = '$datum',
zeit = '$zeit',
timestamp = '$time',
bl = '$bl',
is = '$is' ";
$eintragen = mysql_query($eintrag)OR die(mysql_error());
}
if(isset($time_alt)){
unset($time_ganzalt);
$time_ganzalt = array($time_alt[0]);
}
unset($time_alt);
unset($bl_alt);
unset($is_alt);
$time_alt = array($time);
$bl_alt = array($bl);
$is_alt = array($is);
}
}
Ich muss aber ganz ehrlich sein, dass ich nicht 100%ig nachvollziehen kann, was hier eigentlich passiert - da fehlt mir mal wieder die Vorstellungskraft. Den ersten Durchlauf kapiere ich noch, beim zweiten wird es schon schwieriger und beim Dritten...
Jetzt habe ich aber ein völlig komisches, ganz anderes Problem.
Auf einer zweiten Seite schreibe ich die die Datum-Werte in ein Array und filtere die doppelten Einträge mit array_unique aus.
Auf dem einen Rechner wird das auch richtig gemacht, aber auf einem anderen Rechner schmeißt er alles außer dem ersten Wert raus. Wie kann sowas sein?
So sieht das Array aus - natürlich mit doppelten Werten, die ich hier mal raus gelassen habe
Code:
[0] => Array
(
[0] => Sonntag
[tag] => Sonntag
[1] => 17.01.2010
[datum] => 17.01.2010
)
. . .
[5] => Array
(
[0] => Montag
[tag] => Montag
[1] => 18.01.2010
[datum] => 18.01.2010
)
. . .
[13] => Array
(
[0] => Dienstag
[tag] => Dienstag
[1] => 19.01.2010
[datum] => 19.01.2010
)
. . .
Der code dazu
PHP:
$datum_array = array();
$ausgabe = mysql_query("SELECT tag, datum FROM $tb_liste") or die (mysql_error());
while($row = mysql_fetch_array($ausgabe)){
array_push($datum_array,$row);
}
$datum_einzeln = array_unique($datum_array);
$datum_array ist noch richtig, aber $daum_einzeln dann nicht mehr.