Bueno, solucionado. Ya sé como hacerlo. De todas formas, gracias.
Me parece que esa nomenclatura se usa para get,junto con la url del archivo php que procesa la peticion,como:Creo recordar que se hacía concatenando los campos, algo así como "nombre=paco&apellidos=martinez"
Porque estaras usando $_REQUEST en .php que procesa los datos para recoger los valores no?Yo la estoy usando para enviar por post y de momento sin ningún problema
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...Pues la verdad es que estoy usando $_post en php para recoger los datos .
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"))
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
Sub Globals
Private ServerIP As String
End Sub
Sub Activity_Create(FirstTime As Boolean)
ServerIP="ip_del_servidor_o_url"
End Sub
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
GetInsert("INSERT INTO NombreTabla (los campos donde quieren insertar) VALUES('Los valores que insertan para cada campo')", "unNombreX")
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
Sub DevuelveDatos
GetData("SELECT * FROM NombreTabla;","GetDatos")
End Sub
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
<?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);
}
?>
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.
GetInsert("INSERT INTO control (id_control, id_variable, cumple) VALUES ('" & id_control & "', '" & id_variable & "', '" & cumple & "' )", "GetRepl")