Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][JavaScript]Formularz pocztowy
Forum PHP.pl > Forum > Przedszkole
obelix94
Witam!

Zrobiłem sobie taki skrypcik na podstawie ksiązki. Przerobiłem go trochę i nie wiem gdzie mam błąd. Poniżej zamieszczam skrypty. 

I jeszcze takie dwa pytanka:

- jak znaleźć w ciągu znaków (w zmiennej) jakąś literę

- jak porównać czy pola nie są puste (na liczbach wiem, a na ciągu?)

- jak zrobic w js że po wypełnieniu pól pojawia się wyślij? (przy czym zaznaczam że w js jestem zielony  wstydnis.gif )



  1. <?php
  2.   // utworzenie krótkich nazw zmiennych
  3.   $imie=$_POST['imie'];
  4.   $email=$_POST['email'];
  5.   $wiadomosc=$_POST['wiadomosc'];
  6.   $temat = 'Wiadmość ze strony mateuszkow.oz.pl'.$_POST['temat'];
  7.   $adres = 'mateuszkow@oz.pl';
  8.   $tresc = 'Imie: '.$imie.&#092;"\n\"
  9.                .'Adres pocztowy: '.$email.&#092;"\n\"
  10.                .&#092;"Wiadmość: \n\".$wiadomosc.\"\n\";
  11.   $nadawca = $email;
  12.  
  13.   mail($adres, $temat, $tresc, $nadawca);
  14. ?>



  1. <form action="specjalne/formularz.php" method="post">
  2.   <p><label for="name">Imię:</label><input type="text" id="imie" /></p>
  3.   <p><label for="email">Email:</label><input type="text" id="email" /></p>
  4.   <p><label for="temat">Temat:</label><input type="text" id="temat" /></p>
  5.   <p><label for="message">Wiadomość:</label><textarea id="wiadomosc" rows="5" cols="28"></textarea></p>
  6.   <p><input type="submit" id="submit" value="Wyślij" /></p>
  7.   </form>



Błąd:

Notice: Undefined index: imie in C:\STRONA\specjalne\formularz.php on line 3
Notice: Undefined index: email in C:\STRONA\specjalne\formularz.php on line 4
Notice: Undefined index: wiadomosc in C:\STRONA\specjalne\formularz.php on line 5
Notice: Undefined index: temat in C:\STRONA\specjalne\formularz.php on line 6
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\STRONA\specjalne\formularz.php on line 13
Mlodycompany
Nie ma zmiennych $_POST. Daj coś takiego i powinno prażyć:P

  1. <form action="specjalne/formularz.php" method="post">
  2.  
  3.  
  4.   <p><label for="name">Imię:</label><input type="text" name="imie" /></p>
  5.   <p><label for="email">Email:</label><input type="text" name="email" /></p>
  6.   <p><label for="temat">Temat:</label><input type="text" name="temat" /></p>
  7.   <p><label for="message">Wiadomość:</label><textarea name
  8. ="wiadomosc" rows="5" cols="28"></textarea></p>
  9.  
  10.  
  11.   <p><input type="submit" id="submit" value="Wyślij" /></p>
  12.   </form>

i zmienna $nadawca zmien na $nadawca = 'From:'.$email;
obelix94
nawet jak zmienie nadawce to nie działa  blinksmiley.gif
ale skoro nie ma zmiennej $_POST to jak wyciągnąć te dane z formularza do przetworzenia
Mlodycompany
przyjrzyj się dokładnie. Zauważ że zmieniłem w inputach coś, ale nie powiem co biggrin.gif
obelix94
a to dlatego mi nie działało.... wstydnis.gif

zmieniłeś id na name, ale nadal nie wiem o co tobie chodzi z $_POST



teraz wyskakuje tylko takie coś

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\STRONA\specjalne\formularz.php on line 13
Mlodycompany
a masz na kompie zainstalowany serwer pocztowy? jeśli masz to nie może się z nim polączyć, a z $_POST chodziło mi o to że one były puste. Jak chcesz sprawdzać co jest w tablicy $_POST to zrób sobie print_r($_POST);
obelix94
Dobrze. Dziękuje mlodycompany za pomoc. Na tym etapie wszystko działa.

I jeszcze takie pytanka:

- jak znaleźć w ciągu znaków (w zmiennej) jakąś literę
- jak porównać czy pola nie są puste (na liczbach wiem, a na ciągu?)
- jak zrobic w js że po wypełnieniu pól pojawia się wyślij? (przy czym zaznaczam że w js jestem trochę niedouczony(zielony) )
Mlodycompany
1. strpos

