kostenloser Webspace werbefrei: lima-city


Doppelte Einträge löschen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    t**********e

    MHH ich hab nochma ein Prob, aber wollte daf?r eigentlich kein eigenes Thread aufmachen... Aber irgend jemand meinte dann doch das ich ruhig ein neues thread machen soll. also mach ich halt eins ;) Mein Prob kann ich in einem Satz verpacken.

    Ich will doppelte eintr?ge (spezieller -> doppelte IP's) aus meiner DB L?SCHEN!


    Ich bin dankbar f?r jeden l?sungsansatz. aber bitte schreibt mir nich seiten langen code. ich denkt das man das eigentlich in eine SQL-Anweisung packen kann. aber ich habs so nich hinbekommen. nat?rlich kann ich auch das prob auch mit mit ein P/paar schleifen umgehn, aber 1 anweisung w?r mich echt lieber!

    DANKESCH???

    Beitrag ge?ndert am 24.10 12:40 von terror-state
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m****w

    Also darf jede IP nur einmal in der Tabelle vorkommen?

    DELETE FROM tabelle WHERE ip = '[IP]'

    so geht es
  4. theuntouchables

    theuntouchables hat kostenlosen Webspace.

    was Steht denn in der tabelle???

    Ist das ein forum, oder ein news-system oder ne shoutbox oder was???

    PS: ich war es der dir gesagt hat, dass du ein neues thema machen kannst... :wink:
  5. Autor dieses Themas

    t**********e


    Also darf jede IP nur einmal in der Tabelle vorkommen?

    DELETE FROM tabelle WHERE ip = '[IP]'

    so geht es


    schon mal nicht schlecht... er nimmt die anweisung an und f?hrt sie aus, aber es hat keinen effekt! mhh ich skizzier einfach mal meine tabelle:

    lastaction || ip || counter

    1098682734 || 127.0.1 || 6120
    1098593458 || 217.232.54.110 || 6120
    1098682734 || 127.0.1 || 6120


    eigentlich is das alles ein schlecht programmierter besucherz?hler mit ip-sperre.... ich hab ein skript das ?berpr?ft ob lastaction schon l?nger als 300 sec zur?ckliegt
    -> wenn das der fall is wird der eintrag gel?scht
    -> wenn das NICHT der fall ist wird lastaction durch den neuen wert ersetzt
    ich war bis jetz zu faul das besser zu machen.

    jederfall m?sste es der therorie nach alles funktioniern, allerdings wird, wenn das skript schnell, mehrfach hintereinander aufgerufen wird der alte eintrag nicht mehr gel?scht oder ge?ndert, sondern es wird einfach eine neue zeile eingef?gt. und damit is der counter verf?lscht.

    ich hoffe ihr k?nnt aus meinem kauderwelsch irgendwelche brauchbaren infos entnehmen... ;)

    Beitrag ge?ndert am 25.10 07:49 von terror-state
  6. Pr?fe doch einfach schon beim Eintragen, ob bereits ein Eintrag existiert. Ansonsten k?nntest du es so machen:

    <?php
    $query = mysql_query("SELECT * FROM tabelle");
    while($eintrag = mysql_fetch_objectg($query)){
    $query = mysql_query("DELETE FROM tabelle WHERE ip = $eintrag->ip");
    }
    ?>

    Jeder online-counter funktioniert so. Auch meiner L?scht alle, wo UNIX_TIMESTAMP()-lastaction>=300 na okay bei mir sind es 600.

    Beitrag ge?ndert am 25.10 08:37 von lan
  7. 2**s

    eben mach doch beim eintragen des datensatzes erstmal ein
    $currentIP = $_SERVER['REMOTE_ADDR'];
    $sql = "UPDATE Deine_Tabelle SET lastaction = time() where IP = $currentIP;";
    //... $sql ausf?hren
    $rows = int mysql_affected_rows ();
    
    if ($rows == 0) {
    $sql = "insert into Deine_Tabelle VALUES (time(), $currentIP , $counter);";
    //... $sql ausf?hren
    }


    musste halt noch was anpassen, aber so d?rftest du keine doppelten eintr?ge kriegen


    Beitrag ge?ndert am 26.10 09:36 von 2mas
  8. Autor dieses Themas

    t**********e


    eben mach doch beim eintragen des datensatzes erstmal ein
    $currentIP = $_SERVER['REMOTE_ADDR'];
    $sql = "UPDATE Deine_Tabelle SET lastaction = time() where IP = $currentIP;";
    //... $sql ausf?hren
    $rows = int mysql_affected_rows ();
    
    if ($rows == 0) {
    $sql = "insert into Deine_Tabelle VALUES (time(), $currentIP , $counter);";
    //... $sql ausf?hren
    }


    musste halt noch was anpassen, aber so d?rftest du keine doppelten eintr?ge kriegen


    Beitrag ge?ndert am 26.10 09:36 von 2mas


    das is doch genau das was ich hab... in etwa! und es klappt auch alles wunderbar. soweit... wenn man das skrip allerding schnell merhfach aufruft ?berschreibt der die existierenden eintr?ge nich mehr sondern f?gt einfach einen neuen ein
  9. 2**s

    wenn du das script genau so hast, wird dir 100% keine doppelter eintrag zu einer IP eingetragen.

    Durch das Update wird ein bestehender datensatz ja aktualisiert und nur, wenn kein entsprechdender datensatz gefunden wurde, dann wird ein Insert durchgef?hrt...
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!