Array aus MySQL nach Email-Adresse durchsuchen

InFlame

Erfahrenes Mitglied
Hallo,

irgendwie habe ich das Gefühl, dass unter mir ein Feuerwehrschlauch durchläuft ;)
Ich komme einfach nicht weiter.
Folgendes Problem:

Ich habe eine DB, in der Bestellungen erfasst werden. Jetzt möchte ich die Kunden, die bestellt haben aus der DB auslesen. Da jedoch mancher Kunde öfters bestellt, möchte ich jeden Kunden nur einmal auslesen (anhand von email), welche dann in eine andere DB geschrieben werden (nur die Bestell Nr). Ist alles auch kein Problem (mehr). Beim ersten Durchlauf funktioniert es auch. Leider liest er beim erneuten Aufrufen des Skriptes genau die Kunden aus, die er beim ersten durchlauf ignoriert hat (Mail gleich).
Jetzt habe ich die Email-Adressen der Kunden, die schon in der 2. DB stehen ausgelesen und versucht, zu überprüfen ob es die EMail schonmal gibt. Funktioniert soweit auch, bis auf, dass wenn neue Daten, also die noch nicht in der 2. DB stehen, dazukommen, er behauptet, dass es die schon in der DB gibt und somit nicht in die DB schreibt.

Hier ist das Skript.
PHP:
// Hier lese ich alle Kunden aus, die noch nicht in der 2. DB (mtl_fragen_code) erfasst wurden)
$sql_besteller = mysql_query("SELECT ordIdNo,ordTitle,ordDate,ordLastName,ordZipCode,ordEMail 
 		 						  FROM dsb_order 
								  LEFT JOIN mtl_fragen_code 
								  ON (mtl_fragen_code.orderID=dsb_order.ordIdNo) 
								  WHERE mtl_fragen_code.orderID IS NULL
								  AND dsb_order.ordDate 
								  BETWEEN '20060101000000' AND NOW()-5000000 
								  GROUP BY ordEMail
								  ORDER BY ordDate DESC") or die (mysql_error()); 
// Hier lese ich alle bereits erfassten Kunden aus, um Ihre Email Adressen zu bekommen
$sql_test = mysql_query("SELECT ordEmail 
		                      FROM dsb_order
				      LEFT JOIN mtl_fragen_code
				      ON (mtl_fragen_code.orderID=dsb_order.ordIdNo)
				      WHERE dsb_order.ordIdNo=mtl_fragen_code.orderID") or die (mysql_error());
$bla = mysql_fetch_array($sql_test);
// 							  
while ($zeile=Mysql_fetch_array($sql_besteller)):
                  $ordIdNo   = $zeile['ordIdNo'];
		  $ordDate   = $zeile['ordDate'];
		  $name      = $zeile['ordLastName'];
		  $plz          = $zeile['ordZipCode'];
		  $mail_neu = $zeile['ordEMail'];
//
//         Hier soll überprüft werden, ob die Mailadresse im Array der Abfrage ist, welche 
//	   die bereits vorhandenen Daten ausließt.
//
	    $ka = NULL;   // Variable zurücksetzten
	    $ka = in_array($mail_neu,$bla);     // Überprüfen, ob Mail im array
	    if ($ka = FALSE)  // Wenn keine Übereinstimmung gefunden wurde, dann tu das
	    {
		// Hier steht was gemacht werden soll!
            } 
             else 
            {
              echo "<br>gleich"; // Testweise Ausgabe, dass EMail Adresse vorhanden ist.
            } 
     endwhile;

Was stimmt hier denn nicht? Habe ich was übersehen? Wie kann ich sonst überprüfen, ob die Mailadresse schonmal vorhanden ist?
Ich hab das Gefühl, das ich gewaltig auf dem Schlauch stehe.
Bitte um Hilfe!!

Ich hoffe, ich habe halbwegs rüberbringen können, was ich meine und wo mein Problem ist?
 
Sieh dir mal SELECT DISTINCT (etwas runterscrollen) an, dann könntest du dir die zweite Tabelle sparen.


mysql> SELECT owner FROM pet;
+--------+
| owner |
+--------+
| Harold |
| Gwen |
| Harold |
| Benny |
| Diane |
| Gwen |
| Gwen |
| Benny |
| Diane |
+--------+

Notice that the query simply retrieves the owner column from each record, and some of them appear more than once. To minimize the output, retrieve each unique output record just once by adding the keyword DISTINCT:

mysql> SELECT DISTINCT owner FROM pet;
+--------+
| owner |
+--------+
| Benny |
| Diane |
| Gwen |
| Harold |
+--------+
 
Zurück