Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/03/2011, 10:25
Avatar de el_cesar
el_cesar
 
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años, 5 meses
Puntos: 20
listo ya funciona mi script, o almenos la parte que me da el numero de registros duplicados, lo que necesito ahora es eliminarlos.

para eso he complementado asi
Código PHP:
Ver original
  1. <?php
  2. //conecta a la base de datos
  3. $conexion = mysql_connect("localhost", "root", "buckdich");
  4. mysql_select_db("correos", $conexion);
  5.  
  6.  
  7.  
  8. $sql = "SELECT * FROM correos";
  9.  
  10.  
  11. $runsql = mysql_query($sql) or die (mysql_error());
  12. $registros = mysql_num_rows ($runsql);
  13. echo "Antes de la eliminacion habian <b>".$registros."</b> correos electronicos";
  14.     while ($row1 = mysql_fetch_array($runsql)){
  15.  
  16.         $email = $row1[0];
  17.  
  18.         //calcula duplicados
  19.  
  20.         $duplicado = "SELECT * FROM correos WHERE email LIKE '$email'";
  21.         $run_duplicado = mysql_query($duplicado) or die (mysql_error());
  22.         $cant_dup = mysql_num_rows ($run_duplicado);
  23.  
  24.         $tot_duplicado = $cant_dup-1;
  25.  
  26.         echo "<p>Existen <b>".$tot_duplicado."</b> Registros duplicados para la direccion de correo <b>".$email."</b>";
  27. }
  28.  
  29.          //elimina duplicados
  30.  
  31.         while ($row2 == $tot_duplicado) {
  32.             $elimina = "DELETE FROM correos WHERE email LIKE '$email'";
  33.             $run_elimina = mysql_query($elimina) or die (mysql_error());
  34.  
  35.             echo "  Se eliminaron <b>".$tot_duplicado."</b> registros";
  36. }
  37.  
  38. $sql2 = "SELECT * FROM correos";
  39.  
  40.  
  41. $runsql2 = mysql_query($sql2) or die (mysql_error());
  42. $registros2 = mysql_num_rows ($runsql2);
  43. echo "Despues de la eliminacion quedaron <b>".$registros2."</b> correos electronicos";
  44.  
  45.  
  46. ?>

pero cuando lo corro se queda pegado y no elimina los datos

he construido este script para eliminar registros duplicados en mysql
Código PHP:
Ver original
  1. <?php
  2. //conecta a la base de datos
  3. $conexion = mysql_connect("localhost", "root", "*****");
  4. mysql_select_db("correos", $conexion);
  5.  
  6.  
  7.  
  8. $sql = "SELECT * FROM correos";
  9.  
  10.  
  11. $runsql = mysql_query($sql) or die (mysql_error());
  12. $registros = mysql_num_rows ($runsql);
  13. echo "Antes de la eliminacion habian <b>".$registros."</b> correos electronicos";
  14.     while ($row1 = mysql_fetch_array($runsql)){
  15.  
  16.         $email = $row1[0];
  17.  
  18.         //calcula duplicados
  19.  
  20.         $duplicado = "SELECT * FROM correos WHERE email LIKE '$email'";
  21.         $run_duplicado = mysql_query($duplicado) or die (mysql_error());
  22.         $cant_dup = mysql_num_rows ($run_duplicado);
  23.  
  24.         $tot_duplicado = $cant_dup-1;
  25.  
  26.         echo "<p>Existen <b>".$tot_duplicado."</b> Registros duplicados para la direccion de correo <b>".$email."</b>";
  27. }
  28.  
  29.          //elimina duplicados
  30.  
  31.         while ($row2 == $tot_duplicado) {
  32.             $elimina = "DELETE FROM correos WHERE email LIKE '$email'";
  33.             $run_elimina = mysql_query($elimina) or die (mysql_error());
  34.  
  35.             echo "  Se eliminaron <b>".$tot_duplicado."</b> registros";
  36. }
  37.  
  38. $sql2 = "SELECT * FROM correos";
  39.  
  40.  
  41. $runsql2 = mysql_query($sql2) or die (mysql_error());
  42. $registros2 = mysql_num_rows ($runsql2);
  43. echo "Despues de la eliminacion quedaron <b>".$registros2."</b> correos electronicos";
  44.  
  45.  
  46. ?>

funciona bien hasta el punto de consultar los registros e indicar el numero de duplicados, pero cuando hago la parte para eliminarlos ejecuta el script pero se queda pegado y no hace nada y me da este error Notice: Undefined variable: row2 in /var/www/bd/eliminadup.php on line 31
__________________
Say no more.......

Última edición por GatorV; 21/03/2011 a las 11:16