doppelte Einträge in Datenbank finden

PetraB

Mitglied
Hallo,

ich möchte mit PHP doppelte Einträge in meiner PostgreSQL-Datenbank ausfindig machen. Das Problem dabei ist, dass sich die doppelten Einträge auf zwei Spalten beziehen. Also wenn :

Zeile 1, Spalte2 und Spalte 3 = Zeile 15, Spalte 2 und Spalte 3

dann möchte ich eine Fehlermeldung ausgegeben haben. Meine bisherigen Versuche haben nicht zum Erfolg geführt.

Code:
  $sql = "select name,rname from station";
  $result = pg_query($sql);
  $numResults = pg_num_rows($result);
  $data = pg_fetch_all($result);
  for ($iRes = 0; $iRes < $numResults; $iRes++)
  {
    for ($i = 0; $i < $numResults; $i++)
    {
      if (($data[$iRes]["name"] == $data[$i]["name"]) && 
           ($data[$iRes]["rname"] == $data[$i]["rname"]))
      {
        echo "Die Grabennummer ".$data[$iRes]["rname"]." mit der Station 
                  ".$data[$iRes]["name"]." taucht mehrfach auf!<br>";
      }
    }
  }
Bei dieser Abfrage macht er logischerweise für jeden Datensatz eine Ausgabe, da der gewünschte ja auf jeden Fall einmal gefunden wird. Ich möchte aber ja nur eine Meldung haben, wenn er ein weiteres Mal gefunden werden würde.

Kann mir da vielleicht jemand weiterhelfen?

Schöne Grüße,

PetraB
 
Puh :p

Ohne mich jetzt da zu sehr reinarbeiten zu wollen ;)

Du brauchst eine zweite for-Schleife mit einem weiteren Parameter j

Dann lässt du erstmal alle Einträge für i=1 mit allen anderen für j=1bisn vergleichen, danach das gleiche dann für i=2, dann für i=3 usw.

Viel Erfolg!

shutdown
 
Ahjo, jetzt weiß ich auch überhaupt, worauf das hinauslaufen soll. Dazu sollte gesagt werden, dass du die for-Schleifen verschachteln musst, sonst läuft das nru sehr komplex ab.


MfG Radhad
 
Warum so umständlich?

PHP:
<?php

$los = mysql_query("SELECT count(wo_steht_was_doppelt_tabelle) AS xy FROM tabelle WHERE xy > 1 GROUP BY spalte_wo_doppelte_einträge_sind");

?>

Wenn du die Daten dir vorher ansehen willst, direkt in eine while mit entsprechenden formularfeldern ausgeben lassen oder wenn diese direkt gelöscht werden sollen in ein array und dann per foreach löschen.
 

Neue Beiträge

Zurück