Comunidad de diseño web y desarrollo en internet online

Insert into PHP

Citar            
MensajeEscrito el 12 Mar 2009 06:31 pm
Amigos he logrado mostrar datos, hacer un login pero todavia no consigo hacer un insert o modificar datos en una tabla. Uso Php, MySql, Flex3 y me conecto con HTTPService. Si alguien tiene un ejemplo de un solo campo y quiere compartirlo le agredeceria mucho!!!! Soy nuevo y es lo unico que me falta para terminar una aplicacion. Gracias a todos. :)

Por xchacalx

Claber

133 de clabLevel



 

msie7
Citar            
MensajeEscrito el 13 Mar 2009 12:28 am
Pues bueno, soy bastante novato, pero ando con los mismos elementos, te pongo como yo lo gestiono, y si alguien aporta alguna otra forma, pues eso que aprendemos, ahí va:


Creo el hhtpService que comunique con el php que tenga el INSERT

Código :

<httpservice id=insertarUsuarioRPC 
                  url="la que sea.php" 
                  method="POST" 
                  useProxy="false"/>

//Creo un objeto dentro de una funcion que se dispara al pulsar un botón (por ejemplo) yque va a tener como propiedades aquello que necesito insertar en la base de datos...

public function insertarUsuario():void{
          var usuario:Object=new Object;
          usuario.nombre(esto tiene que ser igual que el campo de la base de datos)=nombre.text(el texto que hayas metido en un text input (por ejemplo);
          usuario.telefono=telefono.text;
//ejecuto el httpservice pasándole como parámetro el objeto que he creado
          insertUsuarioRPC.send(usuario);
}


Tanto la función como el httpService se pueden cpmletar con más cosas para pulir el servicio, pero básicamente hago eso.

Espero que te sirva, un saludo!!

Por monokote

17 de clabLevel



Genero:Masculino  

Tenerife

msie7
Citar            
MensajeEscrito el 13 Mar 2009 12:44 pm
Mil gracias por tu ayuda, ahora te pido algo mas, de ser posible... podrias poner el php al que llamas asi veo como esta armado???? eso me ayudaria mucho ya que no programo en php, gracias de nuevo, y cuando lo pruebe te digo como me fue. :)

Por xchacalx

Claber

133 de clabLevel



 

msie7
Citar            
MensajeEscrito el 13 Mar 2009 03:03 pm
No hay problema, el PHP es una fichero básico de conexión a una base de datos, sería algo así como:

Código :

<?php

// conectamos on la base de datos

$link = mysql_connect("localhost","tunombredeusuariodelaBD","uContraseña");
mysql_select_db("nombredetuBasedeDatos",$link);

// Con esta sentencia SQL insertas los datos en la base de datos
mysql_query("INSERT INTO usuarios (nombre,telefono)
VALUES ('{$_POST['nombre']}','{$_POST['telefono']}')",$link);// aqui las palabras 
nombre y telefono tienen que ser iguales a las propiedades del objeto que 
colocaste en flex. Con esto sería suficiente, pero si quieres puedes comprobar 
que todo haya do correctamente:

$my_error = mysql_error($link);

if(!empty($my_error)) { 

echo "Ha habido un error al insertar los valores. $my_error"; 

} else{
echo "los datos se introdujeron correctamente";
}

?>


Un saludo

Por monokote

17 de clabLevel



Genero:Masculino  

Tenerife

msie7
Citar            
MensajeEscrito el 16 Mar 2009 03:08 pm
Monokote: Probe lo que me diste y lamentablemente no me funciona, le busque la vuelta y no me anda, ya no se que mas hacer!!! Como un ultimo favor o a cualquiera que lea esto, no te fijarias que error estoy cometiendo? Gracias de nuevo!!!! :)
En Flex:

<mx:HTTPService id="insert" url="http://localhost/site_admin/insert.php" useProxy="false" method="POST"/>
<mx:Script>
<![CDATA[
public function insertar():void{
var datos:Object=new Object;
datos.Nombre= Nombre.text;
datos.Telefono= Telefono.text;
insert.send(datos);
}
]]>
</mx:Script>

En PHP:

