Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Formularz pocztowy, wynik "błąd" na tej samej stronie
Forum PHP.pl > Forum > Przedszkole
runner
Mam taki kod, który odpowiedzialny jest za wysyłanie emaili ze strony www.

  1. [php]
  2.  
  3. <form action="kontakt?mail=ok" method="POST" >
  4.    <table border="0">
  5.  
  6.      <tr>
  7.            <td >Imię:</td>
  8.            <td colspan="3"><input type="text" name="odkogo" value="<? echo $_POST['odkogo']; ?>"></td>
  9.      </tr>
  10.        <tr>
  11.            <td>Twój e-mail:</td>
  12.  
  13.            <td colspan="3"><input type="text" name="mail" value="<? echo $_POST['mail']; ?>"></td>
  14.        </tr>
  15.        <tr>
  16.            <td>Adresat:</td>
  17.            <td colspan="3"><SELECT input type="text" name="mailtoperson" onChange="<? echo $_POST['mailtoperson']; ?>">
  18.                            <OPTION VALUE="">Wybierz adresata listu
  19.                            <OPTION VALUE="email1@poczta.pl">email1
  20.                            <OPTION VALUE="email2@poczta.pl">email2
  21.                            <OPTION VALUE="email1@poczta.pl,email2@poczta.pl">Wyślij do wszystkich
  22.                            </SELECT></td>
  23.        <tr>
  24.            <td>Temat:</td>
  25.            <td colspan="3"><input type="text" name="temat" value="<? echo $_POST['temat']; ?>"></td>
  26.        </tr>
  27.        <tr>
  28.            <td valign="top">Treść:</td>
  29.          <td colspan="3"><textarea name="tresc" rows="8" input type="text" textarea="textarea"><? echo $_POST['tresc']; ?></textarea>
  30.          </td>
  31.        </tr>          
  32.         <tr>
  33.              <td valign="top" rowspan="3">Przepisz kod z obrazka:</td>          
  34.         <tr>
  35.              <td> <?
  36.                            $slowa=file('hasla.txt');
  37.                            $id=rand(0,count($slowa)-1);
  38.                            echo '<img src="pic.php?id='.$id.'"><td><input type="text" name="token"></td>';?></td>
  39.            <td>
  40.              <input type="hidden" name="los" value="<? echo $id; ?>"/>
  41.            </td>
  42.         </tr>
  43.            <tr><td colspan="2"><input type="submit" value="Wyślij"></td>
  44.    </table>    
  45.  
  46. </form>
  47.  
  48. <div class="blad">
  49. <? switch($_GET['mail'])
  50. {
  51. case 'ok';
  52.  
  53. $id=$_POST['los'];
  54. $odp=$_POST['token'];
  55. $slowa=file('hasla.txt');
  56.  
  57.  
  58. if(isset($_POST['odkogo']) && $_POST['odkogo']=='') $blad.='- Nie podałeś imienia!<br />';
  59. if(isset($_POST['mail']) && $_POST['mail']=='') $blad.='- Nie podałeś swojego e-maila!<br />';
  60. if(isset($_POST['mail']) && $_POST['mail']!='' && !ereg("^.+@.+..+$", $_POST['mail'])) $blad.='- Podałeś niepoprawny adres e-mail!<br />';
  61. if(isset($_POST['mailtoperson']) && $_POST['mailtoperson']=='') $blad.='- Nie wybrałeś adresata!<br />';
  62. if(isset($_POST['temat']) && $_POST['temat']=='') $blad.='- Nie podałeś tematu e-maila!<br />';
  63. if(isset($_POST['tresc']) && $_POST['tresc']=='') $blad.='- Nie podałeś treści e-maila!<br />';
  64. if(trim($slowa[$id])!=$odp && isset($_POST['tresc'])) $blad.='- Źle przepisany kod!<br />';
  65.  
  66.  if(!isset($blad))
  67.    {
  68.    if(mail($_POST['mailtoperson'],$_POST['temat'],$_POST['tresc'],'From: '.$_POST['odkogo'].' <'.$_POST['mail'].'>'));
  69.  
  70.  
  71.  
  72.    ?>
  73. </div>
  74. <div>
  75. E-mail został wysłany! Dziękujemy
  76. </div>
  77. <div>
  78. <?
  79.    break;
  80.    }
  81.    if(isset($blad))
  82.        {
  83.        echo '<b>Napotkano następujące błędy:</b><br /><br />';
  84.        echo $blad.'<br />';
  85.        }
  86. default:    
  87. }
  88.  
  89. ?>
  90. </div>
  91. </div>
  92.  
  93. </body>[/php]




