Activa las notificaciones push PhoneGap Spain

Foro

Home Forums Programación ¿Cómo se insertan datos en una base de datos mediante phonegap y jason?

This topic contains 2 replies, has 3 voices, and was last updated by IMK IMK 2 meses, 3 semanas .

Viendo 3 respuestas - de la 1 a 3 (de 3 en total)
  • ¿Cómo se insertan datos en una base de datos mediante phonegap y jason?

    Intervenciones
  • retegi84
    retegi84 
    Participant

    Buenas.
    ¿Cómo se insertan datos en una base de datos mediante phonegap y jason? Consigo mostrar datos de una base de datos, pero no se cómo se hace los insert. Agradecería un ejemplo de código o algo.

    Un saludo.


    Thisylis 
    Participant

    Saludos, te recomiendo visitar Lopd Malaga, ellos son una empresa de protección de datos, ellos te darán el asesoramiento adecuado para realizar todo el proceso.


    IMK
    IMK 
    Participant

    Buen día, es relativamente simple con ajax se puede tanto solicitar datos como enviarlos, al enviar datos estos los puede leer en su servidor (con php por ejemplo) e insertar, modificar o borrar en su bd.

    Si no tiene pericia en javascript, una librería puede ayudarle, como lo es angularjs 1 (no le recomiendo la 2 debido a que debe dominar javascript por su forma Typescript) o jquery o zepto, backbone, pero nunca use jquerymobile por el excesos de recursos que consume en aplicaciones hibiridas y en general.

    Recomiendo siempre trabajar en json, es mas rápido y liviano.

    Por ejemplo vamos a usar jquery

     Code: Jquery Ajax (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    22.
    23.
    24.
    25.

    $.ajax(
    {
    type: 'POST',
    url: 'http://www.midominio.com/miarchivo.php',
      data:
      {
      valor1:'valorx1',
      valor2:'valorx2-'
      },
    dataType: 'json'
    })
    // En caso de que todo este bien en el servidor
    .done(function(responde)
    {
      if(responde.resultado === false)
      {
      console.log('Todo correcto');
      }
      else
      {
      console.log('Algo paso')
      }
    })
    // En caso de error de servidor o similar
    .fail(function(jqXHR, textStatus, errorThrown){ console.log('Error: '+textStatus+' '+errorThrown); });

    Si desea trabajar por ejemplo en angularjs 1 un ejemplo seria

     Code: Angularjs 1 Ajax (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    22.

    $http(
    {
    headers: {'Content-Type': undefined},
    url: 'http://www.midominio.com/miarchivo.php',
    method: 'POST',
      data:
      {
      valor1:'valorx1',
      valor2:'valorx2-'
      },
    cache:false
    })
    // En caso de que todo este bien en el servidor
    .then(function(response)
    {
    console.log(response.data)
    },
    // En caso de que exista un error en el servidor
    function(response)
    {
    console.log('Error '+response.status);
    });

    De ahi en el php para recuperar los datos es simple

     Code: PHP (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    22.
    23.
    24.
    25.
    26.
    27.
    28.
    29.
    30.
    31.
    32.
    33.
    34.
    35.
    36.
    37.
    38.
    39.
    40.
    41.
    42.
    43.
    44.
    45.
    46.
    47.
    48.
    49.
    50.
    51.
    52.
    53.
    54.
    55.
    56.
    57.
    58.
    59.
    60.
    61.
    62.
    63.
    64.
    65.
    66.
    67.
    68.
    69.
    70.
    71.
    72.
    73.
    74.
    75.
    76.
    77.
    78.
    79.
    80.
    81.
    82.
    83.
    84.
    85.
    86.
    87.
    88.
    89.
    90.
    91.
    92.
    93.
    94.
    95.
    96.
    97.

    <?php
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Allow-Origin: *');
    header('Content-type:application/json; charset=utf-8');

    /*
    Descomentar si se usa angularjs 1, si se usa jquery omitir.
    Debido a que angularjs al pasar valores por ajax los pasa en json
    a diferencia de jquery que los serializa
    */
    //$_POST = json_decode(file_get_contents('php://input'), true);

    // Obtenemos los valores que nos fueron enviados desde el js
    $valor1 = (isset($_POST['valor1'])) ? limpiar($_POST['valor1'], 'textnum') : '';
    $valor1 = (isset($_POST['valor2'])) ? limpiar($_POST['valor2'], 'textnum', '-') : '';

    // Ligera funcion para dejar pasar caracteres que solo designemos
    function limpiar(&$texto, $tipo='texto', $extras=false)
    {
        if($tipo == 'texto'):
        $texto = preg_replace('/[^a-z'.$extras.']/iu', '', $texto);
        elseif($tipo == 'numero'):
        $texto = preg_replace('/[^0-9'.$extras.']/iu', '', $texto);
        elseif($tipo == 'textnum'):
        $texto = preg_replace('/[^a-z0-9'.$extras.']/iu', '', $texto);
        else:
        die('Error: La funcion limpiar debe tener un tipo especifcado');
        endif;
    return trim($texto);
    }

    // Funcion para conectar a la bd
    function db()
    {
    $db_username = 'root';
    $db_password = 'mysql';
    $db_name = 'bdtest';
    $db_host = 'localhost';
      // Comprobamos si hay error al conectar a la bd
      try
      {
      $conn = new PDO('mysql:host='.$db_host.';dbname='.$db_name.'', $db_username, $db_password);
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      }
      // En caso de error
      catch(PDOException $e)
      {
      die($db_username.'Error: '.$e->getMessage().' - Error: '.(int)$e->getCode());
      }
    return $conn;
    }


    // Almacenamos la funcion de conectar la base de datos
    $db = db();


    // Si deseamos leer algo de la bd
    $leerbd = $db->prepare('SELECT tabla1, tabla2 FROM test '
      . 'WHERE tabla3=:valortabla1 AND tabla4=:valortabla2');
    $leerbd->bindParam(':valortabla1', $valor1, PDO::PARAM_STR);
    $leerbd->bindParam(':valortabla2', $valor2, PDO::PARAM_STR);
    // Se puede pasar directamente los valores al execute pero todos seran tratados como string
    $leerbd->execute();
    $leerbd = $leerbd->fetch(PDO::FETCH_ASSOC);


    // Si deseamos guardar algo en la bd
    $guardarbd = $db->prepare('INSERT INTO test '
        . '(tabla5, tabla6) '
        . 'VALUES (:valortabla1, :valortabla2)');
    $guardarbd->execute(array
      (
      ':valortabla1'=>$valor1, ':valortabla2'=>$valor2
      ));


    // Si deseamos actualizar la bd
    $actualizarbd = $db->prepare('UPDATE test SET tabla2=:valortabla1 WHERE tabla4=:valortabla2');
    $actualizarbd->execute(array
      (
      ':valortabla1'=>$valor1, ':valortabla2'=>$valor2
      ));


    // Si deseamos borrar algo de la bd
    $borrarbd = " movies WHERE filmID =  :filmID";
    $borrarbd = $pdo->prepare('DELETE FROM test WHERE tabla1=:valortabla1 AND tabla2=:valortabla2');
    $borrarbd->execute(array
      (
      ':valortabla1'=>$valor1, ':valortabla2'=>$valor2
      ));


    // Mensaje de que resultado que puede mostrarse en el cliente
    echo json_encode(array('resultado'=>true, 'mensaje'=>'Todo correcto'));
    exit();

    Cabe destacar que es ejemplo rápido e ilustrativo para orientarse, por lo cual las medidas de seguridad, como filtro de donde viene la información, limpieza de parámetros, cache, sesiones, etc, son tema aparte.


Viendo 3 respuestas - de la 1 a 3 (de 3 en total)

You must be logged in to reply to this topic.