La estructura del encabezado y el pie de cada página se mantiene en cada una de las páginas del sitio, es decir, es igual. Al principio tenía una copia del código de dichas partes en cada una de las páginas, pero cada vez que deseaba cambiar algo, tenía que copiarlo en todas y cada una de las páginas y resultaba muy engorroso, por lo que "centralicé" estas partes en nuevos archivos .php y luego los llamo mediante un php include.
El problema es que algunas de estas partes incluyen formularios o mensajes mostrados mediante jquery UI dialog, y no logro hacer que funcione bien el procesamiento de los datos del formulario (tiene algo que ver con el action del form creo yo) ni que se muestren los mensajes del UI Dialog.
Por poner un ejemplo, en el footer, tengo un formulario que recibe un email y lo pone en la lista de distribución mensual de las ofertas. Como el footer esta en todas las paginas y es el mismo, cree un archivo "footer.php" y en cada página lo llamé con:
Código:
Hasta ahi todo correcto, en todas las paginas aparece sin problemas. Pero cuando quiero hacer uso del formulario que está dentro del footer, me lleva a footer.php en vez de quedarse en la pagina desde la cual se envió y desplegar los mensajes correspondientes en dicha página. El código de footer.php es el siguiente:<?php include($_SERVER['DOCUMENT_ROOT'] . "footer.php"); ?>
Código:
<h3>suscríbase a nuestras ofertas</h3> <p>Ingrese su dirección de correo debajo para suscribirse. Recibirá nuestro mailing de ofertas una vez al mes.</p> <?php if(!empty($_POST['subscribe_email'])) { $email = mysql_real_escape_string($_POST['subscribe_email']); $checkemail = mysql_query("SELECT * FROM distribution WHERE EmailAddress = '".$email."'"); if(mysql_num_rows($checkemail) == 1) { ?> <script> $(document).ready(function(){ var mensaje = $('<div title="Error"><p>La dirección de correo ingresada ya se encuentra en nuestra lista de distribución.</p></div>'); mensaje.dialog( {modal: true, beforeClose: function(event, ui) { window.location.replace(document.history.back); } } ); ; }); </script> <?php } else { $registerquery = mysql_query("INSERT INTO distribution (EmailAddress) VALUES('".$email."')"); if($registerquery) { ?> <script> $(document).ready(function(){ var mensaje = $('<div title="Hecho"><p>A partir de ahora, recibirás las ofertas a tu dirección de correo una vez al mes.</p></div>'); mensaje.dialog( {modal: true, beforeClose: function(event, ui) { window.location.replace(document.history.back); } } ); ; }); </script> <?php } else { ?> <script> $(document).ready(function(){ var mensaje = $('<div title="Error"><p>Lo sentimos, pero ha habido un problema. Inténtalo de nuevo.</p></div>'); mensaje.dialog( {modal: true, beforeClose: function(event, ui) { window.location.replace(document.history.back); } } ); ; }); </script> <?php } } } else { ?> <form action="footer.php" method="post" name="subscribeForm" id="subscribeForm" class="formulario"> <fieldset> <div> <input type="text" name="subscribe_email" id="subscribe_email" class="fl" /> <a id="newsletterSignup" class="blueButton"><img src="images/bluebutton_img.png" alt="Suscríbase" /></a> </div> </fieldset> </form> <p> <a href="#" title="Términos de uso">Términos de uso</a> | <a href="#" title="Política de privacidad">Política de privacidad</a> </p> <?php } ?>
Me han dicho que es posible hacer esto mediante AJAX, que no necesitaría por ejemplo refrescar la pagina despues de enviar el formulario.
Agradezco toda ayuda que me puedan dar, ya que no conozco nada sobre ajax.