tygryzek
19.08.2008, 11:17:59
Witam,
mam stronkę z jednym menu. Umieściłam na niej formularz kontaktowy, którego kod znalazłam gdzieś w necie.Jak to w szablonie nie ma tam uwzględnionych żadnych kolorów, stylów itp. A mi chodzi o to, że umieszczam ten formularz na stronie z jednym menu po lewej stronie i po wciśnięciu przycisku WYŚLIJ mam mieć tą samą stronę tyle że z napisem DZIĘKUJEMY. Czyli tylko jeden div ma zmienić zawartość. Jak to zrobić?? Formularz wygląda tak:
<?php
switch($_GET['mail'])
{
case 'ok';
if(isset($_POST['odkogo']) && $_POST['odkogo']=='') $blad.='- Nie podałeś od kogo jest ten e-mail!<br />';
if(isset($_POST['dokogo']) && $_POST['dokogo']=='') $blad.='- Nie podałeś do kogo jest ten e-mail!<br />';
if(isset($_POST['mail']) && $_POST['mail']=='') $blad.='- Nie podałeś swojego maila!<br />';
if(isset($_POST['mail']) && $_POST['mail']!='' && !ereg("^.+@.+\..+$", $_POST['mail'])) $blad.='- Podałeś niepoprawny adres e-mail!<br />';
if(isset($_POST['temat']) && $_POST['temat']=='') $blad.='- Nie podałeś tematu maila!<br />';
if(isset($_POST['tresc']) && $_POST['tresc']=='') $blad.='- Nie podałeś treści maila!<br />';
if(isset($_COOKIE[$_POST['dokogo']])) $blad.='- Wysłałeś już emaila do tej osoby!<br />';
if(!isset($blad))
{
setcookie($_POST['dokogo'], $_POST['dokogo'], time()+3600*3);
if(mail('dorinandjonathan@gmail.com',$_POST['temat'],$_POST['tresc'],'From: '.$_POST['odkogo'].' <'.$_POST['mail'].'>'));
?>
<h1>Dziękujemy za wysłanie!</h1>
<br/>
<h3><a href="onas.php">Strona główna</a></h3>
<br/>
<h3><a href="java script:history.go(-1)">Wstecz</a></h3>
<?
break;
}
if(isset($blad))
{
echo '<b>Napotkano następujące błędy:</b><br/>';
echo $blad.'<br/>';
}
default:
}
?>
Chodzi mi dokładnie o te dwa fragmenty, które napisałam pogrubioną czcionką. W obu z nich chodzi mi o to, że ten tekst DZIĘKUJEMY lub NAPOTKANO NASTĘPUJĄCE BŁĘDY nie ma mi się na nowej białej stronie wyświetlać, tylko ma mi się podmienić tylko środkowa część mojej stronki - ten jeden div, w którym umieszczony jest ten formularz. Jak to zrobić??
Bardzo proszę o pomoc.
ferrero2
19.08.2008, 12:37:04
Jeśli nie robisz stronę na ramkach to łopatologicznie możesz zrobić to tak :
wchodzisz sobie do swojego folderu, kopiujesz plik index.php na którym masz formularz i wklejasz jako index2.php potem w pliku index2.php kasujesz formularz i wpisujesz komunikat.
W index.php w formularzu dajesz action = index2.php. - Jest to tak jak napisałem marne rozwiązanie ale działa. Lepszym sposobem jest sprawdzenie czy formularz został wysłany i załadowanie tej samej strony jeszcze raz tyle że już z napisem dziękujemy.
tygryzek
19.08.2008, 13:33:29
Częściowo rozumiem, ale jak mam dać action na index.php, skoro mam już ustawione action
<form method="POST" action="mail.php?mail=ok">. U mnie plik mail.php to ten z kodem php dla formularza. Bo ja mam 2 pliki do tego formularza: kontakt.html - tutaj mam wyswietlany formularz i plik mail.php, w którym mam zamieszczony wcześniej kod php do formularza. A poza tym to chodzi mi jeszcze o to, że tak całkiem łopatologicznie to ja mogę sobie przekopiować cały kod mojej strony razem z całym menu do pliku mail.php w to miejsce gdzie jest komunikat DZIĘKUJEMY, ale co jeżeli były błędy?? Wtedy mam komunikat napisany w instrukcji echo i on mi sie i tak wyświetla na nowej białej stronie.
Może coś takiego wstaw tam gdzie jest formularz :
<?
if(isset($_POST['odkogo']) || isset($_POST['mail']) || isset($_POST['temat']) || isset($_POST['tresc'])) {
switch ($_GET['mail'])
{
case 'ok';
if (isset($_POST['odkogo']) && $_POST['odkogo'] == '') $blad .= '- Nie podałeś od kogo jest ten e-mail!<br />';
if (isset($_POST['dokogo']) && $_POST['dokogo'] == '') $blad .= '- Nie podałeś do kogo jest ten e-mail!<br />';
if (isset($_POST['mail']) && $_POST['mail'] == '') $blad .= '- Nie podałeś swojego maila!<br />';
if (isset($_POST['mail']) && $_POST['mail'] != '' && !ereg("^.+@.+..+$", $_POST['mail'])) $blad .= '- Podałeś niepoprawny adres e-mail!<br />';
if (isset($_POST['temat']) && $_POST['temat'] == '') $blad .= '- Nie podałeś tematu maila!<br />';
if (isset($_POST['tresc']) && $_POST['tresc'] == '') $blad .= '- Nie podałeś treści maila!<br />';
if (isset($_COOKIE[$_POST['dokogo']])) $blad .= '- Wysłałeś już emaila do tej osoby!<br />';
{
setcookie($_POST['dokogo'], $_POST['dokogo'], time() + 3600
* 3
); if (mail('dorinandjonathan@gmail.com', $_POST['temat'], $_POST['tresc'], 'From: ' . $_POST['odkogo'] . ' <' . $_POST['mail'] . '>'))
;
?>
<h1>Dziękujemy za wysłanie!</h1>
<br/>
<h3><a href="onas.php">Strona główna</a></h3>
<br/>
<h3><a href="javascript:history.go(-1)">Wstecz</a></h3>
<?
break;
}
{
echo '<b>Napotkano następujące błędy:</b><br/>'; }
default:
}
}
else
{
//tutaj formularz
}
?>
I zamiast:
<form method="POST" action="mail.php?mail=ok">
da
<form method="POST" action = "strona_na_ktorej_jest_furmularz.php?mail=ok">
Chociaż właściwie nie wiem po co jest ten switch i mail=ok (można by było się tego pozbyć) to może jednak ma jakiś ważniejszy cel
tygryzek
19.08.2008, 14:58:54
Czyli mam z dwóch plików kontakt.html i mail.php zrobić jeden, tak??
Próbowałam zrobić tak jak napisałeś. Wydaje mi się, że chodziło o scalenie tych dwóch moich plików w jeden. Niestety teraz to mi się nic nie wyświetla. Nie tylko nie wyświetla mi się formularz, ale też to co było na stronie napisane nad nim. Po prostu pustka.
Spróbuj zmienić nazwę kontakt.html na kontakt.php ale to dziwne, że nic się nie wyświetla :|
Jeżeli tak zrobiłaś to nie wiem może coś nie tak. Najlepiej gdybyś pokazała ten kontakt.html.
tygryzek
19.08.2008, 19:08:18
Oto zawartość pilku kontakt.php - ta niezmieniona wg Twoich instrukcji:
Kod
<?php
include('mail.php');
?>
<h1>Kontakt </h1>
<br/>
<div id="adres">
Wimar Lublin <br/>
ul.Rusałka 10
</div>
<br/>
<div id="skype">
<a href="skype:glusiaskype?call">
<img src="http://mystatus.skype.com/smallclassic/glusiaskype" style="border: none;" width="110" height="20" alt="Mój status" />
</a>
<br/>
</div>
<div id="gg">
<a href="gg:3279563">
<img src="http://www.gadu-gadu.pl/users/status.asp?id=3279563" style="border: none;" alt="gadu-gadu"/>gadu-gadu</a>
<br/>
</div>
<div id="mapka">
<a href="mapka.php" onclick="target='new'"><img src="mapka-mala.jpg" alt="mapka" style="border: none;" align="center"/>Gdzie jesteśmy</a>
<hr/>
</div>
<div id="formularz">
<form method="POST" action="mail.php?mail=ok">
<table border="0">
<tr>
<td width="108">Imię i nazwisko:</td>
<td><input type="text" name="odkogo" size="45" value=""/></td>
</tr>
<tr>
<td width="108">Twój mail:</td>
<td><input type="text" name="mail" size="45" value=""/></td>
</tr>
<tr>
<td width="108">Temat:</td>
<td><input type="text" name="temat" size="45" value=""/></td>
</tr>
<tr>
<td width="108" valign="top">Treść:</td>
<td><textarea rows="8" name="tresc" cols="34"></textarea></td>
</tr>
<tr>
<td width="108"> </td>
<td><input type="submit" value="Wyślij"/>
<input type="reset" value="Wyczyść"/></td>
</tr>
</table>
</div>
Chociaż powiem szczerze, że moim zdaniem to cały skrypt jest pisany trochę łopatycznie (moim zdaniem ;])
bo na przykład:
<?php
if(mail('dorinandjonathan@gmail.com',$_POST['temat'],$_POST['tresc'],'From: '.$_POST['odkogo'].' <'.$_POST['mail'].'>')); ?>
co to ma być?

