WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   få formresultat på samma sida (https://www.wn.se/forum/showthread.php?t=11542)

ashur 2005-12-30 22:02

Det är så att jag har nu suttit ett tag och klurat ut detta men till ingen lycka.

Jag använder mig utav en gratis webbformulär, där resultatet som du skrev in, kommer upp efter du skickat iväg filen.
Problemet som jag har är att resultatet kommer upp på en ny sida, inte på den existerande sidan.




Undrar om någon kan hjälpa mig att få den på samma sida.

tack på förhand.


Kod:

<!-- PHP easy-form -->
<?

// * Copyright (C) 2004 CentralFloridaVA.com. All rights reserved.

// *PHPeasy-form version 1.1
// * Released 2004-10-02

// * This file is part of PHPeasy-form.

// * PHPeasy-form is free software; you can redistribute it and/or modify
// * it under the terms of the GNU General Public License as published by
// * the Free Software Foundation; either version 2 of the License, or
// * (at your option) any later version.

// * PHPeasy-form is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *See the
// * GNU General Public License for more details.

// * You should have received a copy of the GNU General Public License
// * along with PHPeasy-form; if not, write to the Free Software
// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA *02111-1307 *USA
       
// *Contact CentralFloridaVA.com at:
// *http://www.CentralFloridaVA.com
       
//        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

$name = $_POST["name"];
$address = $_POST["address"];
$city = $_POST["city"];
$state = $_POST["state"];
$zip = $_POST["zip"];
$phone = $_POST["phone"];
$email = $_POST["email"];
$comments = $_POST["comments"];


$today = date("M d, Y");
$recipient = "[email protected]";
$subject = "Formulärresultat";
$forminfo =
"Name: $name\n
Address: $address\n
City: $city\n
State: $state\n
Zip: $zip\n
Phone: $phone\n
Email: $email\n
Comments: $comments\n
Form Submitted: $today\n\n";

$formsend = mail("$recipient", "$subject", "$forminfo", "From: $email\r\nReply-to:$email");
?>
<!-- end PHP easy-form -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Kontakta oss</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
 *<tr>
 * *<td> <p align="left">Tack så mycket. Du har skickat denna information:</p>
        <p><? echo nl2br($forminfo); ?></p>
 *</tr>
</table>
</body>
</html>


Lundmark 2005-12-30 22:24

Om man ska vara kvar på samma sida så kan du göra det med en IF sats.

Kolla då om ($comments = "") i så fall visar du formuläret och om inte så visar du tacksidan.

ViktorPersson 2005-12-30 23:52

Lägg följande kod mellan <body> och </body>.

Kod:

<?php
if ($_POST) { // Om man har skickat variabler med metoden POST
 echo '<table width="100%" border="0" cellspacing="0" cellpadding="5">
 <tr>
  <td> <p align="left">Tack så mycket. Du har skickat denna information:</p>
<p>' . nl2br($forminfo) . '</p>
 </tr>
</table>';
}
else { // Annars skriva ut formuläret
 echo <koden_för_formuläret>;
}
?>

Koden för formuläret borde vara nått liknande:

Kod:

<form method="POST" action="filnamn.php">
Name: <input type="text" name="name"><br/>
Address: <input type="text" name="address"><br/>
..
..
</form>


ashur 2005-12-31 00:20

Testade med din kod, och får på nåt sätt samma resultat.

Så här ser koden ut för formuläret (heter kontakta.php):
Kod:

<h1>Kontakta oss</h1>
 
 <p id="note">Alla uppgifter som du lämnar här &auml;r konfidentiellt och överlämnas <u>inte</u> till en tredje part.</p>
 <form action="form-send.php" method="post">

 <table width="100%" border="0" cellspacing="5" cellpadding="5">
  <tr valign="top">
  <td width="15%">Namn:</td>
  <td width="85%"> <input class="kantlinje" type="text" name="name"></td>
  </tr>
  <tr valign="top">
  <td>Telefonnummer:</td>
  <td> <input class="kantlinje" type="text" name="phone"></td>
  </tr>
  <tr valign="top">
        <td>Email address:</td>
  <td><input class="kantlinje" name="email" type="text"></td>
  </tr>
  <tr valign="top">
  <td>Kommentarer:</td>
  <td> <textarea class="kantlinje" name="comments" cols="30" rows="5" id="comments"></textarea></td>
  </tr>
  <tr>
  <td width="15%" height="39"></td><td>
    <input class="kantlinje" type="submit" name="Submit" value="Skicka">
    <input class="kantlinje" name="Reset" type="reset" id="Reset" value="Återställ">
    </td>
  </tr>
 </table>
</form>

Och här kommer ändringen av koden:

Kod:

<!-- PHP easy-form -->
.............

<body>
<?php
if ($_POST) { // Om man har skickat variabler med metoden POST
echo '<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
 <td> <p align="left">Tack så mycket. Du har skickat denna information:</p></td>
<p>' . nl2br($forminfo) . '</p>
</tr>
</table>';
}
else { // Annars skriva ut formuläret
echo kontakta.php;
}
?>
</body>
</html>


ViktorPersson 2005-12-31 00:32

ok, du ändrade inte riktigt som jag tänkt mig. Jag orkar inte fixa allt här nu (sitter på en sunkig laptop), men du kan börja med att ändra:
Kod:

<form action="form-send.php" method="post">
till
Kod:

<form action="kontakta.php" method="post">
Då hamnar man på kontakta.php när man använder formuläret. Titta igenom det jag skrev en gång till ordentligt så kanske du förstår.

om man skickat med variabler
> skriv ut info
annars
> skriv ut formuläret

ashur 2005-12-31 00:57

=), läste lite snabbt. Men efter att ha studerat så tror jag vad du menade:
Du menar att jag ska klippa ut all koder som jag har på kontakta.php och klistra in det där du skrev <koden_för_formuläret>

