[PHP i JS] sprawdzanie danych formularzy

0

Od razu zaznaczam, że jestem początkujący :)

Próbuję zrobić prostą księgę gości.
Mam formularz z 3 polami: nick,mail,wpis

Chciałbym sprawdzać prawidłowość zapisanych danych (szczególnie np. czy pole jest wypełnione czy nie) i jesli któreś z pól nie jest wypełnione to wywalić komunikat(to mi się udaje), ale chodzi o to by w przypadku braku wypełnienia jakiegoś pola dane nie zapisywały się do pliku (księga.txt).

I jeszcze jedno - jak wyrzuca mi alert że nie podałem nicka to po kliknięciu OK wszystkie dane z formularza znikają, co zrobić żeby tak się nie działo

Tak sprawdzam

function sprawdzanie()
{ 
if (document.formularz.nick.value=="") alert("Musisz podac swój nick"); 
if (document.formularz.wpis.value=="") alert("Aby dodać swój komentarz, musisz najpierw go napisać :) ")
else
  document.formularz.value="dodaj_wpis.php"; //tutaj pewnie tkwi błąd, ale nie wiem co mam zrobić
                                             // dodaj_koment.php to oczywiście plik ze skryptem zapisującym dane do             
                                            //  pliku ksiega.txt
}
.
.
.
<FORM NAME="formularz">
nick<BR><INPUT TYPE=TEXT NAME=nick><BR>
mail<BR><INPUT TYPE=TEXT NAME=mail><BR>
treść wpisu<BR><TEXTAREA NAME=wpis></TEXTAREA><BR>
<INPUT TYPE=SUBMIT VALUE='TESTING' onClick="sprawdzanie()">

Proszę o rady

0

Ja bym zrobił tak (nie testowane):

function sprawdzanie()
{ 
if (document.formularz.nick.value=="") 
{
  alert("Musisz podac swój nick");
  return false;
}
else if (document.formularz.mail.value=="") 
{
  alert("Musisz podac swój email");
  return false;
}
else return true;
}
.
.
.
<FORM NAME="formularz" action="dodaj_wpis.php" onsubmit="return sprawdzenie();">
nick<BR><INPUT TYPE=TEXT NAME=nick><BR>
mail<BR><INPUT TYPE=TEXT NAME=mail><BR>
treść wpisu<BR><TEXTAREA NAME=wpis></TEXTAREA><BR>
<INPUT TYPE=SUBMIT VALUE='TESTING'>
0

WIELKIE DZIĘKI właśnie o to mi chodziło :)

0

to moze zrob jeszce takie cos, zebyd ane byly przekazywane do formularza przy pomocy "POST", bo jak mi sie wydaje to raczej... przez <form name... chyba nie mozna, no chyba ze jakos da rade ale juz sam nie wiem, ja proboalem i nic sie raczej nie da zrobic, bynajmniej mi dane nie przekazuje do nastepnego formularza

0

Jak testowałem to lokalnie na kompie przy użyciu krasnala to chodzi i z postem i bez posta, ale najbardziej dziwi mnie fakt, iż jeśli wrzucę pliki (index.php - ten z formularzem, dodaj_wpis.php, wysw_ksiege.php, ksiega.txt) na serwer (prv.pl, próbowałem też na serwer akdemicki i dzieje się tak samo) to wszystko się rypie - za kazdym razem strona się wiesza, do pliku ksiega.txt nic nie jest zapisywane, a jeśli już jakimś cudem się uda, że księga się wyświetli to bez nowych linii, czyli cały tekst leci ciurkiem.

może coś na to poradzicie?

0

Żeby dane były przekazywane metodą POST dodaj do <form>: method="post"

0

Właśnie po tym jak nie działało poprawnie dodałem wszędzie tam gdzie trzeba POST, później nawet w plikach odbierających dane z formularzy zastsowałem pobieranie zmiennych za pomocą takiego czegoś

$_POST['zmienna_z_formularza']

