• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Formularz PHP nie działa

VPS Starter Arubacloud
0 głosów
735 wizyt
pytanie zadane 14 stycznia 2017 w PHP przez TwójCień Nowicjusz (160 p.)

Witam, Stworzyłem formularz w PHP z zapisem do pliku co ciekawe formularz działa ale wyrzuca bład na stronie o treśći:

Notice: Undefined index: pole1 in C:\xampp\htdocs\form\for.php on line 6

Notice: Undefined index: pole2 in C:\xampp\htdocs\form\for.php on line 7

Notice: Undefined index: pole3 in C:\xampp\htdocs\form\for.php on line 8

Notice: Undefined index: pole4 in C:\xampp\htdocs\form\for.php on line 9

KOD Formularza: 

<?php
/*********************************************
* plik formularz.php
*********************************************/

$pole1 = trim($_POST['pole1']);
$pole2 = trim($_POST['pole2']);
$pole3 = trim($_POST['pole3']);
$pole4 = trim($_POST['pole4']);

if(empty($pole1) and empty($pole2) and empty($pole3)) {
    
// prosty formularz zawierający dwa pola
echo '<form action="" method="post">
Imie: <input type="text" name="pole1" style="width: 200px;" /><br />
Nazwisko<input type="text" name="pole3" style="width: 200px;" /><br />
Numer telefonu<input type="text" name="pole4" style="width: 200px;" /><br />
Dodatkowe info:<textarea name="pole2" style="width: 200px; height: 100px;">
</textarea><br />
<input type="submit" value="Zapisz" />
</form>';
}
else {
    
    // dane pochodzące z formularza
    $dane = $pole1."`".$pole3."`".$pole4."`".$pole2."\n";
    // przypisanie zmniennej $file nazwy pliku
    $file = "baza.txt";
    // uchwyt pliku, otwarcie do dopisania
    $fp = fopen($file, "a");
    // blokada pliku do zapisu
    flock($fp, 2);
    // zapisanie danych do pliku
    fwrite($fp, $dane);
    // odblokowanie pliku
    flock($fp, 3);
    // zamknięcie pliku
    fclose($fp);
    
    echo "Dane zostały zapisane!<br />";
    echo "Tylko admin moze sprawdzic wszystkie wpisane pola:p Ty jedynie możesz zobaczyc liste:D<br />";
    echo "<a href=\"podglad.php\">Zobacz liste uczestnikow</a>";
}

?> 

 

Zawartość drugiego kodu w PHP wyświetlającego podglad pliku w którym zapisane są informacje:

<?php
/*********************************************
* plik podglad.php
*********************************************/

// wczytanie zawartości pliku do tablicy
$file = file("baza.txt");
// przechodzimy przez tablicę za pomocą pętli foreach
foreach($file as $value) {
// rozbijamy poszczególne linie na części
$exp = explode("`",$value);
// wyświetlamy rozbity tekst
echo $exp[0]."<br />".$exp[1]."<hr />";
}

?> 

 

 

3 odpowiedzi

0 głosów
odpowiedź 14 stycznia 2017 przez Bosswell Nałogowiec (36,470 p.)

$pole1 = trim($_POST['pole1']);

$pole2 = trim($_POST['pole2']);

$pole3 = trim($_POST['pole3']);

$pole4 = trim($_POST['pole4']);

Zmienne POST nie istnieją. Formularz daj bez "if", a zmienne POST i reszte kodu daj w warunku

if((!empty($_POST['pole1'])) && (!empty($_POST['pole2'])) && (!empty($_POST['pole3'])) && (!empty($_POST['pole4'])))

 

komentarz 14 stycznia 2017 przez TwójCień Nowicjusz (160 p.)

OK zrobiłem tak jak pisałeś i teraz mam bład:Parse error: syntax error, unexpected 'echo' (T_ECHO) in C:\xampp\htdocs\form\for.php on line 12

KOD po modyfikacjach:

<?php
/*********************************************
* plik formularz.php
*********************************************/

