Питане за една форма.

AAtanasov

Registered
Здравейте искам да попитам:

Имам една форма която въвеждам някакви данни.
След това има един
Код:
if (isset($_POST["submit"])) {
и правя проверки за валидност на данните.
И след проверката следва, един if да вкарва попълните полета в базата данни. Искам да направя след като се вкара информацията в базата данни да не изкарва формата, а само когато има проблем с данните.

Ето го кога. Начинаещ съм в PHP и ще съм благодарен ако има критики по моя код, за да подобря писането на PHP.

PHP:
<?php
@session_start();
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include("secrets.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
     <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title></title>
     </head>
     <body>


          <?php

          ?>
          
          
          <form action="index.php" method="post">
               <table>
                    <tr>
                         <td>real name:</td>
                         <td><input type="text" name="realname" /><br /></td>
                    </tr>
                    <tr>
                         <td>password:</td>
                         <td><input type="password" name="password" /><br /></td>
                    </tr>
                    <tr>
                         <td>user name:</td>
                         <td><input type="text" name="username" /><br /></td>
                    </tr>
                    <tr>
                         <td>email:</td>
                         <td><input type="text" name="email" /><br /></td>
                    </tr>
                    <tr>
                         <td>adress:</td>
                         <td><input type="text" name="address" /><br /></td>
                    </tr>
                    <tr>
                         <td>tel:</td>
                         <td><input type="text" name="tel" /><br /></td>
                    <tr>
                         <td style="text-align: center;"><input type="submit" value="submit" name="submit" /></td>
                    </tr>
               </table>

          </form>

<?php
         
// variables
          $realname = $_POST["realname"];
          $username = $_POST["username"];
          $email = $_POST["email"];
          $address = $_POST["address"];
          $tel = $_POST["tel"];
          $password = md5($_POST["password"]);



          if (isset($_POST["submit"])) {
// checks
               $sqlcheck = "SELECT `username` FROM `users` WHERE `username` = '$username' OR `email` = '$email' ";
               $resultcheck = mysql_query($sqlcheck);
               $num = mysql_num_rows($resultcheck);
               if ($num > 0) {
                    echo "dublicate";
                    $error = true;
               }

               if (empty($_POST["realname"])
                       OR empty($_POST["username"])
                       OR empty($_POST["email"])
                       OR empty($_POST["address"])
                       OR empty($_POST["tel"])
                       OR empty($_POST["password"])) {
                    echo "empty";
                    $error = true;
               }

               if (!preg_match("/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/i", $email)) {
                    echo "invalid email";
                    $error = true;
               }

               if (!preg_match("/^[0-9]*$/", $tel)) {
                    echo "wrong number";
                    $error = true;
               }

//Insert in mysql

               if ($error == false) {
                    $sql = "INSERT INTO `users` (`realname`,`username`,`email`,`address`,`tel`,`password`)
                    VALUES('$realname','$username','$email','$address','$tel','$password')";
                    $res = mysql_query($sql) or die(mysql_error());

               }
          }
?>
     </body>
</html>
 
Еми нз как може да се направи това,но се сещам за един начин,след като ти се постне формата да пренасочиш тоя който е постнал в друга страница.

PHP:
 if ($error == false) {
$sql = "INSERT INTO `users` (`realname`,`username`,`email`,`address`,`tel`,`password`) VALUES('$realname','$username','$email','$address','$tel','$password')";
$res = mysql_query($sql) or die(mysql_error());
if($res){
header ('Location: index2.php');
}
}
 
PHP:
@session_start();
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include("secrets.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
     <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title></title>
     </head>
     <body>


          <?php

          ?>
          
          <?php
          if (!isset($_POST['submit']) || $error == true) {
          ?>
          <form action="index.php" method="post">
               <table>
                    <tr>
                         <td>real name:</td>
                         <td><input type="text" name="realname" /><br /></td>
                    </tr>
                    <tr>
                         <td>password:</td>
                         <td><input type="password" name="password" /><br /></td>
                    </tr>
                    <tr>
                         <td>user name:</td>
                         <td><input type="text" name="username" /><br /></td>
                    </tr>
                    <tr>
                         <td>email:</td>
                         <td><input type="text" name="email" /><br /></td>
                    </tr>
                    <tr>
                         <td>adress:</td>
                         <td><input type="text" name="address" /><br /></td>
                    </tr>
                    <tr>
                         <td>tel:</td>
                         <td><input type="text" name="tel" /><br /></td>
                    <tr>
                         <td style="text-align: center;"><input type="submit" value="submit" name="submit" /></td>
                    </tr>
               </table>

          </form>

<?php
} 
// variables
          $realname = $_POST["realname"];
          $username = $_POST["username"];
          $email = $_POST["email"];
          $address = $_POST["address"];
          $tel = $_POST["tel"];
          $password = md5($_POST["password"]);



          if (isset($_POST["submit"])) {
// checks
               $sqlcheck = "SELECT `username` FROM `users` WHERE `username` = '$username' OR `email` = '$email' ";
               $resultcheck = mysql_query($sqlcheck);
               $num = mysql_num_rows($resultcheck);
               if ($num > 0) {
                    echo "dublicate";
                    $error = true;
               }

               if (empty($_POST["realname"])
                       OR empty($_POST["username"])
                       OR empty($_POST["email"])
                       OR empty($_POST["address"])
                       OR empty($_POST["tel"])
                       OR empty($_POST["password"])) {
                    echo "empty";
                    $error = true;
               }

               if (!preg_match("/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/i", $email)) {
                    echo "invalid email";
                    $error = true;
               }

               if (!preg_match("/^[0-9]*$/", $tel)) {
                    echo "wrong number";
                    $error = true;
               }

//Insert in mysql

               if ($error == false) {
                    $sql = "INSERT INTO `users` (`realname`,`username`,`email`,`address`,`tel`,`password`)
                    VALUES('$realname','$username','$email','$address','$tel','$password')";
                    $res = mysql_query($sql) or die(mysql_error());

               }
          }
?>
     </body>
</html>
пробвай така :)
 
ArchangelS каза:
<form action="index.php" method="post">

Задай друго място.
Ако задам друг адрес, при грешките пак,ще отваря адреса. А аз не искам.
Пак не става.
Без header и смяна на action искам да го направя.
 

Back
Горе