i też nie działa :(

0

Czyli jak zrobiłeś? Daj kod formularza i jakiś odpowiedni wycinek z dodaj_wpis.php - będzie łatwiej pomóc.

0

index.php

<html>
<head>
<title>ravcio</title>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2">
<link rel="shortcut icon" href="favicon.ico" type="image/ico" />

<SCRIPT LANGUAGE = "JavaScript">

function sprawdzanie()
{
if (document.formularz.nick.value=="")
{
  alert("Musisz podac swój nick");
  return false;
}
else if (document.formularz.mail.value=="")
{
  alert("Musisz podac swój email");
  return false;
}
else if (document.formularz.wpis.value=="")
{
  alert("Musisz podac swój wpis");
  return false;
}
else return true;
}

</SCRIPT>

</head>
<body bgcolor="#ff4433">
<CENTER>
<b><font face="Verdana" size="2" color="#FFFFFF"><br>

<FORM ACTION=wysw_ksiege.php METHOD=POST>
<INPUT TYPE=SUBMIT VALUE='Zobacz wpisy'>
</FORM>
<BR><BR>

<FORM NAME="formularz" action="dodaj_wpis.php" METHOD=POST onsubmit="return sprawdzanie();">
nick<BR><INPUT TYPE=TEXT NAME=nick><BR>
mail<BR><INPUT TYPE=TEXT NAME=mail><BR>
treść wpisu<BR><TEXTAREA NAME=wpis></TEXTAREA><BR>
<INPUT TYPE=SUBMIT VALUE='DODAJ'>


</CENTER>
</body>
</html>

dodaj_wpis.php:

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2">
<link rel="shortcut icon" href="favicon.ico" type="image/ico" />
</head>
<body bgcolor="#ff4433">
<font face="Verdana" size="2" color="#FFFFFF">
<CENTER><BR><BR><BR><BR><BR><BR>

<?php
  $d=gmDate("d");
  $m=gmDate("m");
  $r=gmDate("Y");  
  $gg=gmDate("G")+2-gmDate("I");  
  if ($gg >= 24) $gg=$gg-24;
  $mm=gmDate("i");

$trescdodawana="$d-$m-$r $gg:$mm\r\n".$_POST['nick']."\r\n".$_POST['mail']."\r\n"$_POST['wpis']."\r\n# # # # # # # # # #\r\n";
unset($d,$m,$r,$gg); // wyrzucenie niepotrzebnych zmiennych z tablicy
$plik = fopen('forum.txt',"r+");
flock($plik,2); 
while (!(feof($plik)))
      {
      $trescpliku[]=fgets($plik,1024); 
      }
$tresckoncowa[0]=$trescdodawana;
for ($i=0;$i<count($trescpliku);$i++)
    {
    $tresckoncowa[$i+1]=$trescpliku[$i];
    }
flock($plik,3);  
fclose($plik);

$plik = fopen('forum.txt',"w");
flock($plik,2);  
for ($i=0;$i<count($tresckoncowa);$i++)
    {
    fputs($plik,$tresckoncowa[$i]);
    }
flock($plik,3);
fclose($plik);
echo("Wpis dodany <BR>");
?>

<FORM ACTION=index.php METHOD=POST>
<INPUT TYPE=SUBMIT VALUE='POWROT'>
</FORM>

<FORM ACTION=wysw_ksiege.php METHOD=POST>
<INPUT TYPE=SUBMIT VALUE='Zobacz wpisy'>
</FORM>

</CENTER>
</font>
</body>
</html>

wysw_ksiege.php

<HTML>
<head>
<title>ravcio</title>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2">
<link rel="shortcut icon" href="favicon.ico" type="image/ico" />
</head>
<BODY bgcolor="#ff4433">
<font face="Verdana" size="2" color="#FFFFFF">
<?php
echo("<HR>");
$plik_forum='forum.txt';
$file=file("forum.txt");

if (file_exists($plik_forum)==true )  //czy istnieje plik
 { 
echo("<BR>");
/* Wyswietlanie pliku forum.txt*/
    $i=0;

    do
    {
	echo("<FONT SIZE=1>");
   	echo("Data: $file[$i] ");
   	$i++;
   	echo("NICK: $file[$i] ");
   	$i++;
   	echo("E_MAIL: $file[$i]<BR>");
   	$i++;
   	echo("Tresc wpisu : <BR>");
   	while(strcmp($file[$i],"# # # # # # # # # #\r\n") != 0 )
    		{
        	echo($file[$i]);
        	$i++;
    		}
   	echo("</FONT><BR><HR>");
   	$i++;
     } while ( $i < count($file) );
/* koniec wyswietlania */
 }
else 
 {
  echo'pliku forum nie ma<BR>';
 }
?>
</font>
<FORM ACTION=index.php METHOD=POST>
<INPUT TYPE=SUBMIT VALUE='POWROT'>
</FORM>
</BODY>
</HTML>

</b></span>

dlaczego dostałem dzisiaj maila z forum o takiej treści:

Ten list jest wysyłany automatycznie, gdyż Twój wątek/post na forum dyskusyjnym

http://4programmers.net/ został usunięty przez Coldpeer.
? ? ?
//bo Twój post został skasowany - nav
// bo był dubel jakby co - Cold

1 użytkowników online, w tym zalogowanych: 0, gości: 1