Форумы портала PHP.SU » » Вопросы новичков » форма php

Страниц (1): [1]
 

1. Ruben - 11 Сентября, 2017 - 23:31:33 - перейти к сообщению
привет Сенек помоги мне спасибо заранее😎

++++++++++++++++++++++++++++++++++++++++++++++++++


if (isset($_POST['submit'])) {

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$confirmpass = $_POST['confirmpass'];


function validate($data)
{
$error = array();

foreach ($data as $key => $value) {
switch ($key) {
case 'firstname':
if (empty($value))
$error['firstname'] = 'The Name Was Empty<br>';
break;
case 'lastname':
if (empty($value))
$error['lastname'] = ' The Lastname was Empty<br>';
break;
case 'email':
if (empty($value))
$error['email'] = 'The Email was Empty<br>';
break;
case 'pass':
if (empty($value))
$error['pass'] = 'The Password was Empty<br>';
break;
case 'confirmpass':
if (empty($value))
$error['confirmpass'] = 'The ConfirmPassword was Empty<br>';
break;

}
}

return implode($error);
}

$error = validate($_POST);

echo $error;

}
++++++++++++++++++++++++++++++++++++++++++++++++++
Здесь все работает но мне надо штобы цикл foreach был наверху и function была бы в нутри цикла а не цикл был внутри функции и функция долхна получать 2 параметра key,value и проверятса спомошЮ switchcase спасобо заранее
2. Vladimir Kheifets - 12 Сентября, 2017 - 12:49:58 - перейти к сообщению
Ruben пишет:
привет Сенек помоги мне спасибо заранее😎

++++++++++++++++++++++++++++++++++++++++++++++++++


if (isset($_POST['submit'])) {

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$confirmpass = $_POST['confirmpass'];


function validate($data)
{
$error = array();

foreach ($data as $key => $value) {
switch ($key) {
case 'firstname':
if (empty($value))
$error['firstname'] = 'The Name Was Empty<br>';
break;
case 'lastname':
if (empty($value))
$error['lastname'] = ' The Lastname was Empty<br>';
break;
case 'email':
if (empty($value))
$error['email'] = 'The Email was Empty<br>';
break;
case 'pass':
if (empty($value))
$error['pass'] = 'The Password was Empty<br>';
break;
case 'confirmpass':
if (empty($value))
$error['confirmpass'] = 'The ConfirmPassword was Empty<br>';
break;

}
}

return implode($error);
}

$error = validate($_POST);

echo $error;

}
++++++++++++++++++++++++++++++++++++++++++++++++++
Здесь все работает но мне надо штобы цикл foreach был наверху и function была бы в нутри цикла а не цикл был внутри функции и функция долхна получать 2 параметра key,value и проверятса спомошЮ switchcase спасобо заранее


Добрый день!
Попробуйте так:
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['submit']))
  2. {  
  3.         $error="";
  4.         foreach ($_POST as $key => $value)
  5.         {
  6.            $$key = $value;
  7.            $error .= validate($key,$value);
  8.         }
  9.         echo $error;
  10. }
  11. ########################################       
  12. function validate($key,$value)
  13. {      
  14.         $error="";
  15.         switch ($key)
  16.         {
  17.                 case 'firstname':
  18.                 if (empty($value))
  19.                 $error = 'The Name Was Empty<br>';
  20.                 break;
  21.                
  22.                 case 'lastname':
  23.                 if (empty($value))
  24.                 $error = ' The Lastname was Empty<br>';
  25.                 break;
  26.        
  27.                 case 'email':
  28.                 if (empty($value))
  29.                 $error = 'The Email was Empty<br>';
  30.                 break;
  31.        
  32.                 case 'pass':
  33.                 if (empty($value))
  34.                 $error = 'The Password was Empty<br>';
  35.                 break;
  36.        
  37.                 case 'confirmpass':
  38.                 if (empty($value))
  39.                 $error = 'The ConfirmPassword was Empty<br>';
  40.                 break;
  41.         }
  42.     return $error;
  43. }


P.S. Вместо строк:
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$confirmpass = $_POST['confirmpass'];


достачно в цикле foreach ($_POST as $key => $value) написать:
$$key=$value;
3. Ruben - 12 Сентября, 2017 - 15:21:35 - перейти к сообщению
function validate($key, $value)
{
switch ($key) {
case 'firstname':
if (empty($value)) {
echo 'Putt Your Firstname';
echo '<br>';
}
break;
case 'lastname' :
if (empty($value)) {
echo 'Putt Your Lastname';
echo '<br>';
}
break;
case 'email':
if (empty($value)) {
echo 'Putt Your Email';
echo '<br>';
}
break;
case 'pass' :
if (empty($value)) {
echo 'Putt Your Password';
echo '<br>';
}
break;
case 'confirmpass' :
if (empty($value)) {
echo 'Putt Your Confirmpassword ';
echo '<br>';
}
break;
}
}