Typ så här:

Kod:


 <h1>Kontakta oss</h1>
 
 <p id="note">Alla uppgifter som du lämnar här &auml;r konfidentiellt och överlämnas <u>inte</u> till en tredje part.</p>
 <form action="sida/kontakta.php" method="post">

<!-- PHP easy-form -->
<?
$today = date("M d, Y");
$recipient = "[email protected]";
$subject = "Web Form Results";
$forminfo =
"Name: $name\n
Address: $address\n
City: $city\n
State: $state\n
Zip: $zip\n
Phone: $phone\n
Email: $email\n
Comments: $comments\n
Form Submitted: $today\n\n";

$formsend = mail("$recipient", "$subject", "$forminfo", "From: $email\r\nReply-to:$email");
?>
<!-- end PHP easy-form -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Kontakta oss</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
if ($_POST) { // Om man har skickat variabler med metoden POST
echo '<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
 <td> <p align="left">Tack så mycket. Du har skickat denna information:</p>
<p>' . nl2br($forminfo) . '</p>
</tr>
</table>';
}
else { // Annars skriva ut formuläret
echo

 <form action="kontakta.php" method="post">

 <table width="100%" border="0" cellspacing="5" cellpadding="5">
  <tr valign="top">
  <td width="15%">Namn:</td>
  <td width="85%"> <input class="kantlinje" type="text" name="name"></td>
  </tr>
  <tr valign="top">
  <td>Telefonnummer:</td>
  <td> <input class="kantlinje" type="text" name="phone"></td>
  </tr>
  <tr valign="top">
        <td>Email address:</td>
  <td><input class="kantlinje" name="email" type="text"></td>
  </tr>
  <tr valign="top">
  <td>Kommentarer:</td>
  <td> <textarea class="kantlinje" name="comments" cols="30" rows="5" id="comments"></textarea></td>
  </tr>
  <tr>
  <td width="15%" height="39"></td><td>
    <input class="kantlinje" type="submit" name="Submit" value="Skicka">
    <input class="kantlinje" name="Reset" type="reset" id="Reset" value="Återställ">
    </td>
  </tr>
 </table>
</form>
 ;
}
?>
</body>
</html>

Men då får jag en "error" ruta: Parse error: parse error, unexpected '<', expecting ',' or ';' in on line 83[Ii]

zilda 2005-12-31 10:10

Nåt sånt här borde bli bra om du döper skriptet till kontakta.php