if((!empty($_POST['pole1'])) && (!empty($_POST['pole2'])) && (!empty($_POST['pole3'])) && (!empty($_POST['pole4']))



    
// prosty formularz zawierający dwa pola
echo '<form action="" method="post">
Imie: <input type="text" name="pole1" style="width: 200px;" /><br />
Nazwisko<input type="text" name="pole3" style="width: 200px;" /><br />
Numer telefonu<input type="text" name="pole4" style="width: 200px;" /><br />
Dodatkowe info:<textarea name="pole2" style="width: 200px; height: 100px;">
</textarea><br />
<input type="submit" value="Zapisz" />
</form>';

else {
    
    // dane pochodzące z formularza
    $dane = $pole1."`".$pole3."`".$pole4."`".$pole2."\n";
    // przypisanie zmniennej $file nazwy pliku
    $file = "baza.txt";
    // uchwyt pliku, otwarcie do dopisania
    $fp = fopen($file, "a");
    // blokada pliku do zapisu
    flock($fp, 2);
    // zapisanie danych do pliku
    fwrite($fp, $dane);
    // odblokowanie pliku
    flock($fp, 3);
    // zamknięcie pliku
    fclose($fp);
    
    echo "Dane zostały zapisane!<br />";
    echo "Tylko admin moze sprawdzic wszystkie wpisane pola:p Ty jedynie możesz zobaczyc liste:D<br />";
    echo "<a href=\"podglad.php\">Zobacz liste uczestnikow</a>";
}
)
?> 

 

komentarz 14 stycznia 2017 przez HaKIM Szeryf (87,590 p.)

Patrzyłeś na swój kod?

W linii 6 zabrakło myślnika.

Wyposaż się w IDE jak NetBeans czy PHPStorm i nie będziesz miał już podobnych problemów, IDE da Ci znać co i jak.

komentarz 14 stycznia 2017 przez TwójCień Nowicjusz (160 p.)
Po dodaniu średnika:

Parse error: syntax error, unexpected ';' in C:\xampp\htdocs\form\for.php on line 6
komentarz 14 stycznia 2017 przez HaKIM Szeryf (87,590 p.)

Mój błąd, sorry.

