私はPHPオブジェクト指向を使って独自のカスタムCMSを作っています...サイトのメイン管理者が別の管理者を追加できるページを作っています。これを行うために、私はこのフォームを作った:PHPの別の関数の中で関数を呼び出す方法OOP
<form role="form" method="POST" action="">
<div class="box-body">
<div class="form-group">
<label>User name</label>
<input type="text" class="form-control" placeholder="Enter username" name="uname" required>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email" name="email" required>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Temporary password</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Enter password" name="pass" required>
</div>
<div class="form-group">
<label>Group admin</label>
<select class="form-control">
<option>Main Admin</option>
<option>Administrator</option>
<option>Content Creator</option>
<option>Analyst</option>
</select>
</div>
</div>
<div class="box-footer">
<button name="submit" type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
それから私はアクションファイルとしてこれを追加しました:あなたは、私がRegister
というクラスを呼んでいると、このクラスでは、私がコード化された見ることができるように
この:
class Register {
private $db;
public function __construct() {
$this->db = new Connection();
$this->db = $this->db->dbConnect();
}
public function CheckUname($username,$email) {
if(!empty($username)&&($email)) {
$chk1 = $this->db->prepare("SELECT username FROM admins WHERE user_name= ?");
$chk1->bindParam(1,$username);
$chk1->execute();
if($chk1->rowCount() == 1)
{
$notice['username_exists'] = "Try different username";
} else {
$chk2 = $this->db->prepare("SELECT email FROM admins WHERE email_address= ?");
$chk2->bindParam(1,$email);
$chk2->execute();
if($chk2->rowCount() == 1)
{
$notice['email_exists'] = "The email address that you have entered is already exists in database";
}else{
// I want to call the NewAdmin function here
}
}
}
}
public function NewAdmin($username,$email,$password) {
if(!empty($username)&&!empty($email)&&!empty($password)) {
$reg = $this->db->prepare("INSERT INTO admins (user_name, email_address, password_hash) VALUES ('?', '?', '?')");
$reg->bindParam(1,$username);
$reg->bindParam(2,$email);
$reg->bindParam(2,$password);
$reg->execute();
}
}
}
は基本的に私は、そのユーザ名が既に電子メールが、私はそうNewAdmin
関数を呼び出すにしたい存在でなければならば、私もチェックし存在するかどうかをチェックしてみましたadminをdbに挿入することができます。問題は、私がCheckUname
の機能の中でそれをする方法を知らないということです。助けてください?
また、ユーザーがデータベースに既に存在するユーザー名または電子メールを入力したときに生成されるエラーが表示されない理由がもう1つあります。しかし、私はこのために、変数を設定している:
if($chk1->rowCount() == 1) {
$notice['username_exists'] = "Try different username";
} else {
$chk2 = $this->db->prepare("SELECT email FROM admins WHERE email_address= ?");
$chk2->bindParam(1,$email);
$chk2->execute();
if($chk2->rowCount() == 1) {
$notice['email_exists'] = "The email address that you have entered is already exists in database";
} else {
// I want to call the NewAdmin function here
}
}
私も、このようにページにエラーを設定している:ユーザ名または電子メールの送信中に
if(isset($notice['username_exists'])) {
echo "<div class='alert alert-danger'><strong>Hey!</strong> ".$notice['username_exists'].".</div>";
}
if(isset($notice['email_exists'])) {
echo "<div class='alert alert-danger'><strong>Hey!</strong> ".$notice['email_exists'].".</div>";
}
しかし、エラーなしがページに表示されますdbに存在する!
'$ this-> NewAdmin($ username、$ email、$ password)'は実際の変数でパラメータを置き換えます。 – Andrew
'$ notice'は関数のローカル変数ですか? –
'CheckUname'の中で' NewAdmin'を呼び出すには、 'CheckUname'に' $ password'を渡す必要があります。 –