две формы на одной странице

Статус
В этой теме нельзя размещать новые ответы.

webed

Постоялец
Регистрация
18 Июн 2008
Сообщения
64
Реакции
5
В общем попросили замутить такое. Я ума не приложу каким образом это сделать. Брал форму,дублировал переменные,но не получалось. Даже если получалось,то с функцией отправки на почту возникали проблемы сразу.В общем у кого есть решение данной проблемы? Сайт одностраничник. Бюджета не дают, знакомые:(
 
А в чём проблемы? Просто размещаешь 2 формы в коде страницы... Желательно дать им разные ID и всё.
В целом, будут корректно работать даже 2 совершенно одинаковые формы на 1 странице - таких ограничений нет в HTML... Даже IE6 тянет...

Покажи код, с которым проблема - помогу...
 
А в чём проблемы? Просто размещаешь 2 формы в коде страницы... Желательно дать им разные ID и всё.
В целом, будут корректно работать даже 2 совершенно одинаковые формы на 1 странице - таких ограничений нет в HTML... Даже IE6 тянет...

Покажи код, с которым проблема - помогу...
За основу взято
Для просмотра ссылки Войди или Зарегистрируйся
Исходника того,что я намудрил не имею. На работе видимо комп вырубился,попасть не могу на него из дома. Что я сделал:
Продублировал все переменные и форму. Получил огромный хрен на выходе:)
 
За основу взято
Для просмотра ссылки Войди или Зарегистрируйся
Исходника того,что я намудрил не имею. На работе видимо комп вырубился,попасть не могу на него из дома. Что я сделал:
Продублировал все переменные и форму. Получил огромный хрен на выходе:)
Так дублировать переменные не нужно...
HTML:
<input name="text">
В PHP это будет переменная в зависимости от метода post/get:
PHP:
$_POST['text'];
$_GET['text'];
Если у тебя 2 формы, то имена переменных в них должны быть разные, а в PHP надо делать конструкцию if-else на обработку одной из 2 форм, где проверяется - какая из форм заполнена...
Т.е. во второй форме уже надо использовать:
HTML:
<input name="text2">
И
PHP:
$_POST['text2'];
$_GET['text2'];
 
Так дублировать переменные не нужно...
HTML:
<input name="text">
В PHP это будет переменная в зависимости от метода post/get:
PHP:
$_POST['text'];
$_GET['text'];
Если у тебя 2 формы, то имена переменных в них должны быть разные, а в PHP надо делать конструкцию if-else на обработку одной из 2 форм, где проверяется - какая из форм заполнена...
Т.е. во второй форме уже надо использовать:
HTML:
<input name="text2">
И
PHP:
$_POST['text2'];
$_GET['text2'];

Вот мой обработчик. не совсем понял,где расставить условия конструкций иф элсэ. По методам вроде понял. Нужно продублировать их,но с другими именами.
PHP:
<!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">
 