foreach ($_POST as $key => $value) {

validate($key, $value);



Как мне проверить $_POST но $_POST при наЖАТИИ формы должен проверять только валю в форме а не весь $_POST
мне сказали сделаи массив и использовай функцию in array()
Помогите меня чтото не получается спасибо;
4. Vladimir Kheifets - 12 Сентября, 2017 - 15:39:19 - перейти к сообщению
Ruben пишет:

Спойлер (Отобразить)


Как мне проверить $_POST но $_POST при наЖАТИИ формы должен проверять только валю в форме а не весь $_POST
мне сказали сделаи массив и использовай функцию in array()
Помогите меня чтото не получается спасибо;


Попробуйте сделать так:
PHP:
скопировать код в буфер обмена
  1. $KeyArr=array('firstname','lastname','email','pass','confirmpass');
  2. if (isset($_POST['submit']))
  3. {  
  4.         $error="";
  5.         foreach ($KeyArr as $key)
  6.         {
  7.            $value = $_POST[$key];
  8.            $$key = $value;
  9.            $error .= validate($key,$value);
  10.         }
  11.         echo $error;
  12. }


Не советую, но если кому-то очень хочется, то можно использовать функцию in array()
PHP:
скопировать код в буфер обмена
  1. $KeyArr=array('firstname','lastname','email','pass','confirmpass');
  2. if (isset($_POST['submit']))
  3. {  
  4.         $error="";
  5.         foreach ($_POST as $key => $value)
  6.         {
  7.            if(in_array($key,$KeyArr))
  8.            {
  9.                    $$key = $value;
  10.                    $error .= validate($key,$value);
  11.            }
  12.         }
  13.         echo $error;
  14. }
5. Ruben - 12 Сентября, 2017 - 16:26:03 - перейти к сообщению
да понимаю но нельзя так сделать чтоб не было $$ я не прожодил ещо
так неправилно?



if (isset($_POST['submit'])) {


$valid = ["firstname", "lastname", "email", "pass", "confirmpass"];
$valid = $_POST;


function validate($key, $value)
{
switch ($key) {
case 'firstname':
if (empty($value)) {
echo 'Putt Your Firstname';
echo '<br>';
}
break;
case 'lastname' :
if (empty($value)) {
echo 'Putt Your Lastname';
echo '<br>';
}
break;
case 'email':
if (empty($value)) {
echo 'Putt Your Email';
echo '<br>';
}
break;
case 'pass' :
if (empty($value)) {
echo 'Putt Your Password';
echo '<br>';
}
break;
case 'confirmpass' :
if (empty($value)) {
echo 'Putt Your Confirmpassword ';
echo '<br>';
}
break;
}
}

foreach ($_POST as $key => $value) {


validate($key, $value);

$valid = ["firstname", "lastname", "email", "pass", "confirmpass"];
$valid = $_POST;



if (in_array('firstname', $_POST)) {
echo true;
} else {
echo false;
}

if (in_array('lastname', $_POST)) {
echo true;
} else {
echo false;
}
if (in_array('email', $_POST)) {
echo true;
} else {
echo false;
}
if (in_array('pass', $_POST)) {
echo true;
} else {
echo false;
}
if (in_array('confirmpass', $_POST)) {
echo true;
} else {
echo false;
}

}


}
6. Vladimir Kheifets - 12 Сентября, 2017 - 20:14:59 - перейти к сообщению
Ruben пишет:
да понимаю но нельзя так сделать чтоб не было $$ я не прожодил ещо
так неправилно?

Спойлер (Отобразить)



Можно сделать так, чтобы не было "$$key".
Вместо $$key = $value;
Верните, как было раньше:
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$confirmpass = $_POST['confirmpass'];


А вот это:
PHP:
скопировать код в буфер обмена
  1. $valid = ["firstname", "lastname", "email", "pass", "confirmpass"];
  2. $valid = $_POST;

$valid = $_POST; - ошибка. Не будет работать.
7. Ruben - 13 Сентября, 2017 - 08:51:12 - перейти к сообщению
спасибо Владимир
(Добавление)
Владимип помоги пожалуста как мне сделать чтобы регистарация была в html форме например если я даю submit если небыло имени то выдавала Putt your name но не самово внезу а под полем NAme; и так все поля Lastname , Email ,Password , i confirmpassword;


if (isset($_POST['submit'])) {

function validate($key, $value)
{
switch ($key) {
case 'firstname':
if (empty($value)) {
echo 'Putt Your Firstname';
echo '<br>';
}
break;
case 'lastname' :
if (empty($value)) {
echo 'Putt Your Lastname';
echo '<br>';
}
break;
case 'email':
if (empty($value)) {
echo 'Putt Your Email';
echo '<br>';
}
break;
case 'pass' :
if (empty($value)) {
echo 'Putt Your Password';
echo '<br>';
}
break;
case 'confirmpass' :
if (empty($value)) {
echo 'Putt Your Confirmpassword ';
echo '<br>';
}
break;
}
}

$arr = array('firstname', 'lastname', 'email', 'pass', 'confirmpass');
foreach ($_POST as $key => $value) {
if (in_array($key, $arr)) {
validate($key, $value);
}
}


}


сейчас все соощение отображаются внезу а мне надо поскайдим полям спасибо большое

 

Powered by ExBB FM 1.0 RC1