phpbar.de logo

Mailinglisten-Archive

=?iso-8859-1?Q?Doppelte_Eintr=E4ge_ausfiltern_-_Die_L=F6sung?=

Doppelte Einträge ausfiltern - Die Lösung

Grobmeier, Christian mysql-de_(at)_lists.bttr.org
Wed, 19 Jun 2002 09:11:45 +0200


This is a multi-part message in MIME format.
Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_001_01C21760.92062250
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ok, ihr habt es so gewollt:

Zuerst habe ich mal mit nem Skript alle Emailaddys formatiert,
so das evt. Leer=B4zeichen etc wegfallen:

Die Dateien werden ausgelesen und so formatiert (PHP):

while ($row =3D mysql_fetch_array($result))
{
 $optetMail =3D trim($row[email]);
 if ( $optetMail !=3D $row[email] )
 {
  $arrMail[$i] =3D $row[email];
  $sql_optimized =3D "
   UPDATE LIST_testliste
       SET email =3D '".$optetMail."'
       WHERE id =3D '".$row[id]."'
       AND email =3D '".$row[email]."'
       AND status =3D '".$row[status]."'
  ";
 =20
  if ( mysql_query($sql_optimized) )
  {
   $arrMail[$i] =3D $row[email];
   $i++; =20
  }
 =20
 }
}


Dies funktioniert, wie ich sp=E4ter per Mail von dieser Liste bekommen =
habe
(leider zu sp=E4t),
auch so:
UPDATE tabelle SET spaltenname =3D TRIM(spaltenname);



Anschlie=DFend, jetzt kommt das eigentlich interessante,
werden die doppelten Emailaddys ausgelesen:

SELECT id,email,status,COUNT(email) AS ce=20
	FROM LIST_".$liste."
	GROUP BY 'email'
	HAVING ce >=3D 2=20

Das Ergebnissresult wird dann einfach gel=F6scht :)

Ich bin sicher ich habs irgendwie immer noch zu umst=E4ndlich gemacht.
Aber das ging jetzt f=FCr mich so am schnellsten. jedenfalls hat mir =
das
gezeigt,
das ich mich noch mehr mit MySQL befassen sollte, um alles auszunutzen =
was
geht.

Danke _(at)_all,
Chris




-----Urspr=FCngliche Nachricht-----
Von: HMeissner_(at)_dgverlag.de [mailto:HMeissner_(at)_dgverlag.de]
Gesendet: Mittwoch, 19. Juni 2002 08:31
An: mysql-de_(at)_lists.4t2.com
Betreff: AW: Doppelte Eintr=E4ge ausfiltern


l=F6sungen posten ist in

-----Urspr=FCngliche Nachricht-----
Von: Grobmeier, Christian [mailto:Christian.Grobmeier_(at)_KirchGruppe.de]
Gesendet: Mittwoch, 19. Juni 2002 08:09
An: 'mysql-de_(at)_lists.4t2.com'
Betreff: AW: Doppelte Eintr=E4ge ausfiltern


Hallo,
ich hatte einen Vergleich, allerdings hatte der einen Fehler:
wenn eine Emailadresse beispielsweise ein leerzeichen hinten dran =
hatte,
wurde es nicht erkannt. Das ist zwar jetzt berichtigt, aber es mu=DF =
die alte
Liste korrigiert werden.
Aber das habe ich ja jetzt gut hingekriegt, dank der tausend Tips von =
den
Leuten hier *FG*

Also: vielen Dank nochmal!
Wenns jemand interessiert wie ich das gemacht habe, darf mir ja ne =
Email
schreiben.
Oder ist es =FCblich das man die L=F6sung hier postet?

Sch=F6nen Gru=DF + n fettes Danke
Chris
-----Urspr=FCngliche Nachricht-----
Von: Potsdam14473_(at)_aol.com [mailto:Potsdam14473_(at)_aol.com]
Gesendet: Dienstag, 18. Juni 2002 21:28
An: mysql-de_(at)_lists.4t2.com
Betreff: Re: Doppelte Eintr=E4ge ausfiltern


Hi,