<!--  This notice must remain in place!
_______________________________________________________________
|                                                              |
|    AUTHOR  : Jeeremie { http://web-kreation.com }            |
|DESCRIPTION  : LightForm - Ajax Contact Form                  |
|  DOWNLOAD  : http://web-kreation.com/blog/?p=71              |
|    VERSION  : 1.1                                            |
|      DATE  : 2008.02.03                                      |
|      EMAIL  : info@web-kreation.com                          |
|    CREDITS  : Credits go to Moo Floor (www.moo.floor.ch) for  |
|              their fabulous FormCheck2 and to Badboy        |
|              (www.badboy.ro) his nice looking web form      |
|_______________________________________________________________|
-->
 
<?php
 
//========
//LICENSE
//========
 
//The CSS, XHTML, PHP and design is released under Creative Commons Attribution v2.5:
//http://creativecommons.org/licenses/by/2.5/
 
//Use of this contact form is free of charge but the copyright notes in the footer must remain intact.
//I would appreciate if you send me the URI of your site if you use LightForm.
 
//FormCheck (http://moo.floor.ch/?p=18) is released under the MIT license:
//http://www.opensource.org/licenses/mit-license.php
 
//NiceForms (http://www.badboy.ro/articles/2005-07-23/niceforms_preview/) is released under no specific license. You are free to use and modify but you must provide credits.
 
//This said, let's see how to use this contact form:
 
 
//=============
//INSTALLATION
//=============
 
//Installation is straight forward:
 
//1. Download and unzip the file
//2. Copy all the files to your root directory
 
 
//==============
//CONFIGURATION
//==============
 
//IMPORTANT!!
//Put in your email address below:
$to = 'yourname@domain.com';
 
 
//User info (DO NOT EDIT!)
$name = stripslashes($_POST['name']); //sender's name
$email = stripslashes($_POST['email']); //sender's email
$website = stripslashes($_POST['website']); //sender's website
 
//The subject
$subject  = "[LightFormX Contact Form] "; //The default subject. Will appear by default in all messages. Change this if you want.
$subject .= stripslashes($_POST['subject']); // the subject
 
 
//The message you will receive in your mailbox
//Each parts are commented to help you understand what it does exaclty.
//YOU DON'T NEED TO EDIT IT BELOW BUT IF YOU DO, DO IT WITH CAUTION!
$msg  = "From : $name \r\n";  //add sender's name to the message
$msg .= "e-Mail : $email \r\n";  //add sender's email to the message
$msg .= "Website : $website \r\n"; //add sender's website to the message
$msg .= "Subject : $subject \r\n\n"; //add subject to the message (optional! It will be displayed in the header anyway)
$msg .= "---Message--- \r\n".stripslashes($_POST['message'])."\r\n\n";  //the message itself
 
//Extras: User info (Optional!)
//Delete this part if you don't need it
//Display user information such as Ip address and browsers information...
$msg .= "---User information--- \r\n"; //Title
$msg .= "User IP : ".$_SERVER["REMOTE_ADDR"]."\r\n"; //Sender's IP
$msg .= "Browser info : ".$_SERVER["HTTP_USER_AGENT"]."\r\n"; //User agent
$msg .= "User come from : ".$_SERVER["HTTP_REFERER"]; //Referrer
// END Extras
 
?>
 
<head>
<title>:::LightForm::: Ajax Contact form</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Ajax Contact form using CheckForm2 and NiceForms." />
<meta name="keywords" content="php, contact form, Ajax, mootools, checkform2, niceforms, Moo Floor, class, javascript, spamcheck, badboy.ro" />
<meta name="author" content="Jeremie Tisseau" />
 
<link rel="stylesheet" href="css/main.css" type="text/css" media="screen" />
 
<script type="text/javascript" src="js/mootools.js"></script>
 
<!-- Formcheck2 / Moo.Floor.ch -->
<!-- http://moo.floor.ch/?p=18 -->
<script type="text/javascript" src="js/formcheck.js"></script>
<script type="text/javascript">
    window.addEvent('domready', function(){check = new FormCheck('third', {
        display : {
            fadeDuration : 500,
            errorsLocation : 1,
            indicateErrors : 1,
            showErrors : 1
        }
    })});
</script>
 
<!-- NiceForms / BadBoy.ro -->
<!-- http://www.badboy.ro/articles/2005-07-23/niceforms_preview/ -->
<script type="text/javascript" src="js/niceforms.js"></script>
 
</style>
 
</head>
<body>
<!-- The contact form starts here-->
<?php
  if ($_SERVER['REQUEST_METHOD'] != 'POST'){
      $self = $_SERVER['PHP_SELF'];
?>
 
    <!-- Start HTML form -->
      <form name="form" method="post" id="third" action="<?php echo $self;?>"  class="niceform">
        <h1>:::LightForm::: Free Ajax/PHP Contact Form</h1>
        <!-- Name -->
        <label for="name"><strong><span class="blue">*</span> Name : </strong></label>
            <input id="name" name="name" type="text" class="validate['required','length[3,-1]','nodigit']" size="20" />
 
        <!-- Email -->
        <label for="email"><strong><span class="blue">*</span> Email : </strong></label>
            <input id="email" name="email" type="text" class="validate['required','length[5,-1]','email']" size="20" />
 
        <!-- Website -->
        <label for="site">Website : </label>
            <input id="website" name="website" type="text" class="validate['url']" size="20" />
 
        <!-- Subject -->
        <label for="subject"><strong><span class="blue">*</span> Subject : </strong></label>
            <input id="subject" name="subject" type="text" class="validate['required']" size="20" />
 
        <!-- Message -->
        <label for="msg"><strong><span class="blue">*</span> Your message : </strong></label><br />
            <textarea id="message" name="message" type="text" class="validate['required']" rows="10" cols="30"></textarea>
 
        <!-- Spam Check -->
        <label for="spamcheck"><span class="blue">*</span> <acronym  title="[ Spam prevention ]"><strong>Are you human?</acronym> : <span class="blue">2 + 3 = ???</span></strong></label>
            <input id="spamcheck" name="spamcheck" type="text" size="5" class="validate['required','number','spamcheck']" />
 
        <br /><br />
        <input type="submit" class="buttonSubmit" value="Send it!" />
 
        <!-- Niceforms: mouse over effect -->
        <!-- Do not remove the line below -->
        <div id="stylesheetTest"></div>
 
    </form>
 
    <!-- Download -->
    <!-- You can delete this! -->
    <div class="dwnld">
        <a href="http://web-kreation.com/?dl_id=8" title="Download!">Download LightForm! &raquo;</a>
    </div> <!-- / Download -->
 
 
    <!-- Footer -->
    <!-- If you would like to support us, keep the footer intact. Many thanks! -->
    <div class="footer">
        <p>Design by <a href="http://web-kreation.com" title="Web-Kreation Home">Web-kreation</a> - Ajax Form validation (<a href="http://moo.floor.ch/?p=18" target="_blank" title="Moo Floor">FormCheck2</a>) by <a href="http://moo.floor.ch/" target="_blank" title="Moo Floor">Moo Floor</a> - This form uses <a href="http://www.badboy.ro/articles/2005-07-23/niceforms_preview/" target="_blank" title="NiceForms">NiceForms</a> (<a href="http://www.badboy.ro/" target="_blank" title="BadBoy">BadBoy.ro</a>) to style text fields and textareas.</p>
        <p>&copy; Some Copyrights by their respective authors (if you are not sure visit authors' websites).</p>
    </div> <!-- / footer -->
 
 
<?php
    } else {
        error_reporting(0);
 
          if  (mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n"))
 
          //Message sent!
          //It the message that will be displayed when the user click the sumbit button
          //You can modify the text if you want
          echo nl2br("
          <div class=\"MsgSent\">
            <h1>Congratulations!!</h1>
            <p>Thank you <b><?=$name;?></b>, your message is sent!<br /> I will get back to you as soon as possible.</p>
        </div>
      ");
 
          else
 
        // Display error message if the message failed to send
        echo "
          <div class=\"MsgError\">
            <h1>Error!!</h1>
            <p>Sorry <b><?=$name;?></b>, your message failed to send. Try later!</p>
        </div>";
    }
?>
 
</body>
</html>
 
Да, я его видел, но там только 1 форма... Второй формы я на странице не увидел...

Вот пример файла с 2 формами на 1 странице. Конечно, всё примитивно до нельзя, но смысл поймёшь...
1 форма - спрашивает имя, вторая - возраст... Можно аналогично делать форму логина и форму регистрации. Главное - чётко дать понять скрипту что ему отправили. Для этого лучше переменные называть по разному... Ещё я перестраховался и добавил sub1 и sub2 для контроля - какую форму отправили - в этом случае имена самих полей могут быть одинаковыми, но лучше этого не делать...
PHP:
<?php

if ($_POST['sub1'] == 'sub1') {
    
    echo "Ваше имя " . $_POST['name'];
    
}
elseif ($_POST['sub2'] == 'sub2') {
    
    echo "Ваше возраст " . $_POST['age'];
    
}
else {
    
    echo <<<HTML
<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="content-type" content="text/html" />
    
	<title>ТЕСТовый файл</title>
</head>

<body>

<table>
    <tr>
        <td style="width: 50%;">
            <form action="index.php" method="post">
                Имя: <input name="name" type="text" />
                <input type="hidden" name="sub1" value="sub1" />
                <br /><input type="submit" value="Отправить 1" />
            </form>
        </td>
        <td>
            <form action="index.php" method="post">
                Возраст: <input name="age" type="text" />
                <input type="hidden" name="sub2" value="sub2" />
                <br /><input type="submit" value="Отправить 2" />
            </form>
        </td>
    </tr>
</table>

</body>
</html>
HTML;
    
}

?>
 
Да, я его видел, но там только 1 форма... Второй формы я на странице не увидел...

Вот пример файла с 2 формами на 1 странице. Конечно, всё примитивно до нельзя, но смысл поймёшь...
1 форма - спрашивает имя, вторая - возраст... Можно аналогично делать форму логина и форму регистрации. Главное - чётко дать понять скрипту что ему отправили. Для этого лучше переменные называть по разному... Ещё я перестраховался и добавил sub1 и sub2 для контроля - какую форму отправили - в этом случае имена самих полей могут быть одинаковыми, но лучше этого не делать...
PHP:
<?php
 
if ($_POST['sub1'] == 'sub1') {
   
    echo "Ваше имя " . $_POST['name'];
   
}
elseif ($_POST['sub2'] == 'sub2') {
   
    echo "Ваше возраст " . $_POST['age'];
   
}
else {
   
    echo <<<HTML
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
   
<title>ТЕСТовый файл</title>
</head>
 
<body>
 
<table>
    <tr>
        <td style="width: 50%;">
            <form action="index.php" method="post">
                Имя: <input name="name" type="text" />
                <input type="hidden" name="sub1" value="sub1" />
                <br /><input type="submit" value="Отправить 1" />
            </form>
        </td>
        <td>
            <form action="index.php" method="post">
                Возраст: <input name="age" type="text" />
                <input type="hidden" name="sub2" value="sub2" />
                <br /><input type="submit" value="Отправить 2" />
            </form>
        </td>
    </tr>
</table>
 
</body>
</html>
HTML;
   
}
 
?>
Ага,это понял. Спасибо огромное) А как быть с самим обработчиком? Я ведь там устану ифы расставлять)))
 
