PHP Workaround für doppel Einträge

Leftaf

Quest-Mob
Mitglied seit
31.01.2005
Beiträge
15
Reaktionspunkte
0
Kommentare
18
Hallo zusammen ich brauch mal eure Hilfe!

Wir wissen ja das im moment noch ein bug existiert der einige char doppelt bis n fach in der datenbank hält.

Mein Idee ist ein Workaround, für das php script, bis das behoben ist.

Ich schreibe das mal als Ablauf auf, den ich bin nicht der php schreiber

sort array by name and lastupdate absteigend
lösche merke_name
loop at array
if merke_name = array-name
lösche array-datensatz
endif
merke_name = array-name
endloop.

wenn man das gleich am Anfang einfügt müsste das array bis auf den aktuellste Datensatz der doppelten Einträge bereinigt sein.

Mein bitte ob jemand mal den php code posten könnte der das array von den doppel einträgen bereinigt, vielen dank.


/*
Struktur des Arrays aus dem BLASC System

server -> String
guild_name -> String
faction -> String
numchars -> int
character -> Array
name -> String
level -> int
race -> String
class -> String
sex -> char
guild_rank -> int (0 = gildenmeister, 1 = offizier, 2 = veteran, 3 = mitglied, 4 = initiand)
guild_title -> String
lastupdate -> sqldate
skills -> Array
Berufe -> Array
[{beruf}] -> Array
value -> int
max -> int
Sekundäre Fertigkeiten -> Array
[{Fertigkeit}] -> Array
value -> int
max -> int

*/
 
Code:
function comp_reverse_lastupdate($charA,$charB) {
   if($charA['lastupdate'] == $charB['lastupdate']) return 0;
   return ($charA['lastupdate'] < $charB['lastupdate']) ? 1 : -1;
}


usort($guild['character'],"comp_reverse_lastupdate");
$names = array();
$pos = 0;
while($pos < sizeof($guild['character'])) {
   if(!in_array($guild['character'][$pos]['name'],$names)) {
      $names[] = $guild['character'][$pos]['name'];
      $pos++;
   } else {
      array_splice($guild['character'],$pos,1);
   }
}

Ich übernehme keine Garantie für die Funktionsfähigkeit und Sicherheit dieses Codes. Die Verwendung geschieht auf eigene Gefahr.
 
Lokedemus schrieb:
Code:
function comp_reverse_lastupdate($charA,$charB) {
   if($charA['lastupdate'] == $charB['lastupdate']) return 0;
   return ($charA['lastupdate'] < $charB['lastupdate']) ? 1 : -1;
}
usort($guild['character'],"comp_reverse_lastupdate");
$names = array();
$pos = 0;
while($pos < sizeof($guild['character'])) {
   if(!in_array($guild['character'][$pos]['name'],$names)) {
      $names[] = $guild['character'][$pos]['name'];
      $pos++;
   } else {
      array_splice($guild['character'],$pos,1);
   }
}

Ich übernehme keine Garantie für die Funktionsfähigkeit und Sicherheit dieses Codes. Die Verwendung geschieht auf eigene Gefahr.
[post="90131"][/post]​

Danke Klappt wunderbar
yahoo.gif


»Der Nightwish Clan«
 
Zurück