Skocz do zawartości
Zaloguj się, aby obserwować  
Gość Najs

[PHP] Dodanie pól w formularzu.

Polecane posty

Gość Najs

Witam ponownie.

 

Tuż znów chciałbym poprosić Was o pomoc, a mianowicie:

Wgrałem formularz kontaktowy na swoją stronę, wszystko działa, wysyła, jest okej. Troszkę się z tym męczyłem i nic mi się nie udało więc piszę tutaj. Chciałbym do mojego formularza dodać kilka wolnych pól, które przychodziły by w mailu w treści wiadomości, nie idzie mi gdyż nie znam się ani trochę na php. Myślę, że nie jest to trudne i nie zajmie to dłuższej chwili dla zaawansowanych.

 

Formularz obecnie wygląda tak:

formularzz.png

 

Chciałbym dodać kilka pól identycznych jak pole pod napisem Temat:, tylko zależy mi aby wszystko co do nich zostało wpisane przychodziło w treści wiadomości. Jeszcze raz proszę o pomoc, poniżej kod całego formularza.

 

ustawienia.php

 

 

 

<?php

/* Ustawienia formularza kontaktowego */

 

$adres_odbiorcy = 'najsesl@gmail.com'; //tu wpisz adres e-mail na który mają przychodzić wiadomości

 

 

 

/* Ustawienia wymaganych pól */

/* Pamiętaj, żeby oznaczyć wymagane pola w formularzu - plik formularz.php */

 

$valid['nick'] = 2 ; // Nick: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik

$valid['mail'] = 1 ; // e-mail: 0 - oznacza pole nieobowiązkowe, 1 - pole wymagane

$valid['temat'] = 3 ; // Temat: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik

$valid['tresc'] = 5 ; // Treść: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik

 

 

 

/* Komunikaty */

 

$komunikat['sukces'] = 'Dziękujemy. Twoja wiadomość została wysłana.'; //Wiadomość po udanym wysłaniu formularza

$komunikat['blad'] = 'Wiadomość <b>NIE</b> została wysłana. Popraw poniższe błędy.'; //Wiadomość przy błędzie w sprawdzaniu danych, błędy zostaną wymienione poniżej

$komunikat['nick'] = 'Nick musi mieć min. 2 znaki.'; //Wpisz właściwą ilość znaków jeśli pole wymagane

$komunikat['mail'] = 'Podaj poprawny adres e-mail.'; //Wiadomość po błędnym wpisaniu adresu e-mail

$komunikat['temat'] = 'Temat musi mieć min. 3 znaki.'; //Wpisz właściwą ilość znaków jeśli pole wymagane

$komunikat['tresc'] = 'Treść musi mieć min. 5 znaków'; //Wpisz właściwą ilość znaków jeśli pole wymagane

$komunikat['fail'] = 'Przepraszamy wystąpił chwilowy błąd. Spróbuj ponownie później'; //W przypadku nieudanego wyslania wiadomości np. błędu serwera

 

?>

 

 

 

 

 

formularz.php

 

 

 

#komunikat#

<form action="#strona#" method="post" id="formularz">

 

<div>

<label><font color="#FFFFFF">Nick / Imię i nazwisko:</label>

<input type="text" id="nick" name="nick" value="#nick#" />

</div>

<div>

<label>Adres e-mail:</label>

<input type="text" id="mail" name="mail" value="#mail#" />

</div>

<div>

<label>Temat:</label>

<input type="text" id="temat" name="temat" value="#temat#" />

</div>

<div>

<label>Treść:</font></label>

<textarea cols="27" rows="10" id="tresc" name="tresc" >#tresc#</textarea>

</div>

<div>

<input type="submit" value="Wyślij" />

</div>

 

</form>

 

 

 

 

 

mail.php

 

 

 

<?php

/*************************************************************************************/

/* Licencja na użytek prywatny i komercyjny. */

/* Wymaga pozostawiania poniższych danych o autorze i pochodzeniu skryptu. */

/* Autor: Labsta.com Laboratorium Designu */

/* Skrypt pochodzi ze strony http://websta.pl - Blog o grafice i projektowaniu stron */

/* 03/02/2010 */

/*************************************************************************************/

 

include ('ustawienia.php');

 

ob_start();

include('formularz.php');

$formularz = ob_get_contents();

ob_end_clean();

 

 

function wyswietl_forme($komunikat='') {

global $formularz;

 

$do_zmiany = array(

'#komunikat#',

'#strona#',

'#nick#',

'#mail#',

'#temat#',

'#tresc#'

);

$zmien_na = array(

$komunikat,

$_SERVER['REQUEST_URI'],

$_POST['nick'],

$_POST['mail'],

$_POST['temat'],

$_POST['tresc']

);

 

$formularz = str_replace ( $do_zmiany, $zmien_na, $formularz);

 

return $formularz;

}

 

 

function waliduj() {

global $komunikat;

global $valid;

 

if( $valid['nick'] > 0 ) {

if(strlen($_POST['nick']) < $valid['nick'] ){

$walidacja['nick'] = $komunikat['nick'];

}

}

 

if( $valid['mail'] == 1 ) {

if(!filter_var($_POST['mail'],FILTER_VALIDATE_EMAIL)) {

$walidacja['mail'] = $komunikat['mail'];

}

}

 

if( $valid['temat'] > 0 ) {

if(strlen($_POST['temat']) < $valid['temat'] ){

$walidacja['temat'] = $komunikat['temat'];

}

}

 

if( $valid['tresc'] > 0 ) {

if(strlen($_POST['tresc']) < $valid['tresc'] ){

$walidacja['tresc'] = $komunikat['tresc'];

}

}

 

if(empty($walidacja)) {

return 'true';

}else{

return $walidacja;

}

 

}

 

