Internet... necesito un pequeño empujón

Pues necesitarías usar un framework php como Slime/CodeIgniter/Laravel etc que te manejen ese tipo de rutas por ejemplo:

http://midominio.com/amigos/{valor1}/{valor2}/{valor3} y cosas de ese estilo, realmente no es tan complicado usando una herramienta de estas.

Haces tu proceso de insert/update/delete con php y simplemente respondes con un echo ya sea un simple texto ok/error o un json con información detallada para que corona sepa que sucedió.

Te recomiendo manejar un sistema de Tokens para la seguridad de tu sitio.

Gracias por las contestaciones Miguel68!

He encontrado este codigo para hacer una REST Api:

\<?php // get the HTTP method, path and body of the request $method = $\_SERVER['REQUEST\_METHOD']; $request = explode('/', trim($\_SERVER['PATH\_INFO'],'/')); $input = json\_decode(file\_get\_contents('php://input'),true); // connect to the mysql database $link = mysqli\_connect('localhost', 'user', 'pass', 'dbname'); mysqli\_set\_charset($link,'utf8'); // retrieve the table and key from the path $table = preg\_replace('/[^a-z0-9\_]+/i','',array\_shift($request)); $key = array\_shift($request)+0; // escape the columns and values from the input object $columns = preg\_replace('/[^a-z0-9\_]+/i','',array\_keys($input)); $values = array\_map(function ($value) use ($link) { &nbsp;&nbsp;if ($value===null) return null; &nbsp;&nbsp;return mysqli\_real\_escape\_string($link,(string)$value); },array\_values($input)); // build the SET part of the SQL command $set = ''; for ($i=0;$i\<count($columns);$i++) { &nbsp;&nbsp;$set.=($i\>0?',':'').'`'.$columns[$i].'`='; &nbsp;&nbsp;$set.=($values[$i]===null?'NULL':'"'.$values[$i].'"'); } // create SQL based on HTTP method switch ($method) { &nbsp;&nbsp;case 'GET': &nbsp;&nbsp;&nbsp;&nbsp;$sql = "select \* from `$table`".($key?" WHERE id=$key":''); break; &nbsp;&nbsp;case 'PUT': &nbsp;&nbsp;&nbsp;&nbsp;$sql = "update `$table` set $set where id=$key"; break; &nbsp;&nbsp;case 'POST': &nbsp;&nbsp;&nbsp;&nbsp;$sql = "insert into `$table` set $set"; break; &nbsp;&nbsp;case 'DELETE': &nbsp;&nbsp;&nbsp;&nbsp;$sql = "delete `$table` where id=$key"; break; } // excecute SQL statement $result = mysqli\_query($link,$sql); // die if SQL statement failed if (!$result) { &nbsp;&nbsp;http\_response\_code(404); &nbsp;&nbsp;die(mysqli\_error()); } // print results, insert id or affected row count if ($method == 'GET') { &nbsp;&nbsp;if (!$key) echo '['; &nbsp;&nbsp;for ($i=0;$i\<mysqli\_num\_rows($result);$i++) { &nbsp;&nbsp;&nbsp;&nbsp;echo ($i\>0?',':'').json\_encode(mysqli\_fetch\_object($result)); &nbsp;&nbsp;} &nbsp;&nbsp;if (!$key) echo ']'; } elseif ($method == 'POST') { &nbsp;&nbsp;echo mysqli\_insert\_id($link); } else { &nbsp;&nbsp;echo mysqli\_affected\_rows($link); } // close mysql connection mysqli\_close($link);

No estoy muy seguro como funciona, pero lo iré investigando.

Si en un supuesto caso, esto funcionara. ¿Tendría que subir el fichero en extensión php en el servidor?

¿Alguna suggerencia?

Mirando un videotutorial por internet he encontrado algo que funciona:

local json = require( "json" ) local mime = require( "mime" ) local function handleResponse( event ) &nbsp; &nbsp; if not event.isError then &nbsp; &nbsp; &nbsp; &nbsp; local response = json.decode( event.response ) &nbsp; &nbsp; &nbsp; &nbsp; print( event.response ) &nbsp; &nbsp; else &nbsp; &nbsp; &nbsp; &nbsp; print(event.response) &nbsp; &nbsp; end &nbsp; &nbsp; return end local headers = {} headers["Authentication"] = mime.b64("\*\*\*\*\*\*\*\*\*\*\*\*\*") local params = {} params.headers = headers network.request( "http://www.\*\*\*\*\*\*\*\*\*\*\*\*.es/index.php", "GET", handleResponse, params )

