Foros del Web » Programando para Internet » PHP »

Formulario PHP+Javascript no me envía información

Estas en el tema de Formulario PHP+Javascript no me envía información en el foro de PHP en Foros del Web. Hola compañeros. Tengo una página principal en PHP, se trata de un formulario dinámico que según se van introduciendo datos, van apareciendo nuevas opciones e ...
  #1 (permalink)  
Antiguo 21/04/2008, 03:34
 
Fecha de Ingreso: septiembre-2006
Ubicación: Madrid
Mensajes: 14
Antigüedad: 17 años, 6 meses
Puntos: 0
Formulario PHP+Javascript no me envía información

Hola compañeros.

Tengo una página principal en PHP, se trata de un formulario dinámico que según se van introduciendo datos, van apareciendo nuevas opciones e información.

La cosa está montada así:

La página principal tiene 5 divs, inicialmente con una información.

En el primer div, tengo una caja de selección, al elegir una opción, se autorecarga la página y en el segundo div aparecen 2 cajas de texto inactivas, al pinchar en cada una se despliega un calendario (hecho en ajax) para elegir una fecha. También tengo otras 4 cajas de texto y un botón de calcular presupuesto. Mediante una funcion de ajax, me carga en el siguiente div otro fichero php.

Al pulsar el botón anterior, en el tercer div me aparece el presupuesto calculado según lo elegido en el anterior div, se conecta a BD para coger precios y etc. Al final de este div tengo un botón de aceptar presupuesto. Mediante la misma función de ajax, me carga en el siguiente div otro fichero php y le traspasa el valor de algunas variables.

Al pulsar el botón de aceptar presupuesto, en el cuarto div me aparece un formulario para introducir datos de contacto y al final, un botón de aceptar presupuesto. Al pulsar este botón me debería mandar a otro fichero php, la información obtenida en el 3er div y la información de este formulario de contacto.

En el último fichero php, que es mostrado en el 5º div, me recibe bien la información calculada en el 3er div, pero no me recibe la información introducida en el formulario del 4º div.

Todo está realizado con solo una recarga de la página. ¿Se os ocurre porque no me manda el contenido del formulario?

Como es mucho código, solo os pego unos trozos:

pagina principal.php (5º div)

echo "<div id=\"bungalow_fin\"style=\"text-align: center; padding: 6px; background-color: #fffff0; border-style: dashed; border-width:thin;\" >";
echo "Finalización de Reserva";
echo "</div>";
*******************************************
formulario mostrado en el 4º div:
$bungalow_type=$_GET[bungalow_type];
$begin_date=$_GET[begin_date];
$end_date=$_GET[end_date];
$num_dias=$_GET[num_dias];
$nom_extras=$_GET[nom_extras];
$subtotal=$_GET[subtotal];
$total=$_GET[total];
$anticipo=$_GET[anticipo];

echo "<script language=\"JavaScript\" src=\"funciones/ajax.js\"></script>";

echo "<form action=\"javascript:get(document.getElementById('m yform'));\" name=\"myform\" id=\"myform\">";
//echo "<form name=\"datos\" action=\"post\">";
echo "<p>Datos Personales: </p>";
echo "<p>Nombre: <input type=\"text\" name=\"nombre\" size=\"20\"></p>";
echo "<p>Apellidos: <input type=\"text\" name=\"apellidos\" size=\"30\"></p>";
echo "<p>Dirección: <input type=\"text\" name=\"direccion\" size=\"40\"></p>";
echo "<p>Localidad: <input type=\"text\" name=\"localidad\" size=\"20\"></p>";
echo "<p>Código Postal: <input type=\"text\" name=\"codpostal\" size=\"7\"></p>";
echo "<p>Ciudad: <input type=\"text\" name=\"ciudad\" size=\"20\">";
echo "<p>País: <input type=\"text\" name=\"pais\" size=\"20\"></p>";
echo "<p>Teléfono: <input type=\"text\" name=\"tlf\" size=\"15\"></p>";
echo "<p>Correo Electrónico: <input type=\"text\" name=\"mail\" size=\"30\"></p>";
echo "<p>Confirme su Correo Electrónico: <input type=\"text\" name=\"mailr\" size=\"30\"></p>";

echo "<p>Mantenemos la confidencialidad de sus datos personales de acuerdo a la <a href=\"privacidad.php\"Ley de Protección de Datos</a>.</p>";

echo "<p><u>He sido informado que NO se admiten animales:</u> <input name=\"animales\" type=\"checkbox\"></p>";
echo "<p>Deseo recibir una copia de este mensaje: <input name=\"copia\" type=\"checkbox\" checked></p>";
echo "<p>Deseo recibir ofertas y promociones: <input name=\"ofertas\" type=\"checkbox\" checked></p>";

