ugrás a tartalomhoz

Hova tegyem ebbe az egyszerű kódba a hibaüzeneteket?

Anonymous · 2006. Szep. 17. (V), 12.47
Hello
Van egy kitoltheto urlapom:

<?php
function show_form()
{
?>
<table width="100%" border="0" cellpadding="10" cellspacing="30">
 <tr>
  <td bgcolor="#FFFFFF">

  <!--
  Ide kene benyomni az error szovegeket ha a "user" vagy "email"
  mezo nem volt kitoltve
  -->

<form action="form.php" method="post">
Username:<input type="text" name="user" size="30">
Email:<input type="text" name="email" size="30">
<input type="submit name="submit" value="submit">

  </td>
 </tr>
</table>
</form>

<?php
}
?>
A kovetkezo keppen elenorzom ha ki van toltve a ket mezo (Username es Email)

<?php
if (isset($_POST['submit']))
{
   $problem = FALSE;

   if (empty($POST['user']))
   {
     $problem = TRUE;
     print "User field required";
   }

   if (empty($POST['email']))
   {
     $problem = TRUE;
     print "Email field required";
   }

if (!$problem)
{
   print "Az adatok jol voltak megadva";
}
else
{ 
  show form();
}

} 
else
{
  show_form();
}
?>

Hogyan tudnam benyomni az error uzeneteket oda ahol bejeloltam a fuggvenyben ?

Ha tudna valaki segiteni nagyon halas lennek !
 
1

egyszerű...

TeeCee · 2006. Szep. 17. (V), 15.14
mint az ágyba... khmm.. elalvás..

A legegyszerűbb megoldás szerintem ebben az esetben:

<?php
function checkValues() {
  $errorStr='';
  //hibák keresése és $errorStr-be tárolása, nem pedig print-tel kiírása(!)
  ...
  //hiba vissza
  return $errorStr;
}
function show_form()
{
  $errors = checkValues();
  // innentől kezdve a $errors a hibaüzeneted lesz, azt cinálsz vele, amit csak akarsz...
  // Ha arra vagy híváncsi, hogy van-e hiba: if ($errors != '')

mondtam, h eccerű, nem? ;-)
Sztem Te is rájöttél volna, ha már eddig eljutottál...
2

Kosz

Anonymous · 2006. Szep. 17. (V), 21.50
Ezt :

function checkValues() {

Az if(isset($_POST['submit'])) -on belul hozom letre?
3

bárhol

Off- · 2006. Szep. 17. (V), 22.08
Egy függvényt bárhol definiálhatsz, csak előbb legyen mint amikor meghívod. :-)
4

reszletesen

Anonymous · 2006. Szep. 18. (H), 07.31
Nem tudnad leirni kicsit reszletesebben ?

Igy kene kinezen a fugveny ? :

function checkValues()
{
	$errorStr = '';
	
	if(empty($_POST['name']))
        {
 		$errorStr = "Username field required";
        }
  	
  	if(!ereg('^[a-z0-9\-_\.]{1,32}@[a-z0-9\-\.]{1,64}\.[a-z0-9]{2,5}', $_POST['email'])) 
        {
  		$errorStr = "Email field required";
        }
  	
  	return $errorStr;
}
5

nagyjából

TeeCee · 2006. Szep. 18. (H), 08.24
huhh, először is:
Olyan jellegű kérdéseid vannak, ami alapján úgy vélem, hogy egy könyvet kellene először is venned ;)

Másrészről: igen, nagyjából úgy. Arra figyelj, hogy ha

function checkValues() {
  $errorStr = '';
  if(empty($_POST['name'])) {
    $errorStr .= "Username field required<br>";
  }
  if(!ereg('^[a-z0-9\-_\.]{1,32}@[a-z0-9\-\.]{1,64}\.[a-z0-9]{2,5}', $_POST['email'])) {
    $errorStr .= "Email field required<br>";
  }
  return $errorStr;
}
így csinálod, akkor mindkét mezőre vonatkozó hibajelzések megtalálhatóak lesznek (.= az a hozzáfűzés)
A másik variáció, amit ilyesmi esetekben használtam már:

function checkValues() {
  $errors = array();
  if(empty($_POST['name'])) {
    $errors['name'] = "Username field required";
  }
  if(!ereg('^[a-z0-9\-_\.]{1,32}@[a-z0-9\-\.]{1,64}\.[a-z0-9]{2,5}', $_POST['email'])) {
    $errors['email'] = "Email field required";
  }
  return $errors;
}

// használata:
$errMsgs = checkValues();
//Hibák kiírása, ha van hiba (minden hiba egy sorba)
// implode: összefüzi a tömb értékeit egy megadott stringgel
if ( $errMsgs !== array() ) {
  echo implode('<br>', $errMsgs);
}
//Ha az e-mailben van hiba, egyéb üzenet kiírása:
if ( isset($errMsgs['email']) ) {
  echo 'Egyéb üzenet...';
}
//Hibák kiírása felsorolásként:
echo '<ul><li>'.implode('</li><li>', $errMsgs).'</li></ul>';
(A kódok nem 100%, hogy működnek, csak begépeltem ide, nopersze azért igyekeztem figyelni...)

(most jó napom van, azért írtam ilyeneket, amúgy RTFM lett volna a válasz ;)

Amúgy IMHO a kód-színezés nem működik megfelelően, vagy csak színtévesztek?

És ehhe: az RTFM-re az írja magyaráztaként, hogy "Read The Fine Manual" LoL :D
6

kosz

Anonymous · 2006. Szep. 18. (H), 08.33
Koszonom, az a gond, hogy az elenorzeseket a submit gomb megnyomasa utan kene elvegeze, ezert nem tudom a hibauzeneteket oda is benyomni ahol a HTML urlap van.

Ha megfigyeled a fenti kodomat az urlap ha error van ujbol elojon, ezert nehezebb.
7

ez itt a problema

Anonymous · 2006. Szep. 18. (H), 08.38
Ez itt a problema

function show_form()
{
?>
HTML urlap

<!-- ide kell a hibauzenet -->

HTLM ulap bezar
<?php
}
?>
HTML urlap meghivasa submit gombra

if (isset($_POST['submit'])) 
{
  print " OK ";
}
else
{
  show_form();
}
Akkor mukodne ha a submit dolgot a HTML lapba szurnam be de akkor nem tudom elohivni az urlapot error uzenetnel
8

Nezd ezt:

Anonymous · 2006. Szep. 18. (H), 08.47
Nezd meg ezt a kodot, igy mukodik:

<?php
function checkValues()
{
	$errorStr = '';
	
	if(empty($_POST['name'])) 
	{
		$errorStr .= "Username field required<br>";
  	}
  
  	if(!ereg('^[a-z0-9\-_\.]{1,32}@[a-z0-9\-\.]{1,64}\.[a-z0-9]{2,5}', $_POST['email'])) 
  	{
  		 $errorStr .= "Email field required<br>";
  	}
  	
  	return $errorStr;
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Questions</title>
</head>
<body>

<form action="contactform.php" method="post">
<table width="100%" border="0" cellpadding="10" cellspacing="30">
 <tr>
   	<?php
 	if (isset($_POST['submit']))
 	{
 	 $error = checkValues();
 	 
 	 print $error;
 	}
 	?>
<p>Name:<font size="-1" color="red">*</font><br>
  <input type="text" name="name" size="30" value=""><br>
  Organisation:<br>
  <input type="text" name="organisation" size="30" value="">
  <br>
  E-mail:<font size="-1" color="red">*</font><br>
  <input type="text" name="email" size="30" maxlength="100" value="">
  <br>
  Phone:<br><input type="text" name="phone" size="30" value="">
  <br>
  Address:<br><input type="text" name="address" size="30" value="">
  <br><br>
  <input type="checkbox" name="bpo" value="Yes">
  I would like more information about the BPO
  <br>
  <input type="checkbox" name="joinbpo" value="Yes">
  I would like to join the BPO<br>
  <textarea name="textareabpo" rows="0" cols="20"></textarea>
  <br><br>
  I would like to be included on the BPO mailing list:<br>
  <input type="radio" name="question1" value="Email">
  Email<br>
  <input type="radio" name="question1" value="Post">
  Post<br>
  <br>
  <input type="checkbox" name="sponsorbpo" value="Yes">
  I would like to sponsor the BPO<br>
  <input type="checkbox" name="contactbpo" value="Yes">
  I would like someone to contact me about the BPO<br>
  <br>
  Other:<br>
  <textarea name="other" rows="0" cols="20"></textarea>
  <br>
  <br>
  Any other comments:<br>
  <textarea name="other_comment" rows="0" cols="20"></textarea>
  <br>
  <br>
  <input type="submit" name="submit" value="Submit"></p>
  </td>
 </tr>
</table>
</form>

</body>
</html>
Csak az a baj, hogy ha minden adat OK nem tunik el a HTML urlap.Erre milyen segitseget tudnal adni ?

En osszinten ezert akadatam el, csinaltam mar regisztracios lapot de ott nem kellet befuzni az error uzenetetett egy bizonyos reszebe a HTMl kodnak.