Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz...
Forum PHP.pl > Forum > Przedszkole
k0b3
Witam!

Jestem nowy na forum i dopiero zaczynam uczyć sie php...

Robie stronkę i mam problem z formularzem. Czytałem dużo postów na ten temat, były zbliżone odpowiedzi, ale skrypty caly czas nie działały, albo ja je zle zamieszczałem w kodzie.

Stworzyłem dwa pliczki

form.php
  1. <form action="post.php" method="post">
  2.  
  3.  
  4. <table border="0" cellpadding="3" cellspacing="1" width="700">
  5. <tr>
  6. <th colspan="2">Formularz ustanowienia meczu </th>
  7. </tr>
  8. <tr>
  9. <td height="22" colspan="2" class="nav2" align="center"><i> Chcesz zagrac z nami spara? Napisz do nas!</i></td>
  10. </tr>
  11.  
  12. <tr>
  13. <td class="row1" width="23%"><span class="explaintitle">Nazwa Klanu: </span>*</td>
  14. <td class="row2" width="77%">
  15. <input type="text" class="post" style="width:530px" name="clanname" size="50" maxlength="50" /></td>
  16. </tr>
  17.  
  18. <tr>
  19. <td height="32" class="row1"><span class="explaintitle">Ades e-mail:</span></td>
  20. <td class="row2"><input type="text" class="post" style="width:530px" name="email" size="25" maxlength="255" value="{EMAIL}" /></td>
  21. </tr>
  22. <tr>
  23. <td height="32" class="row1"><span class="explaintitle">Numer Gadu-Gadu: </span>*</td>
  24. <td class="row2"><input type="text" class="post" style="width:530px" name="gg" size="25" maxlength="255" /></td>
  25. </tr>
  26. <tr>
  27. <td height="32" class="row1"><span class="explaintitle">IP serwera</span></td>
  28. <td class="row2"><input type="text" class="post" style="width:530px" name="ip_serwera" size="25" maxlength="255" /></td>
  29. </tr>
  30. <tr>
  31. <td height="32" class="row1"><span class="explaintitle">Uwagi:</span></td>
  32. <td class="row2"><textarea name="uwagi" style="width: 530px" rows="5" cols="30" class="post"></textarea></td>
  33. </tr>
  34.  
  35. <tr>
  36. <td class="cat" colspan="2" align="center">
  37. <input type="submit" name="submit" value="Wyslij" class="mainoption" />
  38.  
  39. <input type="reset" value="Wyczysc" name="reset" class="button" />
  40. </td>
  41. </tr>
  42. </form>


oraz skrypt odpowiedzialny za wysłanie wiadomości

post.php
  1. <?php
  2. $clanname=$_POST["clanname"];
  3. $mail=$_POST["email"];
  4. $gg=$_POST["gg"];
  5. $ip_serwera=$_POST["ip_serwera"];
  6. $uwagi=$_POST["uwagi"];
  7. $tekst="<b>-=FORMULARZ USTANOWIENIA MECZU=-</b>
  8. <br /><br />
  9. <b>Nazwa Klanu:</b> <i>$clanname</i> 
  10. <br />
  11. <b>Adres e-mail:</b>  <i>$mail</i>
  12. <br />
  13. <b>Numer Gadu-Gadu:</b>  <i>$gg</i>
  14. <br />
  15. <b>IP Serwera:</b>  <i>$ip_serwera</i>
  16. <br />
  17. <b>Uwagi:</b>
  18. <br /><i>$uwagi</i>";
  19. $subject = "$clanname -> chce sie umowic na spara! :rn";
  20. $headers = "MIME-Version: 1.0rn".
  21.  "Content-type: text/html; charset=iso-8859-2rn".
  22.  "From: <".$from.">rn".
  23.  "Date: ".date("r")."rn";
  24. $result=mail("kobemat@o2.pl", $subject, $tekst, $headers);
  25. IF ($result) {
  26.  
  27. include "wyslano.html";
  28.  
  29. }
  30.  
  31. else {
  32.  
  33. include "error.html";
  34.  
  35. }
  36.  
  37.  
  38. ?>


Wszystko działa. Po wypełnieniu formularza dostaje maila na pocztę.. jest oK! snitch.gif
Chciałbym by pola oznaczone * czyli clanname oraz email nie byly puste. Jak ktos ich nie wypełni pojawi sie strona z tym samym formularzem i a nad nią mala tabelka z informacja: Nie wypełniłeś wymaganych pol...


Z góry dzięki za pomoc...

