私はPHP OOPで書かれたCMSプロジェクトに取り組んでいます。このプロジェクトでは、管理者が電報ボットを追加して管理できるセクションを追加したかったのです。だから私は、ページtelegram_section.php
でこのフォームを作っ:PHP OOPで未定義のインデックスエラーメッセージ
<?php
if(isset($_POST['submit'])){
$db = new Connection();
$connection = $db->dbConnect();
$token = $_POST['token'];
$cat = $_POST['cat'];
$ads = $_POST['ads'];
$key = $_POST['keyboard'];
$notice = array();
if(!empty($token)&&!empty($cat)&&!empty($ads))
{
for ($i=0; $i < count($this->_ads); $i++)
{
for ($j=0; $j < count($this->_key);$j++)
{
$tel = new Telegram($token, $cat, $ads[$i], $key[$j]);
$notice[] = $tel->saveToDb($db);
}
}
}
}
?>
<div class='content-wrapper'>
<section class='content-header'>
<h1>
Add New Telegram Account
<small>You can add a new Telegram channel here</small>
</h1>
<ol class='breadcrumb'>
<li class='active'>telegram.php</li>
</ol>
</section>
<?php
if($dataSet->GetLevel()==1)
{ echo "
<section class='content'>
<div class='row'>
<div class='col-md-6'>
<div class='box box-primary'>
<div class='box-header with-border'>
<h3 class='box-title'>Required Information</h3>
</div>
";
if(isset($notice['success_message'])){
echo "
<div class='alert alert-success'>
<strong>Hey!</strong> ".$notice['success_message'].".
</div>
";
}
echo "
<form role='form' method='POST' action=''>
<div class='box-body'>
<div class='form-group'>
<label>Token Number</label>
<input type='text' class='form-control' placeholder='Enter token' name='token' required>
<a href='#' style='color:purple;'>Having problem while getting token</a>
</div>
<div class='form-group'>
<label>Select Category</label>
<select name='cat' class='form-control'>
<option value='empty'>---</option>
<option value='technology'>Technology</option>
<option value='4fun'>Game & Fun</option>
<option value='news'>News</option>
<option value='tools'>Tools</option>
<option value='learning'>Learning</option>
<option value='traditional'>Traditional</option>
<option value='media'>Media</option>
</select>
</div>
<div class='form-group'>
<div class='radio'>
<label>
<input type='radio' name='ads' id='optionsRadios1' value='on' checked>
Set ads on</br>
<input type='radio' name='ads' id='optionsRadios1' value='off'>
Set ads off
</label>
</div>
</div>
<div class='form-group'>
<div class='checkbox'>
<label>
<input type='checkbox' name='keyboard' value='with_keyboard'>
Use dedicated keyboard for this bot
</label></br>
<label>
<input type='checkbox' name='keyboard' value='without_keyboard'>
Show keyboard at groups
</label></br>
<label>
<input type='checkbox' name='answer' value='answer_messages_chats' checked>
In private chats, just anwser the pre defined messages
</label></br>
<label>
<input type='checkbox' name='answer' value='answer_messages_groups' checked>
In groups, just answer the pre defined messages
</label>
</div>
</div>
</div>
<div class='box-footer'>
Visit <a href='https://zite.pouyavagefi.com/documentation/telegram.php'>Telegram</a> Social Media Documentation.
</div>
<div class='box-footer'>
<button name='submit' type='submit' class='btn btn-primary'>Submit</button>
</div>
</form>
</div>
</div>
</div>
</section> ";
}else{
echo "
<section class='content'>
<div class='alert alert-warning'>
<strong>Access Denied!</strong> You don\'t have permission to access this page.
</div>
</section> ";
}
?>
</div>
をそしてここで私は、前のページに呼び出されるクラスTelegram.class.php
次のとおりです。
<?php
class Telegram
{
protected $notice = '';
private $_token;
private $_cat;
private $_ads;
private $_key;
public function __construct($token, $cat, $ads, $key)
{
$this->_token = $token;
$this->_cat = $cat;
$this->_ads = $ads;
$this->_key = $key;
}
public function saveToDb(PDO $con)
{
$new = $this->con->prepare("INSERT INTO channels (token_number, category_name, ads_set, keyboard_status) VALUES (?, ?, ".$ads[$i].", ".$key[$i].")");
$new->bindParam(1,$this->_token);
$new->bindParam(2,$this->_cat);
$new->bindParam(3,$this->_ads);
$new->bindParam(4,$this->_key);
$new->execute();
$this->notice['success_message'] = "New Telegram Channel was successfully added";
return $this->notice;
}
public function getNotice()
{
return $this->notice;
}
public function getToken()
{
return $this->_token;
}
public function getCat()
{
return $this->_cat;
}
public function getAds()
{
return $this->_ads;
}
public function getKey()
{
return $this->_key;
}
}
?>
今の問題は、私は、フォームを送信しようとしたときに
未定義のインデックス:私は、このエラーメッセージが表示されますキーボードをtelegram_section.phpに行に10
ここには、telegram_section.php
の行10があります。
$ key = $ _POST ['keyboard'];このユーザー入力を取得する
:
<label>
<input type='checkbox' name='keyboard' value='with_keyboard'>
Use dedicated keyboard for this bot
</label></br>
<label>
<input type='checkbox' name='keyboard' value='without_keyboard'>
Show keyboard at groups
</label></br>
あなたがこの問題を解決する方法を知っているのであれば、私は...事前に感謝を教えてください!
エラーはあなたがその行にこれを試してみてください...投稿で「偽」であるため、チェックボックスが受信されていませんので、なぜ?POST配列、でそのインデックスを持っていないことを示している
あなたはこれを既に投稿していませんか? https://stackoverflow.com/q/46404664/1415724と回答が得られた –