echo "<p>Observaciones: <textarea name=\"message\" rows=\"8\" class=\"textarea\"></textarea></p>";

$param="bungalow_type=".$bungalow_type."&begin_dat e=".$begin_date."&end_date=".$end_date."&num_dias= ".$num_dias."&nom_extras=".$nom_extras."&subtotal= ".$subtotal."&total=".$total."&anticipo=".$anticip o."";

echo "<p><input type=\"button\" name=\"button\" value=\"Aceptar Presupuesto\" onclick=\"javascript:get_param(this.parentNode, 'get_presupuesto.php', 'bungalow_fin', '".$param."');\"></p>";

echo "</form>";
*******************************************
pagina a mostrar en el 5º div:
$bungalow_type=$_GET[bungalow_type];
$begin_date=$_GET[begin_date];
$end_date=$_GET[end_date];
$num_dias=$_GET[num_dias];
$nom_extras=$_GET[nom_extras];
$subtotal=$_GET[subtotal];
$total=$_GET[total];
$anticipo=$_GET[anticipo];
//Las variables anteriores se reciben correctamente, pero las siguientes, que provienen del formulario, no las recibo.
$nombre=$_GET[nombre];
$apellidos=$_GET[apellidos];
$direccion=$_GET[direccion];
$localidad=$_GET[localidad];
$codpostal=$_GET[codpostal];
$ciudad=$_GET[ciudad];
$pais=$_GET[pais];
$tlf=$_GET[tlf];
$mail=$_GET[mail];
$mailr=$_GET[mailr];
$animales=$_GET[animales];
$copia=$_GET[copia];
$ofertas=$_GET[ofertas];

echo "bungalow_type: ".$bungalow_type."<br>";
echo "begin_date: ".$begin_date."<br>";
echo "end_date: ".$end_date."<br>";
echo "num_dias: ".$num_dias."<br>";
echo "nom_extras: ".$nom_extras."<br>";
echo "subtotal: ".$subtotal."<br>";
echo "total: ".$total."<br>";
echo "anticipo: ".$anticipo."<br>";
echo "nombre: ".$nombre."<br>";
echo "apellidos: ".$apellidos."<br>";
echo "direccion: ".$direccion."<br>";
echo "localidad: ".$localidad."<br>";
echo "codpostal: ".$codpostal."<br>";
echo "ciudad: ".$ciudad."<br>";
echo "pais: ".$pais."<br>";
echo "tlf: ".$tlf."<br>";
echo "mail: ".$mail."<br>";
echo "mail r: ".$mailr."<br>";
echo "animales: ".$animales."<br>";
echo "copia: ".$copia."<br>";
echo "ofertas: ".$ofertas."<br>";

*******************************************
funcion get_param de ajax:
function get_param(obj,phpscript,div,param) {
theDIV=div;
var getstr = "?";
getstr += param;
getstr += "&";
for (i=0; i<obj.childNodes.length; i++) {
if (obj.childNodes[i].tagName == "SELECT") {
var sel = obj.childNodes[i];
getstr += sel.name + "=" + sel.options[sel.selectedIndex].value;
}
if (obj.childNodes[i].tagName == "INPUT") {
if (obj.childNodes[i].type == "text") {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
}
if (obj.childNodes[i].type == "checkbox") {
if (obj.childNodes[i].checked) {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
} else {
getstr += obj.childNodes[i].name + "=&";
}
}
if (obj.childNodes[i].type == "radio") {
if (obj.childNodes[i].checked) {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
}
}
}
}
makeRequest(phpscript, getstr);
}
*******************************************

A ver si alguien me puede ayudar. Muchas gracias.

Última edición por paquedo; 21/04/2008 a las 08:51
  #2 (permalink)  
Antiguo 21/04/2008, 08:38
 
Fecha de Ingreso: septiembre-2006
Ubicación: Madrid
Mensajes: 14
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Formulario PHP+Javascript no me envía información

Nadie puede ayudarme?
  #3 (permalink)  
Antiguo 21/04/2008, 08:55
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 8 meses
Puntos: 5
Re: Formulario PHP+Javascript no me envía información

no es eso, da flojera leer tanto codigo, deberias trabajar más ordenado y seprar tu html del php.
si quieres hacer paginas asi de dinamicas, trabaja con un depurador de javascript que te muestre los errores, yo trabajo arto javacript, ajax te recomiendo que uses firefox y le instales la extencion Firebug, te muestra lo errores de tu pagina y ves como esta tu javascript y ajax.
__________________
~~[FiDeLio]~~
  #4 (permalink)  
