Comunidad de diseño web y desarrollo en internet

Muy básico: Llamar una función en PHP

Citar            
MensajeEscrito el 29 Ene 2009 12:09 pm
Saludos, os expongo un tema sobre PHP que creo es muy básico pero me esta agobiando un monton. Yo soy diseñador y con el AS me llevo bien, pero en PHP soy el mas tarugo y no me entero demasiado. He probado soluciones de distintos tipos sacadas de tutoriales y demás pero nada. El chaval que me llevaba la parte en PHP y BBDD se ha pirado de Erasmus y me encuentro con el marron encima. Asi que agradeceria muchisimo si alguien me puede hechar una mano.

El caso es que realizé la web para una empresa de iluminación, y en ella hay un formulario de registro de usuarios. Esto me lo pidió el cliente para poder registrar los datos de la mayoria de sus clientes, y el funcionamiento hasta ahora es el siguiente: El usuario introduce los datos en el formulario y le da a enviar, esto genera un email que le llega a mi cliente, y si mi cliente esta de acuerdo en añadir a ese usuario en la BBDD le da al boton de validar.

Y mi problema: Ahora lo que quiere el cliente es que el usuario quede registrado automaticamente al enviar el formulario, sin tener él que darle al botón del email. No se como hacerlo y me va a estallar la cabeza, repito que soy un tarugo en PHP y me he quedado un poco tirado, a parte tengo la sensación que es facilisimo y no me han funcionado las cosas que he probado por qualquier tonteria.

Os pongo el código. Este es el archivo PHP que llamo desde AS. Le mando las variables y este código genera el email que le llega a mi cliente. Como veis, el botón de validar esta asociado a la funcion "add_from_mail" del archivo "usuaris.php" (que pongo mas abajo).

Código :

<?php
//Se recojen las variables
$nom = $_POST['nom'];
$username = $_POST['username'];
$pass = $_POST['pass'];
$empresa = $_POST['empresa'];
$sector = $_POST['sector'];
$cargo = $_POST['cargo'];
$profesion = $_POST['profesion'];
$direccion = $_POST['direccion'];
$poblacion = $_POST['poblacion'];
$provincia = $_POST['provincia'];
$cp = $_POST['cp'];
$estado = $_POST['estado'];
$telefono = $_POST['telefono'];
$fax = $_POST['fax'];
$email = $_POST['email'];
//
$mensaje = '
<h2>Añadir</h2>
    <form action="http://pujoliluminacion.com/usuaris/usuaris.php" method="GET">
        <input type="hidden" name="action" value="add_from_mail" />
        nom:
        <input type="text" name="nom" value="' . $nom . '"/><br/>
        username:
        <input type="text" name="username" value="' . $username . '"/><br/>
        password:
        <input type="text" name="pass" value="' . $pass . '"/><br/>
        empresa:
        <input type="text" name="empresa" value="' . $empresa . '"/><br/>
        sector:
        <input type="text" name="sector" value="' . $sector . '"/><br/>
        cargo:
        <input type="text" name="cargo" value="' . $cargo . '"/><br/>
        profesion:
        <input type="text" name="profesion" value="' . $profesion . '"/><br/>
        direccion:
        <input type="text" name="direccion" value="' . $direccion . '"/><br/>
        poblacion:
        <input type="text" name="poblacion" value="' . $poblacion . '"/><br/>
        provincia:
        <input type="text" name="provincia" value="' . $provincia . '"/><br/>
        codigopostal:
        <input type="text" name="codigopostal" value="' . $cp . '"/><br/>
        estado:
        <input type="text" name="estado" value="' . $estado . '"/><br/>
        telefono:
        <input type="text" name="telefono" value="' . $telefono . '"/><br/>
        fax:
        <input type="text" name="fax" value="' . $fax . '"/><br/>
        mail:
        <input type="text" name="mail" value="' . $email . '"/><br/>
        <input type="submit" /><br/>
        </form>
