Nueva pregunta

Pregunta:

Fecha: 22-11-2018 05:52:17 (En Español)

Mover informacion de una tabla A a una tabla B con los mismos campos . [No resuelta]

Tengo una base de datos llamada radius . en ella hay dos tablas una que almacena datos de clientes y otra con las mismas filas que la anterior. se llama deudores. no se como hacer que los datos de la tabla A se pasen al B . con el fin de limpiar los datos de la tabla A y así ver los mas recientes . ya que cuando cargan los datos de la tabla A dura mucho para cargar por que hay demasiados y la idea no es borrarlos...
<?php

$mysql_usuario = "root";
$mysql_password = "";
$mysql_host = "localhost";
$mysql_database = "radius";


$conexion = mysql_connect($mysql_host, $mysql_usuario, $mysql_password, true);


mysql_select_db($mysql_database, $conexion) || die('No pudo conectarse: '.mysql_error());


$consulta = "SELECT * FROM pagos_pagina";


$resultado = mysql_query($consulta, $conexion) or die(mysql_error());


$table = "<table border='1' cellpadding='10'>\n";
$table .= "<tr>
            <th>ID</th>
            <th>Nombre</th>
            <th>Apellido</th>
            <th>Cedula</th>
            <th>Email</th>
            <th>Telefono</th>
            <th>Banco</th>
            <th>Referencia</th>
            <th>Monto</th>
            <th>Fecha</th>
            <th>Hora</th>
            <th>Comentario</th>
            <th>Eliminar</th>
            <th>Deudores</th>
            </tr>\n";
while($fila = mysql_fetch_assoc($resultado)){
$table .= "<tr>
      <td>".$fila["id"]."</td>
      <td>".$fila["nombre"]."</td>
      <td>".$fila["apellido"]."</td>
      <td>".$fila["cedula"]."</td>
      <td>".$fila["email"]."</td>
      <td>".$fila["telefono"]."</td>
      <td>".$fila["banco"]."</td>
      <td>".$fila["referencia"]."</td>
      <td>".$fila["monto"]."</td>
      <td>".$fila["fecha"]."</td>
      <td>".$fila["hora"]."</td>
      <td>".$fila["comentario"]."</td>

      <td><form method='post' action=''> \n
      <input type='hidden' name='id' value='".$fila["id"]."'>
      <input type='submit' value='Eliminar'>
      </form></td>

      <td><form method='post' action=''> \n
      <input type='hidden' name='id' value='".$fila["id"]."'>
      <input type='submit' value='Deudor'>
      </form></td>
   </tr>\n";
    }
$table .= "</table>\n"; 



  
?>

<!DOCTYPE HTML>
<html>
<head>
<title>Prueba</title>
</head>
<body>

<?php 


echo $table; 

?>

</body>
</html>

<?php 

mysql_close($conexion); 
?>