warum nutzt Du nicht einfach vor dem eintragen in die Datenbank einen
Vergleich?
Ganz einfach wenn das, was eingetragen werden soll schon=20
vorhanden ist, dann kommt eine entsprechende Meldung und wenn nicht, =
dann
eintragen und Erfolgsmeldung ausdrucken!
if..else!

Gruss
Thomas



Hallo _(at)_all,=20

ich habe ein Programm in PHP geschrieben das Emails versendet.=20
Dies funktioniert alles bestens, bis auf die Tatsache das trotz=20
meiner Funktion, die doppelte Anmeldung verhindern sollte, nicht =
richtig
funktionierte.=20

Jetzt habe ich in meiner Liste Newsletter-Empf=E4nger, die teilweise 4x =
darin
stehen,=20
so auch =F6fter den Letter bekommen.=20

Irgendwie mu=DF ich jetzt versuchen die Tabelle auszufiltern, wobei ich =
leider
nicht=20
genau wei=DF ob man das =FCberhaupt in MySQL direkt machen kann oder ob =
ich mich

tats=E4chlich hinsetzen mu=DF und ein Skript schreiben.=20

Gibt es vielleicht eine Funtktion die das f=FCr mich erledigt?=20
Wenn ja, wo kann ich dar=FCber nachlesen bzw. wie funktioniert das?=20

Vielen Dank schonmal im vorraus, und nen sch=F6nen Tag noch,=20

Chris





Stellen Sie sich vor, Sie h=E4tten vor einigen
Jahren die Chance gehabt bei einer Fa. namens AOL
an allen Ums=E4tzen von Mitgliedern zu profitieren, die nach Ihnen
einsteigen!
http://iconnectstar.here4u.de=20