Zapomniałeś o { po zamknięciu () w if'ie.

if((!empty($_POST['pole1'])) && (!empty($_POST['pole2'])) && (!empty($_POST['pole3'])) && (!empty($_POST['pole4']))
{
komentarz 14 stycznia 2017 przez TwójCień Nowicjusz (160 p.)

Nadal nie działa kod:

<?php
/*********************************************
* plik formularz.php
*********************************************/

if((!empty($_POST['pole1'])) && (!empty($_POST['pole2'])) && (!empty($_POST['pole3'])) && (!empty($_POST['pole4'])))

{



    
// prosty formularz zawierający dwa pola
echo '<form action="" method="post">
Imie: <input type="text" name="pole1" style="width: 200px;" /><br />
Nazwisko<input type="text" name="pole3" style="width: 200px;" /><br />
Numer telefonu<input type="text" name="pole4" style="width: 200px;" /><br />
Dodatkowe info:<textarea name="pole2" style="width: 200px; height: 100px;">
</textarea><br />
<input type="submit" value="Zapisz" />
</form>';


}


else {
    
    // dane pochodzące z formularza
    $dane = $pole1."`".$pole3."`".$pole4."`".$pole2."\n";
    // przypisanie zmniennej $file nazwy pliku
    $file = "baza.txt";
    // uchwyt pliku, otwarcie do dopisania
    $fp = fopen($file, "a");
    // blokada pliku do zapisu
    flock($fp, 2);
    // zapisanie danych do pliku
    fwrite($fp, $dane);
    // odblokowanie pliku
    flock($fp, 3);
    // zamknięcie pliku
    fclose($fp);
    
    echo "Dane zostały zapisane!<br />";
    echo "Tylko admin moze sprawdzic wszystkie wpisane pola:p Ty jedynie możesz zobaczyc liste:D<br />";
    echo "<a href=\"podglad.php\">Zobacz liste uczestnikow</a>";
}

?> 

 

Bład: 

Notice: Undefined variable: pole1 in C:\xampp\htdocs\form\for.php on line 29

Notice: Undefined variable: pole3 in C:\xampp\htdocs\form\for.php on line 29

Notice: Undefined variable: pole4 in C:\xampp\htdocs\form\for.php on line 29

Notice: Undefined variable: pole2 in C:\xampp\htdocs\form\for.php on line 29
Dane zostały zapisane!
Tylko admin moze sprawdzic wszystkie wpisane pola:p Ty jedynie możesz zobaczyc liste:D
Zobacz liste uczestnikow

1
komentarz 14 stycznia 2017 przez Bosswell Nałogowiec (36,470 p.)
Nie wiem jak chcesz to przerabiać, skoro nie znasz składni i logiki tego skryptu.
0 głosów
odpowiedź 14 stycznia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)
$pole1 = trim($_POST['pole1']);
$pole2 = trim($_POST['pole2']);
$pole3 = trim($_POST['pole3']);
$pole4 = trim($_POST['pole4']);

Za każdym razem próbujesz odczytać te wartości z tablicy POST. A co jeśli formularz nie zostanie przesłany? Takich elementów w tablicy nie ma i stąd pojawiają się takie ostrzeżenia.

Rozwiązaniem jest sprawdzenie czy formularz został przesłany i tylko wtedy odczytywanie potrzebnych wartości. Można zrobić to po prostu przez isset(). Możesz też każdą wartość z POST pobierać poprzez filter_input(), funkcja ta nie zwraca błędu gdy dany element nie istnieje, a dodatkowo umożliwia zastosowanie różnych filtrów.

komentarz 14 stycznia 2017 przez TwójCień Nowicjusz (160 p.)
OK dzięki za pomoc.Mam prośbę bo nie wiele mi to mówi bo nie ograniam PHP formularz wziołem z internetu i trochę przerobiłem więc czy nie mógł byś mi napisac takiego prostego formularza który będzie miał kilka pól tekstowych i dwie opjce wyboru mogą być rozwijane lub typu checkbox i aby treść oraz wybór tych pól zapisywał się do pliku tekstowego txt ? Chodzi mi tylko o szablon reszte już sobie przerobie w miarę możliwośći pod siebie.Byłbym bardzo wdzięczny.Pozdrawiam
komentarz 14 stycznia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)
Niestety ale nie mógłbym. Z jednego prostego powodu: czegoś nauczysz się tylko robiąc to samemu, kopiując mój gotowiec i zmieniając linijkę czy dwie niczego nowego się nie dowiesz. Mogę więc pomóc z jakimś konkretnym problemem, tak jak to zrobiłem wyjaśniając pochodzenie błędów z pytania, ale nie będę robił niczego w całości za Ciebie.
0 głosów
odpowiedź 14 stycznia 2017 przez korey Nowicjusz (140 p.)
Mysle ze jesli przeniesiesz linie od 6 do 9 za linie 24 to bledy znikna :)

Pozdrawiam
komentarz 14 stycznia 2017 przez TwójCień Nowicjusz (160 p.)
Błędy znikły ale zawartość formularza nie zapisuje sie teraz do pliku txt.
komentarz 14 stycznia 2017 przez korey Nowicjusz (140 p.)
czy plik TXT znajduje sie w tym samym katalogu co formularz.php? ^^

proponuje przestudiowac troszke o operacjach na plikach:

http://phpkurs.pl/operacje-na-plikach/
komentarz 14 stycznia 2017 przez TwójCień Nowicjusz (160 p.)
Tak znajduję się w tym samym katalogu.
komentarz 19 stycznia 2017 przez seba316d Użytkownik (520 p.)
Siema, musisz przypisać POSTA do jakiejsc zmiennej w tym wypadku $pole1

Podobne pytania

0 głosów
1 odpowiedź 343 wizyt
pytanie zadane 11 sierpnia 2016 w HTML i CSS przez Kamil Czech Dyskutant (7,700 p.)
–1 głos
1 odpowiedź 514 wizyt
pytanie zadane 3 lutego 2016 w HTML i CSS przez Pan Marcin Grzęda Użytkownik (670 p.)
+1 głos
3 odpowiedzi 519 wizyt
pytanie zadane 22 czerwca 2015 w PHP przez mowmiheniek Stary wyjadacz (11,900 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...