Taraz mam pytania dotyczące tego kodu. Co powinienem wpisać aby wynik z błędami (jak widać w kodzie) wyświetlał się poniżej tego formularza na tej samej stronie co formularz. Niby to teraz działa bo plik z tym formularzem kontakt.php jest wywoływany w linii <form action="kontakt?mail=ok" method="POST" > ale jeżeli stronę z tym formularzem wykorzystuję w serwisie gdzie strona index.php zawiera kod:

  1. <?php
  2. $add_site = true;
  3. ?>
  4.  
  5. <body>
  6.  
  7. <div id="wrapper">
  8.  
  9. <div class="top"><?php include "naglowek.php"; ?></div>
  10. <div class="left"><?php include "menu_lewe.php"; ?></div>
  11. <div class="main"><?php
  12.        
  13.          $go = $_GET['go'];
  14.          if(!empty($go))
  15.            {
  16.           if(is_file("$go.php")) include "$go.php";
  17.           else echo "<br />Nie ma takiej strony";
  18.              }
  19.           else include "kontakt.php";?></div>
  20. <div class="bottom"><?php include "stopka.php"; ?></div>
  21. </div>
  22. </body>




to wynik z błędami że coś tam źle zostało wpisane w formularzu albo że email został wysłany wyświetlany jest na nowej stronie i nie wygląda to dobrze.

Czy ktoś mi pomoże?
Pilsener
To po co dajesz action = inna strona? Wszystko robi się na tej samej stronie:

1. Sprawdzasz, czy formularz był wysyłany:
  1. <?php
  2. if(!empty($_POST['formularz'])){
  3. //odbierasz i walidujesz dane, jeśli są błędne, ustawiasz np. zmienną $error = 'błąd'
  4. }
  5. ?>

2. Sprawdzasz, czy formularz się wysłał (czy co to ma tam robić), jeśli tak, to ustawiasz kolejną zmienną:
  1. <?php
  2. if(empty($error)){
  3.   if($czy_mail_wyslano){$komunikat = 'wyslano i siemasz';}else{//lub error coś tam;}
  4. }
  5. ?>

3. Ggdy nie wysłano formularza lub są błędy, to ustawiasz kolejną zmienną, która zawiera formularz:
  1. <?php
  2. if(empty($_POST['formularz']) || !empty($error)){
  3.   $formularz = '<form></form>';
  4. }
  5. ?>

4. Zlepiasz wszystko do kupy:
  1. <?php
  2. $tresc = $error.$komunikat.$formularz;
  3. echo $tresc;
  4. ?>
- i zmień podejście do pisania skryptów, masz operować na zmiennych, a nie echować wszystko na ekranie, wtedy zawsze za zmienną error czy komunikat możesz podstawić inny tekst. Używaj zmiennych, po to one są.
runner
Super Pilsener (piwo Ci jestem winny) lecz zapomniałem dodać w swoim e-mailu, że jeśli chodzi o php to jestem ciemniak albo przedszkolak więc to co mi napisałeś nie za bardzo wiem jak wykorzystać lub podmienić w swoim formularzu.
Nie wiem spróbuję...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.