Ага,это понял. Спасибо огромное) А как быть с самим обработчиком? Я ведь там устану ифы расставлять)))
Я бы на твоём месте вообще отказался от использования этого обработчика...
Дело в том, что он не проверяет входящие данные толком, а лишь переводит экранирует спецсимволы. Это не есть гуд...

А вообще, делай по аналогии с моим кодом - у тебя просто полей больше и вместо echo идёт экранирование символов и отправка на E-mail... Ну и дизайна больше - больше отличий нет ;)
 
Я бы на твоём месте вообще отказался от использования этого обработчика...
Дело в том, что он не проверяет входящие данные толком, а лишь переводит экранирует спецсимволы. Это не есть гуд...

А вообще, делай по аналогии с моим кодом - у тебя просто полей больше и вместо echo идёт экранирование символов и отправка на E-mail... Ну и дизайна больше - больше отличий нет ;)
Не завлялся ли у тебя на деланных проектах код этого добра? Я на пиво подкину рублёф 200))) и спасибо скажу))))
Сейчас понимаю,что я балбес и зря прогруливал пары) Я думал всё куда проще будет)
Уже думал об извращённом плане с фреймами))))
 
Не завлялся ли у тебя на деланных проектах код этого добра? Я на пиво подкину рублёф 200))) и спасибо скажу))))
Тут дело в том, что обработчик и форма у каждого свои... Надо реализовывать разные вещи... Напиши полноценное ТЗ - что должен делать этот обработчик и что должна содержать форма...
К примеру:
1) Надо отправлять на почту форму: логин, пароль, мыло, текст заказа
2) Надо отправить на почту: мыло, имя, телефон, текст заказа, цену

Ибо я не знаю, какие тебе формы нужны и что отправлять на почту...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху