1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

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

Тема в разделе "Web Coding", создана пользователем webed, 29 ноя 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. webed

    webed Постоялец

    Регистр.:
    18 июн 2008
    Сообщения:
    64
    Симпатии:
    5
    В общем попросили замутить такое. Я ума не приложу каким образом это сделать. Брал форму,дублировал переменные,но не получалось. Даже если получалось,то с функцией отправки на почту возникали проблемы сразу.В общем у кого есть решение данной проблемы? Сайт одностраничник. Бюджета не дают, знакомые:(
     
  2. Горбушка

    Горбушка Ищу её...

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

    Покажи код, с которым проблема - помогу...
     
  3. webed

    webed Постоялец

    Регистр.:
    18 июн 2008
    Сообщения:
    64
    Симпатии:
    5
    За основу взято

    Исходника того,что я намудрил не имею. На работе видимо комп вырубился,попасть не могу на него из дома. Что я сделал:
    Продублировал все переменные и форму. Получил огромный хрен на выходе:)
     
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.111
    Симпатии:
    2.130
    Так дублировать переменные не нужно...
    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'];
     
  5. webed

    webed Постоялец

    Регистр.:
    18 июн 2008
    Сообщения:
    64
    Симпатии:
    5
    Вот мой обработчик. не совсем понял,где расставить условия конструкций иф элсэ. По методам вроде понял. Нужно продублировать их,но с другими именами.
    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>
     
     
     
     
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.111
    Симпатии:
    2.130
    Да, я его видел, но там только 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;
        
    }

    ?>
     
    webed нравится это.
  7. webed

    webed Постоялец

    Регистр.:
    18 июн 2008
    Сообщения:
    64
    Симпатии:
    5
    Ага,это понял. Спасибо огромное) А как быть с самим обработчиком? Я ведь там устану ифы расставлять)))
     
  8. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.111
    Симпатии:
    2.130
    Я бы на твоём месте вообще отказался от использования этого обработчика...
    Дело в том, что он не проверяет входящие данные толком, а лишь переводит экранирует спецсимволы. Это не есть гуд...

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

    webed Постоялец

    Регистр.:
    18 июн 2008
    Сообщения:
    64
    Симпатии:
    5
    Не завлялся ли у тебя на деланных проектах код этого добра? Я на пиво подкину рублёф 200))) и спасибо скажу))))
    Сейчас понимаю,что я балбес и зря прогруливал пары) Я думал всё куда проще будет)
    Уже думал об извращённом плане с фреймами))))
     
  10. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.111
    Симпатии:
    2.130
    Тут дело в том, что обработчик и форма у каждого свои... Надо реализовывать разные вещи... Напиши полноценное ТЗ - что должен делать этот обработчик и что должна содержать форма...
    К примеру:
    1) Надо отправлять на почту форму: логин, пароль, мыло, текст заказа
    2) Надо отправить на почту: мыло, имя, телефон, текст заказа, цену

    Ибо я не знаю, какие тебе формы нужны и что отправлять на почту...
     
Статус темы:
Закрыта.