Kod:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Kontakta oss</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
if ($_POST) { // Om man har skickat variabler med metoden POST
$today = date("M d, Y");
$recipient = "[email protected]";
$subject = "Web Form Results";
$forminfo =
"Name: $name\n
Address: $address\n
City: $city\n
State: $state\n
Zip: $zip\n
Phone: $phone\n
Email: $email\n
Comments: $comments\n
Form Submitted: $today\n\n";

$formsend = mail("$recipient", "$subject", "$forminfo", "From: $email\r\nReply-to:$email");

echo '<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
 <td> <p align="left">Tack så mycket. Du har skickat denna information:</p>
<p>' . nl2br($forminfo) . '</p>
</tr>
</table>';
}
else { // Annars skriva ut formuläret
?>
 <h1>Kontakta oss</h1>
 
 <p id="note">Alla uppgifter som du lämnar här &auml;r konfidentiellt och överlämnas <u>inte</u> till en tredje part.</p>

 <form action="kontakta.php" method="post">

 <table width="100%" border="0" cellspacing="5" cellpadding="5">
  <tr valign="top">
  <td width="15%">Namn:</td>
  <td width="85%"> <input class="kantlinje" type="text" name="name"></td>
  </tr>
  <tr valign="top">
  <td>Telefonnummer:</td>
  <td> <input class="kantlinje" type="text" name="phone"></td>
  </tr>
  <tr valign="top">
<td>Email address:</td>
  <td><input class="kantlinje" name="email" type="text"></td>
  </tr>
  <tr valign="top">
  <td>Kommentarer:</td>
  <td> <textarea class="kantlinje" name="comments" cols="30" rows="5" id="comments"></textarea></td>
  </tr>
  <tr>
  <td width="15%" height="39"></td><td>
    <input class="kantlinje" type="submit" name="Submit" value="Skicka">
    <input class="kantlinje" name="Reset" type="reset" id="Reset" value="Återställ">
    </td>
  </tr>
 </table>
</form>
<?php
}
?>
</body>
</html>


ashur 2005-12-31 13:53

Tack så mycket för hjälpen. Nu fungerar den. ;)

En snabb sak till då jag testade scriptet, jag märkte att en person kan skicka "tomma fält" genom mailet. Nu undrar jag vilket som är bäst, använda javascript till att validera eller lägga till något färdig php-kod?

Netikett 2005-12-31 14:03

Kombinera det. Först en kontroll med javascript och sen en kontroll på servern.

ashur 2006-01-01 14:24

Nu har jag lekt lite med olika scripts, och varje gång jag testar de för sig själv så fungerar dessa. Men när jag ska infoga det i koden som jag har så fungerar det inte. :( Nånting gör jag fel, men jag har läst vad man ska göra men fortfarande blir det fel.
Jag skickas vidare till resultatsidan på vad jag skrivit.

Kod:

<?
  $message  = "";
  $emailclass = "basictext";
  $username  = "";

  if ($_POST['process'] == 1) {

    $pattern = '/.*@.*\..*/';
    $email  = $_POST['email'];
    $urlname = urlencode($$_POST['username']);

    if (preg_match($pattern, $_POST['email']) > 0) {
      // Here's where you would store
      // the data in a database...
      header(
      "location: thankyou.php?&username=$urlname");
    }
    $message  = "Please enter a valid email address.";
    $username  = $_POST['name'];
    $emailclass = "errortext";
  }
?>

<html><title></title><head></head>
<style>
  .basictext {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px; color:#000066;
  }
  .errortext {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px; color:#C00000; font-weight: bold;
        }
        .errortext.input {background-color:#009933}
</style>
<body>
<form action="email.php" method="post">
  <? if ($message != "") {
    print '<span class="errortext">'.
      $message."<span><br>\n";
  }
  ?>
  <span class="<?print $emailclass; ?>">
    Email address:</span>
  <span class="<?print $emailclass; ?>"> <input name="email" type="text"
    class="<? print $emailclass; ?>"></span><br>
 
       
       
  <? if ($message != "") {
    print '<span class="errortext">'.
      $message."<span><br>\n";
  }
  ?>
  <span class="<?print $username; ?>">
    Namn:</span>
  <span class="<?print $username; ?>"> <input name="name" type="text"
    class="<? print $username; ?>"></span><br>
    <input type="hidden" name="process" value="1">
  <input type="submit" name="Button1" value="Sign up!">
</form>
</body></html>



Alla tider är GMT +2. Klockan är nu 08:44.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson