Bledne dzialanie cwiczenia z kursu

H@xior17

Użytkownik
Dołączył
Maj 19, 2010
Posty
14
Witam , wykonuje cwiczenie z kursu php i skrypt nie ma bledow lecz nie dziala tak jakbym sobie tego zyczyl ;)
Wykonuje instrukcje i wyswietla to co wpisze do formularza ale zamiast wyswietlac jedna czesc wyswietla wszystko a dokladnie :

PHP:
<?php 
	function spr_imie($imie)
{
  $check= '/^[.]$/';
  if(ereg($check, $imie))
  return true;
  else
  return false;
}
	function spr_wiek($wiek)
{
$check='/^[0-9]$';
if(ereg($check, $wiek))
return true;
else
return false;
}
	function spr_www($www)
{
$check='/^[.]$/';
if(ereg($check, $www))
return true;
else 
return false;  
}
	function spr_mail($mail)
{
$check= '/^[.]$/';
if(ereg($check, $mail))
return true;
else
return false;
}
	function spr_tresc($tresc)
{
$check=strlen($tresc);
if($check>30)
return false;
else
return true;
}

$imie=$_POST['imie'];
$wiek=$_POST['wiek'];
$www=$_POST['www'];
$mail=$_POST['mail'];
$tresc=$_POST['tresc'];

if (!spr_imie($imie))
{
  echo ("Nieprawidłowe imie");
  $blad_danych=true;
}
if (!spr_wiek($wiek))
{
  echo ("Blednie wpisany wiek");
  $blad_danych=true;
}
if (!spr_www($www))
{
  echo ("podaj prawidlowy adres www !");
  $blad_danych=true;
}
if (!spr_mail($mail))
{
  echo("Podaj prawidlowy adres email !");
  $blad_danych=true;
}
if (spr_tresc($tresc))
{
  echo("Tresc musi zawierac conajmniej 30 znakow.");
  $blad_danych=true;
}
else
{
  echo ("Twoje Imie to $imie<br/>");
  echo ("Twoj wiek to $wiek<br/>");
  echo ("Twoj adres www to $www<br/>");
  echo ("Twoj adres  email $mail<br/>");
  echo ("Twoja tresc to: <br/> $tresc<br/>");
  
}
?>

Jesli wpisze blednie wiek np. to zamiast wyslac komunikat Blednie wpisany wiek to wyskakuja wszystkie komukaty o bledzie w sesie , bledny mail,www imie itp a pod spodem wszystko z formularza , czyli niby dziala ale ignoruje ify i przesyla wszystkie echo . Nie wiem dlaczego i chcialbym sie dowiedziec gdzie robie blad.
 

loganek

Były Moderator
Dołączył
Listopad 11, 2006
Posty
563
ten else odnosi się tylko do ostatniego ifa
jak chcesz żeby było ok, daj zamiast else:
if(!$blad_danych){ //i dalej wyświetlasz formularz

oczywiście na początku skryptu musisz dać
$blad_danych=false;
chyba że php sam to ustawia ale to musiałbyś już sobie poszukać. Najbezpieczniej jednak ustawić false na początku skryptu
 

H@xior17

Użytkownik
Dołączył
Maj 19, 2010
Posty
14
Ok , zrobiłem tak
PHP:
<?php 
	function spr_imie($imie)
{
  $check= '/^[.]$/';
  if(ereg($check, $imie))
  return true;
  else
  return false;
}
	function spr_wiek($wiek)
{
$check='/^[0-9]$';
if(ereg($check, $wiek))
return true;
else
return false;
}
	function spr_www($www)
{
$check='/^[.]$/';
if(ereg($check, $www))
return true;
else 
return false;  
}
	function spr_mail($mail)
{
$check= '/^[.]$/';
if(ereg($check, $mail))
return true;
else
return false;
}
	function spr_tresc($tresc)
{
$check=strlen($tresc);
if($check>30)
return false;
else
return true;
}

$imie=$_POST['imie'];
$wiek=$_POST['wiek'];
$www=$_POST['www'];
$mail=$_POST['mail'];
$tresc=$_POST['tresc'];
$blad_danych=false;

if (!spr_imie($imie))
{
  echo ("Nieprawidłowe imie");
  $blad_danych=true;
}
if (!spr_wiek($wiek))
{
  echo ("Blednie wpisany wiek");
  $blad_danych=true;
}
if (!spr_www($www))
{
  echo ("podaj prawidlowy adres www !");
  $blad_danych=true;
}
if (!spr_mail($mail))
{
  echo("Podaj prawidlowy adres email !");
  $blad_danych=true;
}
if (spr_tresc($tresc))
{
  echo("Tresc musi zawierac conajmniej 30 znakow.");
  $blad_danych=true;
}
if(!$blad_danych)
{
  echo ("Twoje Imie to $imie<br/>");
  echo ("Twoj wiek to $wiek<br/>");
  echo ("Twoj adres www to $www<br/>");
  echo ("Twoj adres  email $mail<br/>");
  echo ("Twoja tresc to: <br/> $tresc<br/>");
  
}
?>

I nie wyswietla nic poza komukatami o bledach, jak sie zmieni w if(!$blad_danych) bez ! , wtedy wyswietla ale i komunikaty z bledami i dane formularza, byc moze zle wykonalem twoja instrukcje ?
 

loganek

Były Moderator
Dołączył
Listopad 11, 2006
Posty
563
skoro nie wyświetla nic poza komunikatami o błędach, to może dla tego że niepoprawnie wypełniłeś pola?
 

yuo

Użytkownik
Dołączył
Luty 14, 2011
Posty
5
Ok , zrobiłem tak
PHP:
<?php 
	function spr_imie($imie)
{
  $check= '/^[.]$/';
  if(ereg($check, $imie))
  return true;
  else
  return false;
}
	function spr_wiek($wiek)
{
$check='/^[0-9]$';
if(ereg($check, $wiek))
return true;
else
return false;
}
	function spr_www($www)
{
$check='/^[.]$/';
if(ereg($check, $www))
return true;
else 
return false;  
}
	function spr_mail($mail)
{
$check= '/^[.]$/';
if(ereg($check, $mail))
return true;
else
return false;
}
	function spr_tresc($tresc)
{
$check=strlen($tresc);
if($check>30)
return false;
else
return true;
}

$imie=$_POST['imie'];
$wiek=$_POST['wiek'];
$www=$_POST['www'];
$mail=$_POST['mail'];
$tresc=$_POST['tresc'];
$blad_danych=false;

if (!spr_imie($imie))
{
  echo ("Nieprawidłowe imie");
  $blad_danych=true;
}
if (!spr_wiek($wiek))
{
  echo ("Blednie wpisany wiek");
  $blad_danych=true;
}
if (!spr_www($www))
{
  echo ("podaj prawidlowy adres www !");
  $blad_danych=true;
}
if (!spr_mail($mail))
{
  echo("Podaj prawidlowy adres email !");
  $blad_danych=true;
}
if (spr_tresc($tresc))
{
  echo("Tresc musi zawierac conajmniej 30 znakow.");
  $blad_danych=true;
}
if(!$blad_danych)
{
  echo ("Twoje Imie to $imie<br/>");
  echo ("Twoj wiek to $wiek<br/>");
  echo ("Twoj adres www to $www<br/>");
  echo ("Twoj adres  email $mail<br/>");
  echo ("Twoja tresc to: <br/> $tresc<br/>");
  
}
?>

I nie wyswietla nic poza komukatami o bledach, jak sie zmieni w if(!$blad_danych) bez ! , wtedy wyswietla ale i komunikaty z bledami i dane formularza, byc moze zle wykonalem twoja instrukcje ?

Istnieje coś takiego jak "else if", i jak masz same "if", to wyświetla wszystkie komunikaty, przy zastosowaniu "else if", wyświetli jeden i będzie to pierwsze błędnie wypełnione pole.

Teraz jak to jak masz prawidłowo wypełniony formularz wtedy $blad_danych=false , a if(!$blad_danych) znaczy tyle co jeżeli $blad_danych różne od false to wyświetlaj te echa. I nie pokazuje ci tego echa, a działa jak dajesz if($blad_danych), dlatego ja wole tradycyjne zapisy if($blad_danych == false ) lub możesz dać if($blad_danych != true ) . Z tamtymi IF do każdego pola formularza też bym się zastanowił jak to jest z tym wykrzyknikiem bo może dlatego wyskakują wszystkie błędne pola jak masz prawidłowo wypełniony formularz.
 
Do góry Bottom