------_=_NextPart_001_01C21760.92062250
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">=0D
<HTML>=0D
<HEAD>=0D
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=3Diso-8859-=
1">=0D
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version 5.5.2653.12"=
>=0D
<TITLE>Doppelte Eintr=E4ge ausfiltern - Die L=F6sung</TITLE>=0D
</HEAD>=0D
<BODY>=0D
=0D
<P><FONT SIZE=3D2>Ok, ihr habt es so gewollt:</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Zuerst habe ich mal mit nem Skript alle Emailaddys format=
iert,</FONT>=0D
<BR><FONT SIZE=3D2>so das evt. Leer=B4zeichen etc wegfallen:</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Die Dateien werden ausgelesen und so formatiert (PHP):</F=
ONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>while ($row =3D mysql_fetch_array($result))</FONT>=0D
<BR><FONT SIZE=3D2>{</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;$optetMail =3D trim($row[email]);</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;if ( $optetMail !=3D $row[email] )</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;{</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp; $arrMail[$i] =3D $row[email];</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp; $sql_optimized =3D &quot;</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;&nbsp; UPDATE LIST_testliste</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET email =3D '&quo=
t;.$optetMail.&quot;'</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id =3D '&quot=
;.$row[id].&quot;'</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND email =3D '&quo=
t;.$row[email].&quot;'</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND status =3D '&qu=
ot;.$row[status].&quot;'</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp; &quot;;</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp; </FONT>=0D
<BR><FONT SIZE=3D2>&nbsp; if ( mysql_query($sql_optimized) )</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp; {</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;&nbsp; $arrMail[$i] =3D $row[email];</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;&nbsp; $i++;&nbsp; </FONT>=0D
<BR><FONT SIZE=3D2>&nbsp; }</FONT>=0D
<BR><FONT SIZE=3D2>&nbsp; </FONT>=0D
<BR><FONT SIZE=3D2>&nbsp;}</FONT>=0D
<BR><FONT SIZE=3D2>}</FONT>=0D
</P>=0D
<BR>=0D
=0D
<P><FONT SIZE=3D2>Dies funktioniert, wie ich sp=E4ter per Mail von dieser L=
iste bekommen habe (leider zu sp=E4t),</FONT>=0D
<BR><FONT SIZE=3D2>auch so:</FONT>=0D
<BR><FONT SIZE=3D2>UPDATE tabelle SET spaltenname =3D TRIM(spaltenname);</F=
ONT>=0D
</P>=0D
<BR>=0D
<BR>=0D
=0D
<P><FONT SIZE=3D2>Anschlie=DFend, jetzt kommt das eigentlich interessante,<=
/FONT>=0D
<BR><FONT SIZE=3D2>werden die doppelten Emailaddys ausgelesen:</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>SELECT id,email,status,COUNT(email) AS ce </FONT>=0D
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=3D2>FROM LIST_&qu=
ot;.$liste.&quot;</FONT>=0D
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=3D2>GROUP BY 'ema=
il'</FONT>=0D
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=3D2>HAVING ce &gt=
;=3D 2 </FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Das Ergebnissresult wird dann einfach gel=F6scht :)</FONT=
>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Ich bin sicher ich habs irgendwie immer noch zu umst=E4nd=
lich gemacht.</FONT>=0D
<BR><FONT SIZE=3D2>Aber das ging jetzt f=FCr mich so am schnellsten. jedenf=
alls hat mir das gezeigt,</FONT>=0D
<BR><FONT SIZE=3D2>das ich mich noch mehr mit MySQL befassen sollte, um all=
es auszunutzen was geht.</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Danke _(at)_all,</FONT>=0D
<BR><FONT SIZE=3D2>Chris</FONT>=0D
</P>=0D
<BR>=0D
<BR>=0D
<BR>=0D
=0D
<P><FONT SIZE=3D2>-----Urspr=FCngliche Nachricht-----</FONT>=0D
<BR><FONT SIZE=3D2>Von: HMeissner_(at)_dgverlag.de [<A HREF=3D"mailto:HMeissner_(at)_=
dgverlag.de">mailto:HMeissner_(at)_dgverlag.de</A>]</FONT>=0D
<BR><FONT SIZE=3D2>Gesendet: Mittwoch, 19. Juni 2002 08:31</FONT>=0D
<BR><FONT SIZE=3D2>An: mysql-de_(at)_lists.4t2.com</FONT>=0D
<BR><FONT SIZE=3D2>Betreff: AW: Doppelte Eintr=E4ge ausfiltern</FONT>=0D
</P>=0D
<BR>=0D
=0D
<P><FONT SIZE=3D2>l=F6sungen posten ist in</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>-----Urspr=FCngliche Nachricht-----</FONT>=0D
<BR><FONT SIZE=3D2>Von: Grobmeier, Christian [<A HREF=3D"mailto:Christian.G=
robmeier_(at)_KirchGruppe.de">mailto:Christian.Grobmeier_(at)_KirchGruppe.de</A>]</FO=
NT>=0D
<BR><FONT SIZE=3D2>Gesendet: Mittwoch, 19. Juni 2002 08:09</FONT>=0D
<BR><FONT SIZE=3D2>An: 'mysql-de_(at)_lists.4t2.com'</FONT>=0D
<BR><FONT SIZE=3D2>Betreff: AW: Doppelte Eintr=E4ge ausfiltern</FONT>=0D
</P>=0D
<BR>=0D
=0D
<P><FONT SIZE=3D2>Hallo,</FONT>=0D
<BR><FONT SIZE=3D2>ich hatte einen Vergleich, allerdings hatte der einen Fe=
hler:</FONT>=0D
<BR><FONT SIZE=3D2>wenn eine Emailadresse beispielsweise ein leerzeichen hi=
nten dran hatte,</FONT>=0D
<BR><FONT SIZE=3D2>wurde es nicht erkannt. Das ist zwar jetzt berichtigt, a=
ber es mu=DF die alte Liste korrigiert werden.</FONT>=0D
<BR><FONT SIZE=3D2>Aber das habe ich ja jetzt gut hingekriegt, dank der tau=
send Tips von den Leuten hier *FG*</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Also: vielen Dank nochmal!</FONT>=0D
<BR><FONT SIZE=3D2>Wenns jemand interessiert wie ich das gemacht habe, darf=
 mir ja ne Email schreiben.</FONT>=0D
<BR><FONT SIZE=3D2>Oder ist es =FCblich das man die L=F6sung hier postet?</=
FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Sch=F6nen Gru=DF + n fettes Danke</FONT>=0D
<BR><FONT SIZE=3D2>Chris</FONT>=0D
<BR><FONT SIZE=3D2>-----Urspr=FCngliche Nachricht-----</FONT>=0D
<BR><FONT SIZE=3D2>Von: Potsdam14473_(at)_aol.com [<A HREF=3D"mailto:Potsdam1447=
3_(at)_aol.com">mailto:Potsdam14473_(at)_aol.com</A>]</FONT>=0D
<BR><FONT SIZE=3D2>Gesendet: Dienstag, 18. Juni 2002 21:28</FONT>=0D
<BR><FONT SIZE=3D2>An: mysql-de_(at)_lists.4t2.com</FONT>=0D
<BR><FONT SIZE=3D2>Betreff: Re: Doppelte Eintr=E4ge ausfiltern</FONT>=0D
</P>=0D
<BR>=0D
=0D
<P><FONT SIZE=3D2>Hi,</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>warum nutzt Du nicht einfach vor dem eintragen in die Dat=
enbank einen Vergleich?</FONT>=0D
<BR><FONT SIZE=3D2>Ganz einfach wenn das, was eingetragen werden soll schon=
 </FONT>=0D
<BR><FONT SIZE=3D2>vorhanden ist, dann kommt eine entsprechende Meldung und=
 wenn nicht, dann eintragen und Erfolgsmeldung ausdrucken!</FONT>=0D
<BR><FONT SIZE=3D2>if..else!</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Gruss</FONT>=0D
<BR><FONT SIZE=3D2>Thomas</FONT>=0D
</P>=0D
<BR>=0D
<BR>=0D
=0D
<P><FONT SIZE=3D2>Hallo _(at)_all, </FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>ich habe ein Programm in PHP geschrieben das Emails verse=
ndet. </FONT>=0D
<BR><FONT SIZE=3D2>Dies funktioniert alles bestens, bis auf die Tatsache da=
s trotz </FONT>=0D
<BR><FONT SIZE=3D2>meiner Funktion, die doppelte Anmeldung verhindern sollt=
e, nicht richtig funktionierte. </FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Jetzt habe ich in meiner Liste Newsletter-Empf=E4nger, di=
e teilweise 4x darin stehen, </FONT>=0D
<BR><FONT SIZE=3D2>so auch =F6fter den Letter bekommen. </FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Irgendwie mu=DF ich jetzt versuchen die Tabelle auszufilt=
ern, wobei ich leider nicht </FONT>=0D
<BR><FONT SIZE=3D2>genau wei=DF ob man das =FCberhaupt in MySQL direkt mach=
en kann oder ob ich mich </FONT>=0D
<BR><FONT SIZE=3D2>tats=E4chlich hinsetzen mu=DF und ein Skript schreiben. =
</FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Gibt es vielleicht eine Funtktion die das f=FCr mich erle=
digt? </FONT>=0D
<BR><FONT SIZE=3D2>Wenn ja, wo kann ich dar=FCber nachlesen bzw. wie funkti=
oniert das? </FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Vielen Dank schonmal im vorraus, und nen sch=F6nen Tag no=
ch, </FONT>=0D
</P>=0D
=0D
<P><FONT SIZE=3D2>Chris</FONT>=0D
</P>=0D
<BR>=0D
<BR>=0D
<BR>=0D
<BR>=0D
=0D
<P><FONT SIZE=3D2>Stellen Sie sich vor, Sie h=E4tten vor einigen</FONT>=0D
<BR><FONT SIZE=3D2>Jahren die Chance gehabt bei einer Fa. namens AOL</FONT>=
=0D
<BR><FONT SIZE=3D2>an allen Ums=E4tzen von Mitgliedern zu profitieren, die =
nach Ihnen</FONT>=0D
<BR><FONT SIZE=3D2>einsteigen!</FONT>=0D
<BR><FONT SIZE=3D2><A HREF=3D"http://iconnectstar.here4u.de" TARGET=3D"_bla=
nk">http://iconnectstar.here4u.de</A> </FONT>=0D
</P>=0D
=0D
</BODY>=0D
</HTML>=0D

------_=_NextPart_001_01C21760.92062250--

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive