8797 sujets

Développement web côté serveur, CMS

Bonsoir,

J'ai ce script qui me permet en 1 clic de supprimer tous les doublons présents dans le livre d'or:
<?php
	mysql_connect("localhost", "root", "");
	mysql_select_db("abcfibromyalgie");

$doublons = mysql_query("SELECT message, pseudo, count(*) FROM livreor GROUP BY message having count(*) > 1");
    $count = mysql_num_rows($doublons);
    if ($count > 0) {
        while ($row = mysql_fetch_assoc($doublons)) {
            $pseudo = $row["pseudo"];
            $message = $row["message"];
            $limit = $row["count(*)"] - 1;
            mysql_query("DELETE FROM livreor WHERE message='$message' AND pseudo='$pseudo' LIMIT $limit");
		}
        mysql_free_result($doublons);
    } 
?>


La suppression devrait se faire si le message et le pseudo sont rigoureusement identiques, or voilà ce qui se passe:

Si 2 messages sont identiques ET les pseudos sont différents --> ça efface la plus récentes des deux lignes ...
Si 2 pseudo sont identiques ET les messages sont différents --> ça n'efface rien ...

Si quelqu'un à une idée ???

D'avance je vous remercie.
Modifié par Jackisback (25 Nov 2008 - 22:29)
Salut Jackisback,

ta première requête est incorrecte car elle liste tous les messages en doublon mais en prenant le dernier pseudo inséré pour chaque message. Il faudrait faire :
GROUP BY message, [b]pseudo[/b] having count(*) > 1
Toi t'es vraiment un BOSS !!!!!

Ca marche nickel .....

Je ne pensais pas qu'il n'y avait que ça ....

Merci t'es super cool .....