Antiguo 21/04/2008, 09:00
 
Fecha de Ingreso: septiembre-2006
Ubicación: Madrid
Mensajes: 14
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Formulario PHP+Javascript no me envía información

¿Dónde no está el codigo ordenado?
Tengo 4 archivos php y otro con las funciones de ajax. No entiendo porque me dices que está mezclado el código PHP y el html...
Como navegador siempre uso Firefox, instalaré la extensión que me dices a ver si veo algo claro.
Gracias.
  #5 (permalink)  
Antiguo 21/04/2008, 09:16
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 8 meses
Puntos: 5
Re: Formulario PHP+Javascript no me envía información

si quieres, trabaja con esta clase, te separa el php del html

Código PHP:
<?
define
("INCLUDE_PATH","./template/");
/* USO
<?
define("INCLUDE_PATH","c:\www\\");

include("template/class.php");

al Pasar como parametro holaMundo, asumimos que en la carpeta 
plantillas existe un archivo de nombre holaMundo.tpl


$html = new Template("ejemplo");
$html->vars(array(
        "variable" => $contenido_variable
));
$html->show(); // Muestra el contenido altiro


$var = $html->add(); // Asigna el contenido a una variable, asi podemos anidar contenidos


?>
*/
class Template{
        function 
Template($template_file){
                
$this->tpl_file INCLUDE_PATH$template_file '.tpl';
        }
        
        function 
vars($vars){
                
$this->vars= (empty($this->vars)) ? $vars $this->vars $vars;
        }
        
        function 
show(){
                if (!(
$this->fd = @fopen($this->tpl_file'r'))) {
                        echo 
'Error al abrir el Template <b>' $this->tpl_file"</b><br />";
                } else{
                        
$this->template_file fread($this->fdfilesize($this->tpl_file));
                        
fclose($this->fd);
                        
$this->mihtml $this->template_file;
                        
$this->mihtml str_replace ("'""\'"$this->mihtml);
                        
$this->mihtml preg_replace('#\{([a-z0-9\-_]*?)\}#is'"' . $\\1 . '"$this->mihtml);
                        
reset ($this->vars);
                        while (list(
$key$val) = each($this->vars)) {
                                $
$key $val;
                        }
                        eval(
"\$this->mihtml = '$this->mihtml';");
                        
reset ($this->vars);
                        while (list(
$key$val) = each($this->vars)) {
                                unset($
$key);
                        }
                        
$this->mihtml=str_replace ("\'""'"$this->mihtml);
                        echo 
$this->mihtml;
                }
        }
        function 
add(){
                if (!(
$this->fd = @fopen($this->tpl_file'r'))) {
                        return 
'Error al abrir el Template <b>' $this->tpl_file"</b><br />";
                } else{
                        
$this->template_file fread($this->fdfilesize($this->tpl_file));
                        
fclose($this->fd);
                        
$this->mihtml $this->template_file;
                        
$this->mihtml str_replace ("'""\'"$this->mihtml);
                        
$this->mihtml preg_replace('#\{([a-z0-9\-_]*?)\}#is'"' . $\\1 . '"$this->mihtml);
                        
reset ($this->vars);
                        while (list(
$key$val) = each($this->vars)) {
                                $
$key $val;
                        }
                        eval(
"\$this->mihtml = '$this->mihtml';");
                        
reset ($this->vars);
                        while (list(
$key$val) = each($this->vars)) {
                                unset($
$key);
                        }
                        
$this->mihtml str_replace("\'""'"$this->mihtml);
                        
$this->mihtml str_replace(array("\r""\n"), ""$this->mihtml);
                        return 
$this->mihtml;
                }
        }
};
copialo dentro de una carpeta llamada include y lo llamas asi:
Código PHP:
include("template/template.class.php"); 
trabajas asi desde php
Código PHP:
      ////////////////////////////////////////////////////////
     ////////////// MUESTRO LA PAGINA
    ////////////////////////////////////////////////////////
    
$html = new Template("GxR/A.G.Main");
    
$html->vars(array(
        
"jsCAB"        =>    $Cab,
        
"MENU"     =>    $Data
    
));
    
$html->show(); 
y dentro de la carpeta templates debes estan tus html ej:
GxR/A.G.Main

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Analisis de Fondos</title>
{jsCAB}
<link href="include/style.css" rel="stylesheet" type="text/css">
</head>
<body>
{MENU}
</body>
</html> 
esta es una forma existen varias maneras o framework q te ayudaran mucho,
__________________
~~[FiDeLio]~~
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:49.