Esta es la aplicacion base para Corona sdk. Mientras que en el servidor hay una pagina PHP con el siguiente código:

\<?php $host="\*\*\*\*\*.\*\*\*\*.\*\*"; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; $username="\*\*\*\*\*\*\*\*"; $password="\*\*\*\*\*\*\*\*"; &nbsp; $db\_name="\*\*\*\*\*\*\*\*\*";&nbsp; $con=mysql\_connect("$host", "$username", "$password")or die("cannot connect"); mysql\_select\_db("$db\_name") or die ("cannot select DB"); $sql = "select \* from user"; $result = mysql\_query($sql); $json = array(); $count=0; if(mysql\_num\_rows($result)){ while($row=mysql\_fetch\_row($result)) { $count = $count+1; $json[$count]=$row; } } mysql\_close($db\_name); echo json\_encode($json); ?\>

Si alguien supiera como puedo hacer más funciones o búsquedas. Para mi ver que me devuelve mi lista de usuarios y contraseñas ya es increible, jeje…

Obviamente con esto solo puedo hacer una consulta, y me gustaría hacer filtros sql, insertar datos… etc.
Por ejemplo, mi idea sería enviar los datos de la $sql para poder decidir que quiero ver, y así mismo, enviar tambien el nombre de la tabla.

Gracias de antemano!!!

Si necesitar montar un sitio php en un server, pues yo te insistiria en que uses un framework, pero si quieres usar php puro pues necesitas ya sea crear un switch para filtrar las peticiones o crear varios archivos .php que se encarguen de las diferentes funciones que quieras hacer.

La idea del REST API en realidad me gusta, pero he hecho varias pruebas con el framework Slim y he tenido problemas de instalación. He estado probando un proyecto que se llama AUTOMATIC API REST, pero me faltan conocimientos para entenderlo, ya que solo pude visualizar el contenido de las tablas, nada más.

Pero yo tengo una pregunta, en el framework tambien hay que picar código no? Qué diferencia hay entre el PHP puro y duro? Debería utilizar Apache?

Y otra pregunta, crees que podría enviar datos dentro de network.request después del link? Ejemplo:

network.request( "http://www.paginadeprueba.es/index.php?tabla=usuario&texto=blabla", "GET", handleResponse, params )

, y recibirlas en la pagina php? como variables &tabla y &texto.

Saludos :slight_smile:

Edit: Solo quería decir que ya está resuelto, con la instruccion $_GET(tabla)

La diferencia nadamas esque el framework ya esta diseñado para trabajar con la api rest y es sumamente sencillo hacerlo, tiene filtros de petición y cosas de seguridad muy utiles XD

Si puedes enviar los parametros en URL sin problemas solo no mandes nada como “params” en la peticion de corona, el server php tomara estos datos como un GET normal ya que la info va en la url y podrás acceder a ellos mediante $_GET[‘campo’]

Supongo que ya estás familiarizado con el tema del API, pero me tiene muy confuso. ¿Qué debería hacer? Instalar el framework Slim, y después trabajar con Apache? Por cierto, a qué te refieres con lo de “solo no mandes nada como “params” en la petición de corona”?

Ahora si que veo necesario hablar contigo, pero tampoco quiero abusar de tu tiempo. Esto parece más un chat que un foto X-D

Bueno ya he empezado a desarrollar la aplicación, y todo me va saliendo bastante bien. Saludos!

ajajaja animo no te preocupes no me molesta, si necesitas ayuda o tienes duda no dudes en contactarme ;D, suerte con tu app!

Bueno, tengo algún avance, la búsqueda ha resultado precisa jajajaja:

