Hi Leute,
ich hab folgendes problem:
in einer address Datenbank sollen Doppelte Datensätze gefunden und
Markiert werden, was soweit auch tadellos funktioniert. hier mal den
Code dazu:
PHP-Code:
//Temporäre Tabelle erstellen mit Doppelten Addressen
mysql_query("CREATE TEMPORARY TABLE doppelte
SELECT count(*) as counter, min(ID_Lead) as ID, ID_Lead, Name, Strasse, PLZ, status
FROM leads GROUP BY Name, Strasse, PLZ having counter > 1");
echo mysql_error();
//Alle Doppelten Leads auf doppelt=1 setzen
mysql_query("UPDATE leads, doppelte SET leads.doppelt='1'
WHERE leads.Name = doppelte.Name AND leads.Strasse = doppelte.Strasse AND leads.PLZ = doppelte.PLZ;");
echo mysql_error();
//Alle Doppelt markierten Leads aus datenbank lesen
$result_doppelt=mysql_query("SELECT ID_Lead,status,doppelt FROM leads WHERE doppelt='1'");
$i_doppelt=0;
//Für jeden Doppelten Lead eine schleife
while( $row_doppelt=mysql_fetch_object($result_doppelt) )
{
//Ist der Status "Roh" und Doppelt=1 dann als Prüfen markieren
if($row_doppelt->status=='Roh' AND $row_doppelt->doppelt=='1')
{
mysql_query("UPDATE leads SET status='Prüfen' WHERE ID_Lead='".$row_doppelt->ID_Lead."';");
echo mysql_error();
echo "UPDATE leads SET status='Prüfen' WHERE ID_Lead='".$row_doppelt->ID_Lead."';<br>";
}
$i_doppelt++;
}
//Restliche Mails als "Neu" Markieren
mysql_query("UPDATE leads SET status='Neu' WHERE status='Roh';");
das ganze geb ich dann per while schleife aus:
PHP-Code:
$sql="SELECT * FROM leads WHERE doppelt='1' ORDER BY PLZ DESC";
$result=mysql_query($sql);
while( $row=mysql_fetch_object($result) )
{
//Ist der Name ungleich zur letzten schleife dann eine weisse Zeile
if($prev_lead != $row->Name)echo "<tr bgcolor=#ffffff><td colspan=10><br><b> ".$row->Name.", ".$row->Strasse.", ".$row->PLZ."</b></td></tr>";
echo "
<tr bgcolor=$color>
<td> ".$row->ID_Lead." </td>
<td> ".date('d.m.Y', $row->time_unix)." </td>
<td><b> ".$row->Name." </b></td>
<td><b> ".$row->Strasse." </b></td>
<td><b> ".$row->PLZ." </b></td>
<td> ".$row->Geburtsdatum." </td>
<td> ".$row->Berufsstatus." </td>
<td> ".$row->Art." </td>
<td> 0.00 </td>
<td> <b>".$row->status."</b> </td>
</tr>";
$prev_lead=$row->Name;
$i++;
}
Hier gibt er mir alle Doppelten Addressen gruppiert dargestellt aus, wunderbar.
Problem ist jetzt, das er mir die gruppen noch nach datum sortieren soll, was schwierig wird wenn bei 2 doppelten der erste 10tage alt ist und der 2.(jüngere) von heute ist. Dargestellt soll es aber so: wenn eine Addresse von heute gleich ist mit einer addresse vor 10 tagen, dann soll die alte Addresse mit nach oben rutschen.
Vielleicht weis ja jemand von euch rat.
Gruss Sprudell