Pozdrawiam!
kamikaze_
Sprawdzaj przy pomocy funkcji empty() czy zmienne przesłane formularzem są ustawione. Jeśli nie będziesz wyświetlał informacje o tym i formularz jeszcze raz.

np.

  1. <?php
  2. if( empty( $_POST['gg']) )
  3. {
  4.  $errors[] = 'gg';
  5. }
  6.  
  7. [...]
  8.  
  9. if( count( $errors ) )
  10. {
  11. // kod wyswietlajacy bledy z tabeli $errors (czyli ktore pola trzeba uzupelnic) oraz formularz
  12. }
  13. ?>
dawhol
Na poczatku dajesz takie cos:
  1. <? if (isset($_POST["clanname"]) && isset($_POST['email'])) 
  2. {
  3. $clanname = $_POST["clanname"];
  4. $email = $_POST["email"];
  5. } else 
  6. { echo ('Nie wypelniles wszystkich pol');
  7. include ('formularz.php');
  8.  exit();}; ?>


i wstaw to zamiast:
  1. <?php
  2. $clanname=$_POST["clanname"];
  3. $mail=$_POST["email"];
  4. ?>


To jest najszybszy sposób mozna zrobic wyszczególnienie dla kazdego pola smile.gif z tym ze wtedy bedzie wiecej kodu ale zaleta bedzie to ze jezeli nie wypelnisz pola to poprosi cie tylko o wypelnienie jednego pola a nie od nowa calego formularza smile.gif
k0b3
i nic... nie działa... proboje tak jak mowicie i nic...

Sa jeszcze jakies mozliwości..?
MagnuM
Nie nie działa tylko próbuj aż zadziała. A jak nie potrafisz tego zrobić to zadaj kolejne pytanie. Najlepiej jak wstawisz kod który niby 'nie działa'.
Crozin
zamiast
  1. <?php
  2. $clanname=$_POST["clanname"];
  3. $mail=$_POST["email"];
  4. ?>

wstaw
  1. <?php
  2. if(!empty($_POST['clanname']) && !empty($_POST['email']))
  3. {
  4. $clanname=$_POST["clanname"];
  5. $mail=$_POST["email"];
  6. //i reszta formularza
  7. }
  8. else
  9. {
  10. $error='Nie wypelniles wszystkich pol';
  11. header("Location: formularz.php");
  12. }
  13. ?>


a w formularzu wstaw sobie jeszcze gdzies (gdzie chcesz miec pokazane ze jest blad):
  1. <?php
  2. echo $error;
  3. ?>
k0b3
Dobra.. zwracam honor... biggrin.gif

Probowalem i probowalem i nic... ale szukalem dalej na forum i znalazlem ten watek:
http://forum.php.pl/index.php?showtopic=27658

po lekkiej zmnianie uzyskałem taki skrypt:

post.php
  1. <?php
  2. if (($_POST['clanname'] == "") ||($_POST['gg'] == ""))
  3. {
  4. echo "zleeeeeeeee";
  5. include ('form.php');
  6.  exit();
  7. }
  8. if (($_POST['clanname'] != "") ||($_POST['gg'] != ""))
  9. {
  10.  
  11. $header = "From: kobemat@o2.pl <kobemat@o2.pl>";
  12.  
  13. $wiadomosc = "-=FORMULARZ USTANOWIENIA MECZU=- nnnNazwa Klanu: ".$_POST['clanname']."
  14. nE-MAIL : ".$_POST['email']."
  15. nNumer Gadu-Gadu : ".$_POST['gg']."
  16. nIP_serwera : ".$_POST['ip_serwera']."
  17. nUwagi: ".$_POST['uwagi']."n";
  18.  
  19. mail("kobemat@o2.pl", "to jest temat biggrin.gif", $wiadomosc, $header);
  20. echo "Dziękujemy za wypełnienie formularza, ".$_POST['clanname'];
  21. <script language="JavaScript">
  22. function przenies(){
  23. window.location.href='form.php';
  24. }
  25. var szybkosc = 10000;
  26. setTimeout("przenies()",szybkosc);
  27. </script>
  28. ";
  29. }
  30. ?>


Teraz jest wszystko ok, ale...:

1) Czy da sie zrobić tak, by dane ktore juz wpisalem i oczywiscie pominąłem jedno z wymaganych pol, pojawil sie napis- tak jak mialo byc... Wszystkie okienka sie wyczyscily i trzeba wpisywac tekst od nowa. Jak mozna zachowac te dane?