';
//Se usa la función mail() para mandar el correo.
$mail1 = mail("micliente@gmail.com","Pujol WebSite - Petición de Registro",$mensaje,"Content-type:text/html\r\nFrom: 
\nFrom: $email");
?>


Y aqui os pongo el código de las funciones del archivo "usuaris.php": He limpiado un poco el código de cosas que no pintan nada ahora, Hay la función "add" que se utiliza para añadir a través de una página a parte y donde introduces los datos manualmente, y la función "add_from_mail" que es la que actualmente estamos utilizando.

Código :

<?php
require_once("../includes.php");
$table = 'usuaris';
if ($_POST['action'] == 'add') {
    echo('We are adding</br>');
    $sentence = "INSERT INTO $table VALUES('" . 
                $_POST['username'] . "','" .
                $_POST['nom'] . "','" . 
                $_POST['empresa'] . "','" . 
                $_POST['sector'] . "','" .
                $_POST['cargo'] . "','" . 
                $_POST['profesion'] . "','" . 
                $_POST['direccion'] . "','" . 
                $_POST['poblacion'] . "','" . 
                $_POST['provincia'] . "','" .
                $_POST['codigopostal'] . "','" . 
                $_POST['estado'] . "','" .
                $_POST['telefono'] . "','" . 
                $_POST['fax'] . "','" . 
                $_POST['mail'] . "','" .
                sha1($_POST['pass']) . "')";

} else if ($_GET['action'] == 'add_from_mail') {
    echo('We are adding</br>');
    $sentence = "INSERT INTO $table VALUES('" . 
                $_GET['username'] . "','" .
                $_GET['nom'] . "','" . 
                $_GET['empresa'] . "','" . 
                $_GET['sector'] . "','" .
                $_GET['cargo'] . "','" . 
                $_GET['profesion'] . "','" . 
                $_GET['direccion'] . "','" . 
                $_GET['poblacion'] . "','" . 
                $_GET['provincia'] . "','" .
                $_GET['codigopostal'] . "','" . 
                $_GET['estado'] . "','" .
                $_GET['telefono'] . "','" . 
                $_GET['fax'] . "','" . 
                $_GET['mail'] . "','" .
                sha1($_GET['pass']) . "')";
}


Yo entiendo que el primer código, deberia llamar directamente a la función "add" en vez de la "add_from_mail", y sin tener que darle al botón, pero no se hacerlo. Tambien he intentado cambiar el primer código directamente por un INSERT INTO (ya ni me acuerdo si era este el comando...) y no me funcionó (y conetando a la BBDD previamente por include.php y tal). No se si es por el GET y el POST o yo que se.

Por favor, a ver si alguien me puede tirar un cable, muchas gracias de antemano.

Por kramahz

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ene 2009 03:14 pm
segun lo que entendi arriba, es sencillo:

necesitas dos archivos:

- formulario html: bueno ya lo tenes, para pedir la info del usuario

- agregar a la db: en este archivo rescatas las variables por metedo POST enviadas desde el formulario y lo insertas en la base de datos, nada mas sencillo que eso...

o quitale esta linea a tu codigo

if ($_POST['action'] == 'add') { // esto pide la validacion via mail... si le quitas la linea no necesitara la validacion, por lo tanto sera automatico...

espero haberte ayudado, segun lo que entendi de arriba....


Saludos
[Eagles]Of[Zion]

Por calebzion

51 de clabLevel



Genero:Masculino  

Diseñador Programador Principiante

msie7
Citar            
MensajeEscrito el 29 Ene 2009 04:03 pm
Para empezar es bueno que te quede claro que los procesos en el código de usuaris.php no son funciones, y no se pueden comportar como tales, simplemente son instrucciones comunes y corrientes.

Luengo, para tu caso específico, copia el código que esta en el primer bloque de instrucciones (lo que esta dentro del if), en el que las variables se obtienen por POST y pégalo en el código que envía el correo electrónico. Hace falta una instrucción en la que ejecutas la query en la base de datos, probablemente este en una sección de código que no mostraste, esa instrucción también es necesaria para que funcione al igual que la primera en la que seteas el nombre de la tabla.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 29 Ene 2009 04:06 pm
Pues no me funciona. Si yo solo quiero que el formulario de la web añada un usuario a la base de datos, es que no me entero ni entiendo porque es tan complicado... He cambiado el archivo que ejecuta el formulario de la pelicula SWF por esto, y creo que deberia subir el usuario a la base de datos no? Recoger las variables funciona porque ahi no he tocado nada...

Código :

<?php
//Se recojen las variables
$nom = $_POST['nom'];
$username = $_POST['username'];
$pass = $_POST['pass'];
$empresa = $_POST['empresa'];
$sector = $_POST['sector'];
$cargo = $_POST['cargo'];
$profesion = $_POST['profesion'];
$direccion = $_POST['direccion'];
$poblacion = $_POST['poblacion'];
$provincia = $_POST['provincia'];
$cp = $_POST['cp'];
$estado = $_POST['estado'];
$telefono = $_POST['telefono'];
$fax = $_POST['fax'];
$email = $_POST['email'];
//
require_once("../includes.php");
$table = 'usuaris';
$sentence = "INSERT INTO $table VALUES('" . 
                $_POST['username'] . "','" .
                $_POST['nom'] . "','" . 
                $_POST['empresa'] . "','" . 
                $_POST['sector'] . "','" .
                $_POST['cargo'] . "','" . 
                $_POST['profesion'] . "','" . 
                $_POST['direccion'] . "','" . 
                $_POST['poblacion'] . "','" . 
                $_POST['provincia'] . "','" .
                $_POST['codigopostal'] . "','" . 
                $_POST['estado'] . "','" .
                $_POST['telefono'] . "','" . 
                $_POST['fax'] . "','" . 
                $_POST['mail'] . "','" .
                sha1($_POST['pass']) . "')";
?>

Por kramahz

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ene 2009 04:09 pm
No es necesario que recojas las variables previamente, pero si es necesario que agregues una instrucción más en la que ejecutas la consulta, probablemente algo como

Código PHP :

mysql_query( $sentence );

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 29 Ene 2009 04:51 pm
Muchisimas gracias, me has ayudado mucho. Ya se que es un poco toston explicarle a peña que no se entera. Queria pedir una última cosa, si me puedes revisar el código tal como lo he dejado, aunque en principio ya funciona. Y comentarme como tengo que poner las variables de $mensaje para que aparezcan en el email.

Código :

<?php
//
// Se recojen las variables
//
$nom = $_POST['nom'];
$username = $_POST['username'];
$pass = $_POST['pass'];
$empresa = $_POST['empresa'];
$sector = $_POST['sector'];
$cargo = $_POST['cargo'];
$profesion = $_POST['profesion'];
$direccion = $_POST['direccion'];
$poblacion = $_POST['poblacion'];
$provincia = $_POST['provincia'];
$cp = $_POST['cp'];
$estado = $_POST['estado'];
$telefono = $_POST['telefono'];
$fax = $_POST['fax'];
$email = $_POST['email'];

//
// Recoge los de tabla y conexión
//
require_once("includes.php");
$table = 'usuaris';

//
// Mensaje que será enviado al email
// 
$mensaje = '
<h2>Añadido el siguiente usuario:</h2>
        nom: $nom<br/>
        username: $username<br/>
        password: $pass<br/>
        empresa: $empresa<br/>
        sector: $sector<br/>
        cargo: $cargo<br/>
        profesion: $profesion<br/>
        direccion: $direccion<br/>
        poblacion: $poblacion<br/>
        provincia: $provincia<br/>
        codigopostal: $cp<br/>
        estado: $estado<br/>
        telefono: $telefono<br/>
        fax: $fax<br/>
        mail: $email<br/>
';

$sentence = "INSERT INTO $table VALUES('" . 
        $_POST['username'] . "','" .
        $_POST['nom'] . "','" . 
        $_POST['empresa'] . "','" . 
        $_POST['sector'] . "','" .
        $_POST['cargo'] . "','" . 
        $_POST['profesion'] . "','" . 
        $_POST['direccion'] . "','" . 
        $_POST['poblacion'] . "','" . 
        $_POST['provincia'] . "','" .
        $_POST['cp'] . "','" . 
        $_POST['estado'] . "','" .
        $_POST['telefono'] . "','" . 
        $_POST['fax'] . "','" . 
        $_POST['email'] . "','" .
        sha1($_POST['pass']) . "')";
//
// Conexión y ejecución de Sentence
//

$conn = getConnection();

$resource = mysql_query($sentence, $conn)
    or die ('Can not execute query: ' . mysql_error());

mysql_close();

//
// Se usa la función mail() para mandar el correo.
//

$mail1 = mail("kram08980@gmail.com","Pujol WebSite - Petición de Registro",$mensaje,"Content-type:text/html\r\nFrom: $email");
$mail2 = mail("cramah@terra,es","Pujol WebSite - Petición de Registro",$mensaje,"Content-type:text/html\r\nFrom: $email");

if ($mail1 && $mail2) {
    echo "&comprovacio=OK&";
} else {
    echo "&comprovacio=KO&";
}

?>


Aprovecho para preguntar una curiosidad, como es que si intento registrar un usuario que ya existe en la base de datos, no ejecuta las instrucciones $mail1 y $mail2?

Por kramahz

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ene 2009 05:46 pm
Bueno gente, ya esta solucionado. Muchas gracias, asi da gusto!

Por kramahz

21 de clabLevel



 

firefox

   Página 1 de 1

 

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