// Działanie

if (($_SERVER['REQUEST_METHOD'] == 'POST')) {// wejście postem

$walidacja = waliduj();

 

if ($walidacja == 'true'){ //poprawnie wypełniony formularz

 

if(mail($adres_odbiorcy,"=?UTF-8?B?".base64_encode($_POST['temat'])."?=",'<p>Od: <b>'.$_POST['nick'].'</b></p><pre>'.$_POST['tresc'].'</pre>','From:'.$_POST['mail']."\r\nContent-Type: text/html; charset=utf-8")){ //sukces

print '

<div id="sukces">

<p>'.$komunikat['sukces'].'</p>

</div>

';

}else{ //bląd serwera

print '

<div id="blad">

<p>'.$komunikat['fail'].'</p>

</div>

';

print wyswietl_forme();

}

 

}else{

//błędna walidacja

$blad_walidacji = $walidacja;

 

$blad_walidacji = '

<div id="blad">

<p>'.$komunikat['blad'].'</p>

<ul>

';

foreach ($walidacja as $wpis) {

$blad_walidacji .= '<li>'.$wpis.'</li>';

}

$blad_walidacji .= '

</ul>

</div>

';

 

print wyswietl_forme($blad_walidacji);

}

 

}else{

// nowe wejście

print wyswietl_forme();

}

 

 

 

 

 

 

?>

 

 

 

 

 

formularz.css

 

 

 

body {

 

}

 

a:focus {

outline:none; /*usuwanie niebieskiej obwódki w FF*/

}

 

#kontener {

 

}

 

 

#formularz {

 

}

 

#formularz div {

 

}

 

#formularz label {

font-family:Tahoma, Geneva, sans-serif;

font-size: 11px;

display: block;

font-weight: bold;

 

}

 

#formularz textarea {

border-radius: 4px;

border-style: solid;

border-color: #ABABAB;

border-width: 1px;

}

 

#formularz input[type=text] {

border-radius: 4px;

border-style: solid;

border-color: #ABABAB;

border-width: 1px;

}

 

#blad {

background: #ff0000;

padding: 10px;

}

 

#blad p{

 

}

 

#sukces {

 

}

 

#sukces p{

 

}

 

.red {

color: #ff0000;

}

 

.forma {

background-color: #131313;

margin: 0 auto;

width: 680px;

height: 500px;

border-radius: 10px;

display: block;

margin-top: 5px;

 

}

 

 

 

 

 

 

Pozdrawiam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

W formularzu dodajesz pola, nadajesz im nazwy a później w mail.php dodajesz $_POST i doklejasz je do pola gdzie masz treść.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Najs

Byłbym bardzo wdzięczny gdybyś mi to napisał bo samemu mi to nie wychodzi, niby dodałem to pole ale to co tam wpiszę na email mi nie chcę przyjść. Przepraszam za moją nie "kumatość" :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To pokaż co zrobiłeś to podpowiemy co jest źle.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość

Nie wiem w ogóle jak dodać to pole gdyż jestem zerem w php!

Mam coś takiego, to jest kod tego pola, które widać na screenie powyżej.

 

 

<div>

<label>Temat:</label>

<input type="text" id="temat" name="temat" value="#temat#" />

</div>

 

 

Chcę zrobić takie same pole aby przychodziło w treści, więc z racji tego że nie kumam tego ani trochę, kopiuję ten kod i zmieniam tak:

 

 

<div>

<label>blablablabla:</label>

<input type="text" id="tresc2" name="tresc2" value="#tresc2#" />

</div>

 

 

 

Następnie w mail.php zmieniam część kodu na taki:

 

 

$do_zmiany = array(

'#komunikat#',

'#strona#',

'#nick#',

'#mail#',

'#temat#',

'#tresc2#',

'#tresc#'

 

 

Po czym ładnie pole jest widoczne w formularzu, lecz gdy coś tam wpiszę i wyślę to na email to zawartość tego pola nigdzie się nie ukazuję, proszę o pomoc.

Edytowano przez Gość (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

w

$zmien_na = array(
$komunikat,
$_SERVER['REQUEST_URI'],
$_POST['nick'],
$_POST['mail'],
$_POST['temat'],
$_POST['tresc']
);

tam też musisz dodać $_POST['tresc2'] w tej samej kolejności co #tresc2# czyli przed $_POST['tresc'].

 

 

i w

if(mail($adres_odbiorcy,"=?UTF-8?B?".base64_encode($_POST['temat'])."?=",'<p>Od: <b>'.$_POST['nick'].'</b></p><pre>'.$_POST['tresc'].'</pre>','From:'.$_POST['mail']."\r\nContent-Type: text/html; charset=utf-8")){ //sukces

też musisz gdzieś dodać $_POST['tresc2'] bo to służy do wysyłki maila.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Najs

@up Już dodaję w mail.php, czy mógłbyś mnie wyręczyć i dodać mi $_POST['tresc2'] w tym drugim podanym przez Ciebie kodzie gdyż jest tam dużo znaczników i nie mogę tego ogarnąć wzrokowo, nie wiem po prostu gdzie to wcisnąć.

 

 

@edit Poradziłem sobie metodą dedukcji, dzięki za pomoc, bardzo mi pomogłeś. Pozdrawiam :)

Edytowano przez Najs (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×