2. tak samo jak na liczbach czyli if(isSet($ciag)){ // zwraca true jeżeli nie jest pusta}

3. na js sie nie znam:p poszukaj w necie biggrin.gif
obelix94
A jak wygląda jej prototyp?

A ktoś inny się zna na JS albo zna takie efekty?
Mlodycompany
jak dla mnie to technicznie by wygladalo to tak: odbiera z inputa dane i zapisuje do zmiennej a potem sprawdza czy zmienna nie jest pusta i zwraca true i false i w zaleznosci od tego pokazuje/ukrywa button. jak to zrobic w js to nie wiem biggrin.gif:D
obelix94
A czy jest na tym forum osoba, która miałaby chęć i czas mi objaśnić ten skrypcik ponizej? Co za co odpowiada i jak to dost. do np. texterea i do większej ilosci pól?

CODE
Czy zgadzasz sie na warunki regulaminu?
<form name="aaa"><input type="radio" name="ccc" onclick="document.aaa.fff.disabled='disabled'">nie <input type="radio" name="ccc" onclick="document.aaa.fff.disabled=''" selected>tak <br>
<input type="submit" name="fff" value="OK">
</form>


Wiem jak to powinno wyglądać. Ale nie wiem jak się do tego zabrać.
Analizując kod ponizej doszedłem do wniosku iż:
- funkcja javascript powinna być w osobnym pliku
- ogólna instrukcja to if value==' ' document.aaa.fff.disabled='disabled' else document.aaa.fff.disabled='disabled'
- tak instrukcja wd. mnie jest prawidłowa tylko czy jak będzie kilka deklaracji 'disabled' a jedna '' to co wyjdzie?
- wzorujac się na powyższym powinna być jakaś funkcja sprawdzenie [ if 1 ok 2 ok 3 ok 4ok 5ok ] ... document.aaa.fff.disabled=''
- tylko w jaki sposób przeniesć do funkcji sprawdzenie wartości true czy false?

Proszę was o wskazanie mi jakiś materiałów do poczytania i pomocy w zapisie tego co powyżej.

Myślę że wpadłem na dobry pomysł. Pozdrawiam!
erix
Znowu chcesz gotowca wyżmędać? :|
Moderator już raz Ci zwrócił na to uwagę, gdzie szukać zleceń.

Cytat
Proszę was o wskazanie mi jakiś materiałów do poczytania i pomocy w zapisie tego co powyżej.

Google: kurs javascript
obelix94
Nie chcę gotowca. Chcę pomocy. Mówiąc o materiałach - miałem na myśli sprawdzone kursy. Nie chce czytać w ciemno czegoś co może być źle opisane. A mówiąc ze potrzebuje pomocy w zapisie to chyba nie jest gotowiec. Wiem jak to trzeba zrobić ale nie wiem jak się do tego zabrać i jak zapisać. Prosiłem tylko o pomoc. Ale widzę że tutaj ciężko o cokolwiek prosić.

Jak mówię "proszę" to prosze. Jak mówie "potrzebuje gotowca" to potrzebuje gotowca. W tym wypadku robię to na swoją stronę.

Ale tamto to musiałem bulić 250zł za opóźnienie!

Pozdrawiam wszystkich którzy mają chęć pomagać
erix
Cytat
Ale tamto to musiałem bulić 250zł za opóźnienie!

To jest forum PHP, a o nie dotrzymywaniu czyichś terminów.

Cytat
Wiem jak to trzeba zrobić ale nie wiem jak się do tego zabrać i jak zapisać. Prosiłem tylko o pomoc. Ale widzę że tutaj ciężko o cokolwiek prosić.

Prosiłeś o pomoc, a my Ci jej udzielamy. Gdybyśmy tego nie robili, to by nikt nie odpisywał w tym wątku.

Celowo napisałem kurs javascript, bo aspekty, o które pytasz są wyjaśnione w każdym kursie.
obelix94
Ale nadal nic nie wiem na temat mojego pomysłu 

Mam takie coś? Czy będzie działać?
  1. <?php
  2. if(imie value==' '){
  3. document.nameformularza.nameprzycisku.disabled='disabled'}
  4. else {
  5. document.nameformularza.nameprzycisku.disabled=' '}
  6. ?>


---------------------------------------

Dlaczego takie coś niedziała? Wziąłem to ze strony http://www.webtips.pl/post2173.html. Tam działa u mnie nie. Tzn. przyciks po naciśnięciu nie nadal jest aktywny.

  1. <?php
  2. <form name="aaa"><input type="radio" name="ccc" onclick="document.aaa.fff.disabled='disabled'">nie
  3. <input type="radio" name="ccc" onclick="document.aaa.fff.disabled=''" selected>tak <br>
  4. <br><br>
  5. <input type="submit" name="fff" value="OK">
  6. </form>
  7. ?>
RLLAMAS
  1. <form action="specjalne/formularz.php" method="post">
  2. <p><label for="name">Imię:</label><input type="text" name="imie" id="imie" onBlur="formverify();" /></p>
  3. <p><label for="email">Email:</label><input type="text" name="email" id="email" onBlur="formverify();" /></p>
  4. <p><label for="temat">Temat:</label><input type="text" name="temat" id="temat" onBlur="formverify();" /></p>
  5. <p><label for="message">Wiadomość:</label><textarea name
  6. ="wiadomosc" rows="5" cols="28" id="wiadomosc" onBlur="formverify();"></textarea></p>
  7. <p><input type="submit" id="send" value="Wyślij" style="display: none;" disable /></p>
  8. </form>


ponadto w ramach <head> </head> dodajesz:
  1. <script type="text/javascript">
  2. function formverify ()
  3. {
  4.  
  5. var im = document.getElementById('imie').value;
  6. var em = document.getElementById('email').value;
  7. var te = document.getElementById('temat').value;
  8. var wia = document.getElementById('wiadomosc').value;
  9. if ( im != "" & em != "" & te != "" & wia !="" )
  10. {
  11. document.getElementById('send').style.display = 'block';
  12. document.getElementById('send').disable = false;
  13. }else
  14. {
  15. document.getElementById('send').style.display = 'none';
  16. document.getElementById('send').disable = true;
  17. }
  18.  
  19. }
  20.  


Edit:
Dodałem ponownie id w kodzie pól formulaza.

zamiast onBlur mozesz użyć onkeypress
róznica polega na tym iż przy onBlur funkcja formverify wykonuje sie po deaktywacji pola a przy onkeypress po wcisnieciu kazdego klawisza
obelix94
co trzeba zmienić aby przycisk był widoczny ale nieaktywny?
RLLAMAS
usuń style="display: none;" z pola przycisku

i linie ze style.display w kodzie java

jesli nie zadziala to podam rozwiazanie jutro jak wruce z nocki w pracy.
obelix94
  1. onblur="if(this.value=='')this.value='Wpisz swoje imię'" onfocus="if(this.value=='Wpisz swoje imię')this.value=''"


wcześniej miałem tak. czy można do tego dodać formverify();?

dzięki za ten kod. ale jak go przerobić? chodzi mi o efekt przycisku taki jak jest tu http://pulsaven.ovh.org/7.html gdy się kliknie nie. i dopiero jak się wypełni wszystkie pola przyją wygląd tak jak na początku gdy się wczyta tamtą stronę. w tym skrypcie nie ma go od początku. jak to zrobić?
tiraeth
Wiesz co? A mi się wydaje, że Ty chcesz gotowca. I tak to wygląda. Drążysz temat po kolei prosząc o kolejną i kolejną poprawkę nic nie dodając od siebie. Wymagasz, aby ktoś wszystko zrobił za Ciebie. Takich osób tutaj nie lubimy, inaczej - ja nie lubię. Dać palec, weźmie całą rękę.

Zacznij myśleć analitycznie i kombinować. Od początku nie włożyłeś nawet części swojej pracy w to, co tutaj wszyscy Ci napisali.

Temat zamykam. Jeśli chcesz mieć wszystko na tacy - pisz na Ogłoszeniach (Poszukuję).

A odnośnie Twoich pretensji, że za opóźnienie w zleceniu zapłaciłeś karę - to jest tylko i wyłącznie Twoja wina. Nikt nie jest zobligowany, by w ciągu kilku minut Ci odpisać, napisać gotowca i poprosić żebyś z niego skorzystał. Ucz się dotrzymywać terminów, które są wyznaczone dla Ciebie, a nie osób trzecich. Kiedyś możesz setki tysięcy złotych stracić. Nie mówiąc o utracie klienta.
mike
Cytat(obelix94 @ 16.11.2008, 18:50:39 ) *
Ale tamto to musiałem bulić 250zł za opóźnienie!
Hahaha i bardzo dobrze.
Jak bierzesz pieniądze za coś czego nie potrafisz to jestes zwykłym oszustem i bardzo słusznie, że zapłaciłes karę.
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.