y estoy trabajando en mysql ya que todo el sistema esta basado en eso . perdonen . y gracias por sus respuestas .
Etiquetas: Votos: 0 - Respuestas: 11 - Vistas: 14 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 22-11-2018 11:50:32 Hola Josias Almeida.

    En principio estas utilizando mysql_connect()

    En la doc oficial de PHP mysql_connect() dice:

    Esta extensión fue declarada obsoleta en PHP 5.5.0 y eliminada en PHP 7.0.0. En su lugar debería utilizarse las extensiones MySQLi o PDO_MySQL.
    mysqli_connect() o PDO::__construct()

    Por lo tanto deberás utilizar por cuestiones de seguridad y de mejoras alguna de las mencionadas.

    En internet hay mucha información al respecto, por ejemplo uno de los resultados de google.

    ¿Como Conectar Php y Mysql a través de PDO y MySQLi?

    Espero que te sirva la info.

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 23-11-2018 03:02:38 gracias por la información lo tomare en cuenta. pero quisiera que me ayudaras con lo de como migrar la información del cliente de una tabla a otra .   Votos: 0 - Link respuesta
     
  • Fecha: 24-11-2018 15:02:49 Hola Josias, puedes usar la instrucción create table para crear la tabla deudores a partir de la tabla de clientes.

    Use the CREATE TABLE SELECT syntax.

    http://dev.mysql.com/doc/refman/5.0/en/create-table-select.html

    CREATE TABLE new_tbl SELECT * FROM orig_tbl;

    ò puedes usar un select para realizar la inserción...

    http://www.avanzalia.info/blog/como-utilizar-select-en-mysql

    Saludos!
      Votos: 0 - Link respuesta
     
  • Fecha: 24-11-2018 19:55:42 Amigo va a depender de cuantos datos digas que tienes alli, lo pregunto porque me parece raro que te este cargando lento, ya deberías de revisar los métodos que utilizas tanto para la carga como para el filtrado.

    Por otro lado, podrías crearte una carga infinita y que esta solo te traiga por ejemplo los primeros 50 registros, y al llegar al final te cargue los siguientes 50, y así, yo he manejado tablas con una cantidad absurda de registros sin tener un lag importante ni saturar el core del servidor, simplemente alijera la peticion minimizando la cantidad inicial de registros por ejemplo.
      Votos: 1 - Link respuesta
     
  • Fecha: 26-11-2018 04:07:38 SI lo que quieres es mover datos solamente una vez, puedes renombrar la tabla original (por ejemplo se llamaría 'tabla_original_bak' y luego crear una nueva tabla con la misma estructura que se llame como la tabla original ('tabla_original').

    Si quieres hacer esto con regularidad, puedes crear una consulta INSERT..SELECT de MySQL y ejecutarla desde un trabajo por lotes (tarea programada en Windows, CRON job en Linux) pues para esto no necesitas un archivo con HTML y PHP, sino que puedes hacerlo en cualquier lenguaje de scripts, incluso usando php_cli.

    Este es un ejemplo: Digamos que tu tabla original es tabla1, y quieres mover los datos hacia tabla2 (ambas tablas tienen la misma estructura). Tu consulta sería:

    INSERT INTO tabla2 SELECT * FROM tabla1 WHERE 1
    


    Puedes ver más información aqui: Manual MySQL: INSERT...SELECT

    Luego de verificar que todo salió bien, puedes borrar los registros que ya no te interesa conservar en la tabla1.

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 26-11-2018 12:06:59 Y si lo ordenas por la fecha y lo administras con DataTables? No seria necesario crear una segunda tabla para mostrar los mas recientes   Votos: 0 - Link respuesta
     
  • Fecha: 27-11-2018 04:50:34 bueno uso una datatable para eso el problema que tengo es que no quiero veer los recientes sino poner en tablas distintas los que deben los que paguen bien y los que paguen incorrector con solo un boton que ejecute una sentencia sql. pero todo lo que encuentro esta orientado a mysqli y necesito hacerlo en mysql   Votos: 0 - Link respuesta
     
  • Fecha: 27-11-2018 05:26:40 Creo que seria que si le agregas un campo "estatus a tu tabla" podrías ejecutar 3 sentencias.

    Ej:
    $consulta1 = "SELECT * FROM pagos_pagina WHERE estatus='Deudor";
    $consulta2 = "SELECT * FROM pagos_pagina WHERE estatus='Pago";
    $consulta3 = "SELECT * FROM pagos_pagina WHERE estatus='Pendiente";

    De esta manera tomarías en tablas diferentes los que han pagado y los que no
      Votos: 0 - Link respuesta
     
  • Fecha: 29-11-2018 04:52:10 he hecho algo como esto pero me falta mucho aun.
    mi index.php

    <?php
    //including the database connection file
    include_once("config.php");
     
    //fetching data in descending order (lastest entry first)
    $result = $dbConn->query("SELECT * FROM pagos_pagina ORDER BY id DESC");
    ?>
     
    <html>
    <head>    
        <title>prueba</title>
    </head>
     
    <body>
    <a href="add.html">Add New Data</a><br/><br/>
     
        <table width='80%' border=0>
     
        <tr bgcolor='#CCCCCC'>
            <td>Id</td>
            <td>Nombre</td>
            <td>Apellido</td>
            <td>Cedula</td>
            <td>Email</td>
            <td>Telefono</td>
            <td>Banco</td>
            <td>Referencia</td>
            <td>Monto</td>
            <td>Fecha</td>
            <td>Hora</td>
            <td>Comentarios</td>
            <td>Editar </td>
            <td>Borrar</td>
            <td>Deudor</td>
    
    
    
            <td>Update</td>
        </tr>
        <?php     
        while($row = $result->fetch(PDO::FETCH_ASSOC)) {         
            echo "<tr>";
            echo "<td>".$row['id']."</td>";
            echo "<td>".$row['nombre']."</td>";
            echo "<td>".$row['apellido']."</td>"; 
            echo "<td>".$row['cedula']."</td>";
            echo "<td>".$row['email']."</td>";
            echo "<td>".$row['telefono']."</td>";  
            echo "<td>".$row['banco']."</td>";
            echo "<td>".$row['referencia']."</td>";
            echo "<td>".$row['monto']."</td>";
            echo "<td>".$row['fecha']."</td>";
            echo "<td>".$row['hora']."</td>";  
            echo "<td>".$row['comentario']."</td>";
            echo "<td> <a href=\"edit.php?id=$row[id]\" onClick=\"return confirm('Quieres editarlo?')\">editar</a></td>";
            echo "<td> <a href=\"delete.php?id=$row[id]\" onClick=\"return confirm('Estas seguro que quieres borrarlo?')\">Delete</a></td>";  
            echo "<td> <a href=\"deudor.php?id=$row[id]\" onClick=\"return confirm('Quieres pasarlo a deudor?')\">Deudor</a></td>";        
        }
        ?>
        </table>
    </body>
    </html>
    


    mi config.php
    <?php
     
    $databaseHost = 'localhost';
    $databaseName = 'radius';
    $databaseUsername = 'root';
    $databasePassword = '';
     
    try {
        // http://php.net/manual/en/pdo.connections.php
        $dbConn = new PDO("mysql:host={$databaseHost};dbname={$databaseName}", $databaseUsername, $databasePassword);
        
        $dbConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Setting Error Mode as Exception
        // More on setAttribute: http://php.net/manual/en/pdo.setattribute.php
    } catch(PDOException $e) {
        echo $e->getMessage();
    }
     
    ?>



    mi deudor.php
     <?php
        include("config.php");
        $id = $_GET['id'];
        $sql = "INSERT INTO deudores (nombre, apellido, cedula, email, telefono, banco, banco, referencia, monto, fecha, hora, comentario)
        SELECT nombre, apellido, cedula, email, telefono, banco, banco, referencia, monto, fecha, hora, comentario
         FROM pagos_pagina";
     ?>
    


    el problema es que no logro pasar el id que quiero a otra tabla .
      Votos: 0 - Link respuesta
     
  • Fecha: 05-02-2019 14:01:08 A menos que tu base de datos tenga billones de registros no debería ser lenta tu consulta.

    Generalmente los problemas en tiempos de respuesta por 2 razones:

    1. Mala implementación. Los datos no se segmentan adecuadamente. Puedes implementar una paginación y darle mejor navegación a tu sistema.
    2. Error en el diseño de la base de datos. Una base de datos que no está normalizada puede ocasionar más tiempo en traer los resultados de la consulta. De igual forma si la base de datos no tiene buenos índices las consultas tardarán demasiado.

    Revisa tus índices, checa que tu BD tenga una normalización adecuada. Sigue la recomendación de segmentar los resultados devueltos, implementa cache y vistas.

    Con eso puedes reducir el tiempo de respuesta.

    Las veces que me ha tocado resolver ese tema el 90% de la veces arreglar los índices soluciona todo. En una ocasión con solo arreglar los mismos se redujo el tiempo de respuesta de 10 segundos a menos de un segundo.

    Espero te sirva.

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 06-02-2019 22:47:11 No tiene sentido tener tabla 100% duplicada pero cada proyecto es un mundo. Lo que te recomedaria para automatizar este prlceso que quieres usa triggers seria la mejor opcion. Busca tutoriales de triggers son faciles pero muy potentes   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com