To proszę:
<?php
switch ($_GET['mail'])
{
case 'ok';
if (isset($_POST['odkogo']) && $_POST['odkogo'] == '') $blad .= '- Nie podałeś od kogo jest ten e-mail!<br />';
if (isset($_POST['dokogo']) && $_POST['dokogo'] == '') $blad .= '- Nie podałeś do kogo jest ten e-mail!<br />';
if (isset($_POST['mail']) && $_POST['mail'] == '') $blad .= '- Nie podałeś swojego maila!<br />';
if (isset($_POST['mail']) && $_POST['mail'] != '' && !ereg("^.+@.+..+$", $_POST['mail'])) $blad .= '- Podałeś niepoprawny adres e-mail!<br />';
if (isset($_POST['temat']) && $_POST['temat'] == '') $blad .= '- Nie podałeś tematu maila!<br />';
if (isset($_POST['tresc']) && $_POST['tresc'] == '') $blad .= '- Nie podałeś treści maila!<br />';
if (isset($_COOKIE[$_POST['dokogo']])) $blad .= '- Wysłałeś już emaila do tej osoby!<br />';
{
setcookie($_POST['dokogo'], $_POST['dokogo'], time() + 3600
* 3
); if(mail('dorinandjonathan@gmail.com',$_POST['temat'],$_POST['tresc'],'From: '.$_POST['odkogo'].' <'.$_POST['mail'].'>')) {
?>
<h1>Dziękujemy za wysłanie!</h1>
<br/>
<h3><a href="onas.php">Strona główna</a></h3>
<br/>
<h3><a href="javascript:history.go(-1)">Wstecz</a></h3>
<?
}
else
echo 'Błąd podczas wysyłania wiadomości. Skontaktuj się za administratorem strony lub spróbuj później.'; break;
}
{
echo '<b>Napotkano następujące błędy:</b><br/>'; }
default:
?>
<h1>Kontakt </h1>
<br/>
<div id="adres">
Wimar Lublin <br/>
ul.Rusałka 10
</div>
<br/>
<div id="skype">
<a href="skype:glusiaskype?call">
<img src="http://mystatus.skype.com/smallclassic/glusiaskype" style="border: none;" width="110" height="20" alt="Mój status" />
</a>
<br/>
</div>
<div id="gg">
<a href="gg:3279563">
<img src="http://www.gadu-gadu.pl/users/status.asp?id=3279563" style="border: none;" alt="gadu-gadu"/>gadu-gadu</a>
<br/>
</div>
<div id="mapka">
<a href="mapka.php" onclick="target='new'"><img src="mapka-mala.jpg" alt="mapka" style="border: none;" align="center"/>Gdzie jesteśmy</a>
<hr/>
</div>
<div id="formularz">
<form method="POST" action="kontakt.php?mail=ok">
<table border="0">
<tr>
<td width="108">Imię i nazwisko:</td>
<td><input type="text" name="odkogo" size="45" value=""/></td>
</tr>
<tr>
<td width="108">Twój mail:</td>
<td><input type="text" name="mail" size="45" value=""/></td>
</tr>
<tr>
<td width="108">Temat:</td>
<td><input type="text" name="temat" size="45" value=""/></td>
</tr>
<tr>
<td width="108" valign="top">Treść:</td>
<td><textarea rows="8" name="tresc" cols="34"></textarea></td>
</tr>
<tr>
<td width="108"> </td>
<td><input type="submit" value="Wyślij"/>
<input type="reset" value="Wyczyść"/></td>
</tr>
</table>
</div>
<?
}
?>
tomekpl
19.08.2008, 23:37:46
Zrób tak:
skrypt mail.php
1
albo zaincluduj do index.php2 albo daj w funkcje
3 albo daj go w sam index.php
potem jak masz w form mail.php?mail=ok
to zamien na index.php?mail=ok
No i tyle

w skrócie
------------
Ważny warunek w index.phpdodaj:
Kod
if($_POST['submit'] == "wyslij meila") {
/// include meil lub cały kod tutaj daj
}
gdzie "wyslij meila" musi być w value submita
<input type="submit" value="wyslij meila"/>
tygryzek
20.08.2008, 10:27:22
Drogi bmL,
bardzo, baardzo, baaardzo, baaaardzo dziękuję.
Wszystko śmiga.
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.