Spanish B4A con MySql

Discussion in 'Spanish Forum' started by benji, Feb 9, 2015.

  1. benji

    benji Active Member Licensed User

    estoy tratando de insertar registros, pero no me resulta... por ahora son solo pruebas, y estoy siguiendo el ejemplo de los tutoriales que existen...

    este es mi php, el mismo del tutorial... aunque solo me interesa la parte de "InsertNewPerson"

    <?php

    $host = "127.0.0.1";
    $user = "root";
    $pw = "";
    $db = "AvalonTR";

    $con = mysql_connect($host,$user,$pw) or die(mysql_error());
    mysql_select_db($db) or die(mysql_error());
    mysql_query("SET CHARACTER SET utf8");
    mysql_query("SET NAMES 'utf8'");

    $action = $_GET["action"];

    switch ($action)

    {
    case "CountPersons":
    $q = mysql_query("SELECT * FROM persons");
    $count = mysql_num_rows($q);
    print json_encode($count);
    break;

    Case "GetPersons":
    $q = mysql_query("SELECT name, age FROM persons");
    $rows = array();
    while($r = mysql_fetch_assoc($q))
    {
    $rows[] = $r;
    }
    print json_encode($rows);
    break;

    case "InsertNewPerson":
    $maquina = $_GET["Maquina"];
    $fecha = $_GET["fecha"];
    $q = mysql_query("INSERT INTO Damir (maquina, fecha) VALUES ('$maquina', $fecha)");
    print json_encode("Inserted");
    break;

    }

    ?>

    la insercion la hace, el problema es que los valores que inserta son 0 y 0000-00-00 o lo que mande...siempre es el mismo resultado.

    este es mi Job
    Dim InsertNewPerson As HttpJob
    InsertNewPerson.Initialize("InsertNewP", Me)
    InsertNewPerson.download2("http://192.168.1.100/avalontr/php_example.php", Array As String ("action", "InsertNewPerson", "maquina", "60", "fecha", "23-07-2015"))


    desde ya, muchas gracias por la ayuda.

    Saludos.
     
  2. Descartex

    Descartex Well-Known Member Licensed User

    Buenas, benji.
    Prueba a ver a hacer un echo de las variables $_GET y las $maquina y $fecha, a ver si por ahi van los tiros.
    Tiene toda la pinta de que pierde los datos en algun momento.
    Un saludo.
     
  3. benji

    benji Active Member Licensed User

    Buenas Descartex, como hago los echo y donde los veo? de php casi nada, por no decir nada jajaaja
     
  4. Descartex

    Descartex Well-Known Member Licensed User

    Buenas, haz algo asi:
    PHP:
    case "InsertNewPerson":
    $maquina $_GET["Maquina"];
    $fecha $_GET["fecha"];
    //$q = mysql_query("INSERT INTO Damir (maquina, fecha) VALUES ('$maquina', $fecha)");
    //print json_encode("Inserted");
    print "maquina->".$maquina."/fecha->".$fecha;
    break;
    y observa en el programa a ver que es lo que devuelve cuando le mandas insertar.
    Un saludo.
     
  5. benji

    benji Active Member Licensed User

    lo hice, pero no tuve idea donde mirar el resultado(print), donde se debe imprimir... volvi todo identico a como estaba al principio, pero ahora no inserta, pero me devuelve el mensaje de "registro insertado" que se genera con el resultado del Job....
     
  6. benji

    benji Active Member Licensed User

    ya, algo arregle, mi problema obviamente (jajaa) estaba en el lado php, ahora, uno de los temas que tuve, fue con la direccion IP del "servidor"... en el .php tenia puesto 192.168.1.100 que es donde esta mi servidor local, en ese caso no funcionaba... pero si ponia 127.0.0.1, si funciona...
    pregunta, para hacerlo remoto, tendria que seguir siendo 127.0.0.1?
     
  7. Descartex

    Descartex Well-Known Member Licensed User

    Me parecía que había una pérdida de datos...
    Si el PHP esta en el mismo servidor que la base de datos, la dirección sera 127.0.0.1 (o localhost, es lo mismo), sino hay q darle la dirección del host destino.
    Ejemplo:
    Mi BBDD esta en mi servidor www.Pepe.es y mi PHP en el www.Juan.es pues la dirección en el PHP sera www.Pepe.es
    Si están las dos en el mismo, sera 127.0.0.1 o localhost que ye lo mismo.
    Espero no haberte liado.
     
  8. benji

    benji Active Member Licensed User

    para nada me complicaste, tengo claro que 127.0.0.1 y localhost son lo mismo, mi pregunta iba por que el 192.168.1.100 tambien "deberia ser lo mismo", ya que es la misma direccion ip del equipo...
    pero vale, ya me quedo claro, en este caso estoy usando la BBDD en el mismo servidor, y despues seguiran estando... asi que deberia seguir usando 127.0.0.1.

    Muchas gracias.
     
  9. dar2o3

    dar2o3 Active Member Licensed User

    Cuando pones la ip 127.0.0.1 o localhost, php directamente ataca a la base de datos que está en local, pero cuando pones la ip real de tu equipo (192.168.1.100 o la que tengas) php intenta acceder a esa ip, para ello vamos a decirlo así primero pregunta a tu router si conoce la ip, el router le dice que sí y le dice como llegar ( en este caso es tu mismo equipo, pero pasando antes por el router, es como si tu conexión viniera de tu red lan) tienes que configurar mysql para que puedan acceder al él desde fuera de localhost (cosa que yo no haría en un entorno de producción si no es con filtro de ip) y también tienes que redireccionar un puerto en tu ruter hacia el puerto que mysql pone a la escucha (ahora no recuerdo cual el 3306 creo.)
     
    Last edited: Feb 16, 2015
  10. benji

    benji Active Member Licensed User

    Sigo pidiendo ayuda...
    tengo en mi SQLite por ejemplo, 10 registros y cada 5 minutos quiero insertarlos en MySQL

    Code:
    CurVentas = DBVenta.ExecQuery("Select * from Venta where Up = 'NO'")
        
    If CurVentas.RowCount > 0 Then
            
    For i = 0 To CurVentas.RowCount-1
                CurVentas.Position = i
                FechaVta = CurVentas.GetString(
    "Fecha")
                
    'DateTime.DateFormat = "yyyy-MM-dd"
                'FechaSql = DateTime.Date(FechaVta)
               
                HorarioVta = CurVentas.GetString(
    "Horario")
                HoraVta = CurVentas.GetString(
    "Hora")
                ValorVta = CurVentas.GetString(
    "Valor")
                TipoVta = CurVentas.GetString(
    "Tipo")
                FolioVta = CurVentas.GetString(
    "Folio")
                latVta = CurVentas.GetString(
    "lat")
                lonVta = CurVentas.GetString(
    "lon")
                InsertNewPerson.Initialize(
    "InsertNewP", Me)
                InsertNewPerson.download2(
    "http://192.168.1.100/avalontr/persons.php"Array As String ("action""InsertNewPerson","maquina",AuxMaquina,"fecha",FechaVta,"horario",HorarioVta,"hora",HoraVta,"valor",ValorVta,"tipo",TipoVta,"folio",FolioVta,"lat",latVta,"lon",lonVta))
            
    Next
        
    End If
    cuando ejecuto lo anterior,los 5 registros quedan con el mismo numero de folio, el ultimo realizado por el ciclo For...
    entonces, tiene que ver con el php? o tengo algo mal por aca?
    ademas, cuando tengo el regreso desde el php, quiero actualizar mi SQLite, y marcarlos como ya subidos...

    se entiende?

    desde ya, muchas gracias.
     
  11. dar2o3

    dar2o3 Active Member Licensed User

    Eso que haces, me parece que no es correcto, estás lanzando en un bucle un montón de inserts a una base de datos sin tener en cuenta si la primera lanzada a sido correcta o no por ejemplo, yo que tu lo que haría es enviar un json con todos los registros que quieres insertar en la bd, en php recoges el json y ahí si creas un bucle para insertar todos los registros en un bucle, comprobando eso si después de cada insert que se haya realizado correctamente.
     
  12. benji

    benji Active Member Licensed User

    al final, en vez de usar php, tome una de las librerias que hay que se conectan directo a la BD a traves de distinos conectores, vas directo sobre la BD, se gana en velocidad, pero tiene un pero, no es recomendable para aplicaciones comerciales que vayan a estar en el play, ya que los datos de conexion podrian quedar expuestos....
     
  13. prodisoft

    prodisoft New Member Licensed User

    Qué librería de coneción directa a la BD estás utilizando? Vi en el foro que hay MSMariaDB y MSMySQL pero no sé cual irá mejor. Por otro lado no sé como descargarlas. Veo que hay que pagar 5$ pero una vez hecho el pago ¿Cómo se descargan?
    Gracias por tu ayuda.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice