Doppelte IP's löschen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Doppelte IP's löschen

    Hallo,

    ich habe eine LOG Tabelle, wo tausende IP's gespeichert sind. Wenn z.B. eine IP 50 mal vorkommt, dann möchte ich alle bis auf eine gelöscht haben. Wie bekomme ich heraus, dass in diesem Beispiel 49 IP's gelöscht wurden.

    Wie läßt sich diese realisieren? Wer kann mir bitte weiterhelfen?


    Viele Grüsse
    Davidt

  • #2
    PHP-Code:
    $sql "SELECT id,ip FROM deine_tabelle ORDER BY ip ASC";
    $res mysql_query($sql);
    $ip = array();
    $del = array();
    while(
    $re=mysql_fetch_array($res)){
        if(
    in_array($re['ip'],$ip)){
            
    $del[] = $re['id'];
        }else{
            
    $ip[] = $re['ip'];
        }

    Der obige Code sollte dir zwei Arrays erstellen. Eines mit den IPs, jede sollte nur einmal vorkommen. Und ein Array mit den ids der zu löschenden Datensätze in der DB.
    Jetzt könntest du entweder
    Die Tabelle leeren und alle Einträge in $ip wieder reinschreiben.
    oder
    Du killst alle Einträge in der Tabelle, welche im Array $del vorkommen. Mit einer Schleife drüber und für jeden Eintrag
    PHP-Code:
    foreach($del as $wert){
        
    $sql "DELETE FROM deine_tabelle WHERE id='$wert' LIMIT 1";
        
    //Query absetzen überlasse ich dir

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Original geschrieben von jahlives
      Mit einer Schleife drüber und für jeden Eintrag
      absolute sinnlos ....

      so geht's mit nur einer query. ist auch besser für die datenbank.
      PHP-Code:
      $sql 'DELETE FROM deine_tabelle WHERE id IN ('.implode(','$del).')'
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Das ist ja ganz fein. Muss mir das mit IN mal im Manual zu gemüte führen
        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Guten Abend,

          vielen Dank für eure schnellen Antworten. Ich werde das morgen etwas ausführlicher testen.

          Ich wünsche euch eine gute Nacht!


          Viele Grüsse
          Davidt

          Kommentar

          Lädt...
          X