local function networkListener( event ) &nbsp; &nbsp; if ( event.isError ) then &nbsp; &nbsp; &nbsp; &nbsp; print( "Network error - download failed: ", event.response ) &nbsp; &nbsp; elseif ( event.phase == "began" ) then &nbsp; &nbsp; &nbsp; &nbsp; print( "Progress Phase: began" ) &nbsp; &nbsp; elseif ( event.phase == "ended" ) then &nbsp; &nbsp; &nbsp; &nbsp; print( "Displaying response image file" ) &nbsp; &nbsp; &nbsp; &nbsp; myImage = display.newImage( event.response.filename, event.response.baseDirectory, 60, 40 ) &nbsp; &nbsp; &nbsp; &nbsp; myImage.alpha = 0 &nbsp; &nbsp; &nbsp; &nbsp; transition.to( myImage, { alpha=1.0 } ) &nbsp; &nbsp; end end local params = {} params.progress = true network.download( &nbsp; &nbsp; "http://docs.coronalabs.com/images/simulator/image-mask-base2.png", &nbsp; &nbsp; "GET", &nbsp; &nbsp; networkListener, &nbsp; &nbsp; params, &nbsp; &nbsp; "helloCopy.png", &nbsp; &nbsp; system.TemporaryDirectory )

He probado esto y funciona perfectamente! Se muestra la imagen en el simulador! Seguiré investigando, y si veo avances, los dejaré aquí por si a alguien lo necesita!

Entiendo que lo que hace es crear un archivo temporal que se llama helloCopy.png, no? Y el método de transferencia de datos es GET.

¿Y para simplificar el trabajo para no usar PHP (no se como funciona el lenguaje), debería tener un documento de texto almacenado en algún sitio, descargarlo, leerlo y mostrarlo, no?

Saludos!

Hola, no es necesario del todo que descargues la imagen, puedes cargarla desde una URL remota de manera dinamica, puedes obtener todo el articulo como json mediante una petición GET/POST y con ello crear la pagina del articulo en corona :smiley:

Gracias por tu respuesta! No he terminado de entender lo que me quieres decir. Lo de la imagen dinámica, creo que te entiendo; pero de todas formas, la imagen .png es temporal, y por lo tanto se borrará después, aún así lo investigaré. También estoy mirando lo de json, tal y como tu dices.

Saludos!

Animo, cualquier duda aqui estamos :smiley:

Alguien sería tan amable de explicarme que es el json, y que relacion tiene con internet? Veo que tiene que ver con algún tipo de codificación y a la vez también con php, es decir, con base de datos. ¿Eso quiere decir que si hago alguna llamada en alguna base de datos, estoy obligado a usar estos protocolos? Gracias de antemano!

He encontrado esta pagina y lo explica bastante bien:

https://geekytheory.com/json-i-que-es-y-para-que-sirve-json/

Basicamente es una notación para transportar datos en tu articulo se explica bien, te sirve para enviar datos de corona a tu server y viceversa :D 

Ya estoy entendiendo como funciona! Que alegría! Pero ahora viene una gran duda, si desde Corona Sdk quiero cambiar el contenido de la base de datos, como por ejemplo borrar usuarios, como lo hago? Acepta codigo PHP? O la gestion se hace con Lua dentro de Corona?
Gracias en serio!

Si se puede solo necesitas en tu server crear una api CRUD ( create,replace,update,delete ) con urls que respondan a la accion que buscas, ejemplo midominiio.com/delete/userid y hacer las request a esas direcciones desde corona  :D si quieres preguntarme tus dudas puedes mandarme mails directos a mi correo miguel@xpc.mx o puedes buscarme en facebook como miguestachaser :smiley:

Saludos!

Hola que tal. 

Mi nombre es diego, actualmente en mi trabajo estoy en un proyecto el cual es desarrollar una aplicación móvil y que esta misma tenga acceso a base de datos alojada en un servidor web. De esta forma las modificaciones que se hagan a esa base de datos se visualicen en la aplicación móvil, y si se realizan cambios desde la aplicación se visualicen en la base de datos. 

Soy nuevo en esto de desarrollo para móviles, supe del SDK de corona y ahora estoy aprendiendo poco a poco, pero tengo duda si se puede realizar lo que he comentado y si se puede hacer con la versión gratuita de corona labs o tengo que comprar enterprise.

Me encantaría que me puedan responder y ayudar, les estaré muy agradecido. 

Saludos

Hola ya te respondí por correo, creo que sera mas facil :D