PHP/MySQL: Denkfehler, oder gehts einfach nicht?!

  • Themenstarter Themenstarter Kristian-
  • Beginndatum Beginndatum
K

Kristian-

Mist, Syntax-Highlightening geht nicht, ich hoffe man kann es so entziffern.
Das Problem: Ich lasse mir eine variable Anzahl Einträge, welche eine bestimmte "$gpnr" haben ausgeben. Bei denen überprüfe ich dann, ob diese in einer anderen Tabelle existieren. Wenn ja, soll nichts passieren, wenn nein, soll ein neuer Eintrag in Dieser erzeugt werden. Das Problem ist, er erzeugt diesen Eintrag dann immer doppelt...

$abfrage1 = mysql_query("SELECT * FROM dss_temp_deliverydays WHERE gpnr='$gpnr'");
while($row1 = mysql_fetch_object($abfrage1)) {
$temp_bezirk = $row1->bezirk;
$einlesenc = mysql_query("SELECT COUNT(*) FROM dss_districts WHERE bezirk_name='$temp_bezirk'");
$einzelnc = mysql_fetch_row($einlesenc);
if($einzelnc[0]==1) {
// Muss nichts in der Tabelle dss_districts erzeugen.
} else {
// Erzeuge Eintrag in dss_districts.
}
}

Kann man jemand mit dem Zaunpfahl winken? LG Kristian
 
Nebenbei: Syntax-Highlighting geht mit [PHP] ... [/PHP] oder [code=php] ... [/code], wobei letzteres noch die Zeilennummer anzeigt, was auch sehr hilfreich sein kann.

Zu deinem Problem: ich würde das alles in eine Abfrage packen:
SQL:
INSERT INTO dss_districts
(SPALTEN) VALUES (WERTE DER SPALTEN)
WHERE (
  SELECT DISTINCT COUNT(*)
    FROM dss_districts
  WHERE bezirk_name = (
    SELECT DISTINCT bezirk
      FROM dss_temp_deliverydays
    WHERE gpnr = $gpnr
    )
  )

Es geht bestimmt auch noch mit JOINs, aber das weiß ich jetzt auch nicht.
 
So sieht es schon mal besser aus:
PHP:
$abfrage1 = mysql_query("SELECT * FROM dss_temp_deliverydays WHERE gpnr='$gpnr'");
while($row1 = mysql_fetch_object($abfrage1)) { 
$temp_bezirk = $row1->bezirk;
$einlesenc = mysql_query("SELECT COUNT(*) FROM dss_districts WHERE bezirk_name='$temp_bezirk'");
$einzelnc = mysql_fetch_row($einlesenc);
if($einzelnc[0]==1) { 
// Muss nichts in der Tabelle dss_districts erzeugen.
} else {
// Erzeuge Eintrag in dss_districts.
}
}
Sind denn die Werte für "bezirk_name" in deiner Tabelle dss_districts wirklich maximal ein Mal vorhanden?
 
Zurück