<?php
$link = mysql_connect("10.0.0.7","root","1111");
mysql_select_db("test",$link);
//Insert...............
mysql_query("INSERT INTO usuarios (nombre,telefono)VALUES ('{$_POST['Nombre']}','{$_POST['Telefono']}')",$link);

$my_error = mysql_error($link);
if(!empty($my_error)) {
echo "Ha habido un error al insertar los valores. $my_error";
} else{
echo "los datos se introdujeron correctamente";
}
?>

Por xchacalx

Claber

133 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Mar 2009 04:32 pm
Pues en principio no veo ningún fallo. Podrías probar a poner 'localhost' en vez de '10.0.0.1'.
Por otra parte, seguro que es una tontería lo que está fallando, a ver, respóndeme:

- Por qué dices que el INSERT falla? porque no ves el resultado en flex? o porque entrando dentro de la BD con phpmyadmin por ejemplo, compruebas que efectivamente no hay mimgún registro nuevo? Es lógico que no veas el resultado en flex, puesto que no le estás diciendo en ningún momento que muestre los datos, simplemente que los inserte en la base de datos.

- Cuando pones datos.Nombre=Nombre.text, Nombre.text es el id de algún text input? o como lo has colocado? de donde estás cazando la información para insertarla en la BD.

- Has probado a ejecutar el archivo php independientemente de flex?? prueba a sustituir '{$_POST['Nombre']}' y '{$_POST['teléfono']}' por 'Paco' y '987654321' (o los datos que quieras vaya.. :lol: )y ejecuta el php desde el explorador,ahí te saldrá si la inserción ha sido correcta o si ha habido algún fallo, para ver si el fallo lo tienes en el php o o en flex

- Tal como lo has puesto asegurate que los registro de las tablas se llaman exactamente 'nombre' y 'telefono'

De momento no se me ocurre que más puede estar fallando, contestame a lo nque te comento a ver si conseguimos las pistas suficientes para dar con el fallo porque desde luego, yo lo uso así y me funciona bien.

Un saludo!! :wink:

Por monokote

17 de clabLevel



Genero:Masculino  

Tenerife

msie7
Citar            
MensajeEscrito el 16 Mar 2009 06:14 pm
SI!!!! me salio!!!! Gracias!!! tenia mal la conexion a la base, Gracias por tu ayuda me salvaste!!!! Una ultima duda y no quiero molestarte, ya que no tengo palabras para agradecerte!!!!! pero como podria mandarle un mensaje al usuario una vez que se hizo el insert?? tipo "se ingresaron los datos" yo programo en Delphi y eso lo solucionaria con un showmessage, aqui en flex como se maneja? Gracias por tu tiempo y la verdad que me ayudaste muchisimo!!!!

Por xchacalx

Claber

133 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Mar 2009 06:31 pm
Es muy fácil, si te fijas, tu php ya tiene los mensajes de insercíón correcta o error dependiendo de lo que ocurra con la consulta, lo único que tienes que hacer es mandarlo a flex, para ello modifica tu httpservice de la siguiente manera:

<mx:HTTPService id="insert"
url="http://localhost/site_admin/insert.php"
useProxy="false" method="POST"
result="mostrarmensaje(event)"
resultFormat="text"/>

Con esto, lo que hacemos es que al obtener el result el hhtpservice, le decimos que ejecute la función mostrarmensaje, y le pasamos el parámetro event que lleva el mensajito del php.

En tu bloque SCRIPT, donde tienes el actionscript, crea la función mostrarmensaje así:

public function mostrarmensaje(event:ResultEvent):void{
Alert.show(event.result.toString(),"Aviso");
}

Con esto, te saldrá un mensaje de alerta mostrando si la inserción se realizó o no con éxito. Ah!! Otra cosa, no olvides importar la clase mx.rpc.events.ResultEvent si no, el evento result no te funcionará y por tanto no te saldrá el mensaje.

Si no te funciona no dudes en preguntar, un saludo!

Por monokote

17 de clabLevel



Genero:Masculino  

Tenerife

msie7
Citar            
MensajeEscrito el 16 Mar 2009 07:01 pm
:) gracias le meti el mensaje y todo bien!!!!! Gracias por todo!!! sos un genio!!!!!!!!! :)

Por xchacalx

Claber

133 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.