Spanish Enviar dos o más variables por post a archivo php

Juan Mol

New Member
Licensed User
Longtime User
Por si alguien me puede ayudar...

si tengo dos edittext, y quiero pasar su contenido por post a un archivo php...

¿Cual sería la sintaxis? estoy atascado aquí...

job1.PostString................

Saludos
 

killiak

Member
Licensed User
Longtime User
Bueno, solucionado. Ya sé como hacerlo. De todas formas, gracias.

No sabes lo lindo que es ponerlo en el foro para que otros aprendan :D
 

dar2o3

Active Member
Licensed User
Longtime User
Creo recordar que se hacía concatenando los campos, algo así como "nombre=paco&apellidos=martinez"
 

dar2o3

Active Member
Licensed User
Longtime User
Yo la estoy usando para enviar por post y de momento sin ningún problema ;)
 

dar2o3

Active Member
Licensed User
Longtime User
Pues la verdad es que estoy usando $_post en php para recoger los datos .
 

josete

Member
Licensed User
Longtime User
Pues la verdad es que estoy usando $_post en php para recoger los datos .
Pues lo que esta claro es que si los datos van en la url es get y si van por post van junto con las cabeceras html y no se ven en la url,al no ser que usando b4a funcione de otra manera...
 

killiak

Member
Licensed User
Longtime User
Como yo abri el debate nuevamente, nobleza Obliga explico
Si bien se puede hacer por GET, a mi sinceramente no me gusta GET porque es muy facil inyectar cosas. SALVO que lo que necesites es algo muy puntual usaria GET, sino POST.

Ahora, para enviar POST me volvi loco al principio con las ' y " y & y .... de todo....finalmente despues de luchar un poco lo logre. En realidad me liee yo pero es increible estuve 3 horas...lo deje y al otro dia a la mañana lo resolvi en no mas de 10 minutos. Siempre pasa lo mismo

Solo para el Ejemplo

B4X:
Dim a as String
a = "Argentina"
miJob.PostString("http://XXXX/test/b4j/conection.php", ("key1=SELECT name, id FROM countries WHERE Name = '"& a &"' ORDER BY id & key2=ARG"))

Despues en el PHP puse Echo key1 y key2 y los recibio perfecto. Como bien dijo dar2o3, simplemente $query = $_POST["key1"]; y de esta manera no uso el odioso GET


Queria ver como podia hacer para pasar Varios Keys y que encima uno de ellos que tome el valor de una variable y anduvo perfecto. Cone esta base despues comence a trabajar en una conexion a Mysql remota a traves de PHP con baja posibilidad de inyeccion. Pasando parametros y no cadenas completas. Asi evito todo UPDATE. DROP o cualquier indeseado.

Saludos espero que a alguien le sirva
 

dar2o3

Active Member
Licensed User
Longtime User
Yo siempre hago como tú, uso un webservice en php para conectarme a la bd, me parece mucho mas seguro ;).

Me parece un buen detalle por tu parte poner tu solución al problema después de haberlo resuelto, dice mucho a tu favor.
 

Ghost Jaeger

New Member
hola, estoy intentando hace lo mismo pero no tengo ni idea de como debe estar el codigo php para que reciba los parametros y los agrege a la base de datos, podrias ayudarme?
 

mvera

Active Member
Licensed User
Longtime User
para enviar desde b4a

miniruta="http://xxxxxx.org.cl"&ruta_s&"/valida_user.php"
h.PostString(miniruta, "user="&user&"&clave="&clave&"")




desde php
$query_u="select * from usuarios where id_user =".$user." AND llave =".$clave)." ";


cuidado en el sql inyección. en este ejemplo deja pasar todo.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Juan

Ya que la pregunta quedó resuelta, podrias poner en la cabecera [SOLUCIONADO], asi hacemos mas agil el foro, gracias.

Saludos
 
Como yo abri el debate nuevamente, nobleza Obliga explico
Si bien se puede hacer por GET, a mi sinceramente no me gusta GET porque es muy facil inyectar cosas. SALVO que lo que necesites es algo muy puntual usaria GET, sino POST.

Ahora, para enviar POST me volvi loco al principio con las ' y " y & y .... de todo....finalmente despues de luchar un poco lo logre. En realidad me liee yo pero es increible estuve 3 horas...lo deje y al otro dia a la mañana lo resolvi en no mas de 10 minutos. Siempre pasa lo mismo

Solo para el Ejemplo

B4X:
Dim a as String
a = "Argentina"
miJob.PostString("http://XXXX/test/b4j/conection.php", ("key1=SELECT name, id FROM countries WHERE Name = '"& a &"' ORDER BY id & key2=ARG"))

Despues en el PHP puse Echo key1 y key2 y los recibio perfecto. Como bien dijo dar2o3, simplemente $query = $_POST["key1"]; y de esta manera no uso el odioso GET


Queria ver como podia hacer para pasar Varios Keys y que encima uno de ellos que tome el valor de una variable y anduvo perfecto. Cone esta base despues comence a trabajar en una conexion a Mysql remota a traves de PHP con baja posibilidad de inyeccion. Pasando parametros y no cadenas completas. Asi evito todo UPDATE. DROP o cualquier indeseado.

Saludos espero que a alguien le sirva

Disculpen por publicar en este post (que ya esta cerrado), pero es que soy algo nueva en la programacion, se programar en Basic y tengo un programa hecho en su totalidad, el problema es que quiero sacar datos del mismo y enviarlos a un servidor web para poder acceder a la informacion desde un navegador, no se nada de MySql (recuerdo hace tiempo haber hecho un programa con una base de datos en MySql pero con visual studio y no tenia que hacer una conexion remota, sino era local), el punto es que leyendo esto me llamo la atencion de la "simpleza" con la que se ve el poder enviar datos a la web (parece simple, no digo que lo sea), pero tengo nada de nociones de PHP, tengo 5 labels (que son el resultado de todo los calculos del programa) y me gustaria enviar sus datos a un servidor, me podrian ayudar??