2)W tej części skrytpu...
  1. <?php
  2. ....
  3. $wiadomosc = "-=FORMULARZ USTANOWIENIA MECZU=- nnnNazwa Klanu: ".$_POST['clanname']."
  4. nE-MAIL : ".$_POST['email']."
  5. nNumer Gadu-Gadu : ".$_POST['gg']."
  6. nIP_serwera : ".$_POST['ip_serwera']."
  7. nUwagi: ".$_POST['uwagi']."n";
  8.  
  9. ....
  10. ?>


Czy da się sformatować wygląd czcionki? Chodzi o pogrubienie, kursywe i moze tez kolor oraz nazwe czcionki...
Probuje wlepic tagi html <b> </b> ale nic to nie daje. Wiadomośc przychodzi wraz z nimi.

-------------------------
[edit]
heh... na pierwsze pytanko juz znalazlem odpowiedz...

Natomiast 2... czekam na wasze propozycje... snitch.gif
dawhol
  1. <?php
  2. $ip = $_SERVER['REMOTE_ADDR'];
  3. $data = date('Y-m-d H:i:s');
  4. $email = addslashes($_POST[email]);
  5. $nick = addslashes($_POST[nick]);
  6. $www = addslashes($_POST[www]);
  7. $wpis = addslashes($_POST[wpis]);
  8.  
  9. $sprawdz[1] = stristr($email, "@");
  10. $sprawdz[2] = stristr($email, ".");
  11.  
  12.  
  13.  
  14. if ($sprawdz[1] == FALSE || $sprawdz[2] == FALSE)
  15. {
  16.  $mail='';
  17. }
  18. else
  19.  $mail=$email; 
  20. //================================================================================
    ==========//
  21.  
  22. $zapytanie = "INSERT INTO cms_gbook (data, nick, email, www, wpis ,ip) VALUES ('$data', '$nick', '$mail', '$www', '$wpis', '$ip')";
  23.  
  24. //================================================================================
    ==========//
  25. if (empty($nick) OR empty($mail) OR empty($wpis)) 
  26. {
  27. echo ("Nie wypełniles poprawnie wszystkich pól");
  28. echo ('<form action="gbook_dodaj.php" method="post">');
  29. //================================================================================
    ==========//
  30. if (empty($nick)) 
  31. {
  32. echo ('Imie/Nick:<br />');
  33. echo ('<input type="text" size="20" name="nick" /><br />');
  34. } 
  35. else 
  36. echo ('Imie/Nick:<br /><input type="text" size="20" name="nick" value="'.$nick.'" /><br />');
  37. //================================================================================
    ==========//
  38. if (empty($mail))
  39. {
  40. echo ('Adres e-mail:<br />');
  41. echo ('<input type="text" size="20" name="email" /><br />');
  42. } 
  43. else 
  44. echo ('Adres e-mail:<br /><input type="text" size="20" name="email" value="'.$mail.'" /><br />');
  45. //================================================================================
    ==========//
  46. if (empty($wpis)) 
  47. {
  48. echo ('Twój wpis:<br /><textarea cols="40" rows="10" name="wpis" ENCTYPE="text/plain" wrap="virtual"></textarea><br>');
  49. } 
  50. else 
  51. echo ('Twój wpis:<br /><textarea cols="40" rows="10" name="wpis" ENCTYPE="text/plain" wrap="virtual">'.$wpis.'</textarea><br />');
  52. echo ('<input type="submit" name="send" value="Wyslij" /><input type="reset" value="Wyczysc" /></form>');
  53.  
  54. } 
  55. else 
  56. //================================================================================
    ==========//
  57. if (mysql_query ($zapytanie)) 
  58. {
  59. echo ("Dane zostały dodane");
  60. } 
  61. else 
  62.  
  63. ?>


Wzrouj sie na tym to moj skrypcik do ksiegi gosci jest tam dokladnie to co chesz smile.gif wglab sie i zobaczysz ze nie jest to trudne smile.gif

Tak dla zrozumienia jeszcze wysjanie ten fragment:
  1. <?php
  2. $sprawdz[1] = stristr($email, "@");
  3. $sprawdz[2] = stristr($email, ".");
  4.  
  5.  
  6.  
  7. if ($sprawdz[1] == FALSE || $sprawdz[2] == FALSE)
  8. {
  9.  $mail='';
  10. }
  11. else
  12.  $mail=$email;
  13. ?>

Sprawdza czy wpisany adres e-mail ma poprawna forme tzn czy zawiera @ i . winksmiley.jpg banalne ale jako tako broni przed wpisaniem np. slowa BRAK smile.gif
k0b3
Ok! Wielkie dzięki za pomoc! Super forum! Jeden dzień i mam to nad czym sie męczyłem caly tydzień...
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.