De antemano agradezco la ayuda que me pudiesen dar, Besos!!
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Alexasthar

Lo mejor es que abras un nuevo post y asi lo verá todo el mundo y alguien te contestará, estando aqui dentro sera mas dificil que el resto de la gente lo vea.

Saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User
Quiero aportar en este tema, espero a alguien le sirva

B4X:
Sub Globals
    Private ServerIP As String
End Sub
Sub Activity_Create(FirstTime As Boolean)

ServerIP="ip_del_servidor_o_url"

End Sub

Para enviar:

B4X:
Sub GetInsert(SQL_Pre As String, sJob As String)
    Dim GetSQL As HttpJob
    GetSQL.Initialize(sJob, Me)
    GetSQL.download2("http://" & ServerIP & "/tuarchivo.php", Array As String ("SQL", SQL_Pre, "Insert", "1"))
End Sub

B4X:
GetInsert("INSERT INTO NombreTabla (los campos donde quieren insertar) VALUES('Los valores que insertan para cada campo')", "unNombreX")

Para recibir:

B4X:
Sub GetData(SQL_Pre As String, sJob As String)
    Dim GetSQL As HttpJob
    GetSQL.Initialize(sJob, Me)
    GetSQL.download2("http://" & ServerIP & "/tuarchivo.php", Array As String ("SQL", SQL_Pre))
End Sub

B4X:
Sub DevuelveDatos
    GetData("SELECT * FROM NombreTabla;","GetDatos")
End Sub

B4X:
Sub JobDone(Job As HttpJob)
    ProgressDialogHide
    If Job.Success Then
             Dim res As String
            res = Job.GetString
            Log("Back from Job:" & Job.JobName )
            Log("Job Text: " & res)
            Dim parser As JSONParser
            parser.Initialize(res)
        Select Job.JobName

            Case "GetDatos"
                Dim Name As String
                Dim ListPlan As List
                ListDt = parser.NextArray 'returns a list with maps
                If ListDt.Size == 0 Then
                      Msgbox("No hay datos", "Alerta!")
                Else
           
                    For i = 0 To ListDt.Size - 1
                        Dim Datos As Map
                        Datos = ListDt.Get(i)
                        Name = Datos.Get("Nombre")
                    Next
                End If
                        Msgbox(Name, "Mostramos el Nombre que recibe")
        End Select
     End If

End Sub

Y el codigo del php que hace el trabajo de conectarse al servidor donde esta la BD.

B4X:
<?php

$host = "Servidor";
$user = "Usuario";
$pw = "Clave";
$db = "NombreBD";

$con = mysql_pconnect($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'");
$inst="";
$SQL = $_GET["SQL"];
if (isset($_GET["Insert"])) {
   //Código de validación de datos
    $inst = $GET["Insert"];
}

        $pre = mysql_query($SQL);
        if($inst == ""){
        $rows = array();
        while($r = mysql_fetch_assoc($pre))
        {
            $rows[] = $r;
            //echo $rows;
        }
        print json_encode($rows);
        }
?>

Espero sea de utilidad.
 
Last edited:

edochan

Member
Licensed User
Longtime User
Hola.
Gracias rscheel, así visualmente es mas facil de seguir. 2 preguntas.
Y disculpad si son de perogrullo, (no se nada de envíos de este tipo y necesito hacerlo).

Cuando das la orden GetInsert( ...... ('Los valores que insertan para cada campo')", "unNombreX")
ese "unNombreX" que es? un nombre que identifica el envío, la DB ?

¿Puedo hacerlo así para enviar los 13 valores en una tabla "datos" que he creado?:
GetInsert("INSERT INTO datos (Codigo_ID,fecha,estado,minuto,alarma,ambi,aspi,run,temp2,Liq,Vc,cond,seg) VALUES('Codigo_ID','fecha','estado','minuto','alarma','ambi','aspi','run','temp2','Liq','Vc','cond','seg')", "nuevo")

el nombre de los datos en la DB y de las variables del programa son el mismo.
 

rscheel

Well-Known Member
Licensed User
Longtime User
Hola.
Gracias rscheel, así visualmente es mas facil de seguir. 2 preguntas.
Y disculpad si son de perogrullo, (no se nada de envíos de este tipo y necesito hacerlo).

Cuando das la orden GetInsert( ...... ('Los valores que insertan para cada campo')", "unNombreX")
ese "unNombreX" que es? un nombre que identifica el envío, la DB ?

¿Puedo hacerlo así para enviar los 13 valores en una tabla "datos" que he creado?:
GetInsert("INSERT INTO datos (Codigo_ID,fecha,estado,minuto,alarma,ambi,aspi,run,temp2,Liq,Vc,cond,seg) VALUES('Codigo_ID','fecha','estado','minuto','alarma','ambi','aspi','run','temp2','Liq','Vc','cond','seg')", "nuevo")

el nombre de los datos en la DB y de las variables del programa son el mismo.


El unNombreX puedes usar cualquier identificador, se utilizaría en el caso de que retornaras algo, pero en el insert no devuelves nadas, lo del insert es la misma sintaxis que usas en php para trabajar con mysql.

Un ejemplo puede ser este.
B4X:
GetInsert("INSERT INTO control (id_control, id_variable, cumple) VALUES ('" & id_control & "', '" & id_variable & "', '" & cumple & "' )", "GetRepl")

Espero te sirva, saludos.
 
Top