他の関数と連携する必要があるため、先頭のスペースに非常に敏感な入力、gameName を取得しようとしています。
入力欄に入力すると、スペースがありません。DBで確認すると、加工直後は前にスペースが入っています。DBから引っ張るとスペースがなく、(引っ張った後に)DBに再挿入するとスペースが削除されます。
ページの問題のあるコードは次のとおりです。
if (isset($_GET) && $_GET['page'] == 'addGame') {
if (isset($_GET) && $_GET['page'] == 'addGame' && $_GET['action'] == 'success') {
?>
<h2>Game added to database.</h2>
<h4><a href='index.php?page=addGame'>Add another</a> or choose something new to do.</h4>
<?
} else {
include('./inc/addGameProc.php');
?>
<fieldset>
<legend><h2>Add game</h2></legend>
<form name='addGame' id='addGame' method='POST'>
<input type='text' name='gameName' placeholder='Game name' required /><br />
<textarea name="gameDesc" class="span12" rows="10" placeholder='Game description' required></textarea><br />
<input type='submit' name='submitNewGame' class='btn btn-primary' /><br />
</form>
</fieldset>
<?
}
}
表示される追加ゲーム プロシージャは次のとおりです。
<?
if (isset($_POST['submitNewGame']) && $_SERVER['REQUEST_METHOD'] == 'POST') {
$database = new database('localhost','wwwander_sradmin','editedout','wwwander_srmain','mysqli');
$database->openConnection();
//save and escape entered material
$gameName = ltrim($_POST['gameName']);
$gameDesc = $database->escapeString($_POST['gameDesc']);
//check that material not already in db
$checkDB = $database->queryDB("SELECT * FROM mainSite_games WHERE gameName='$gameName' AND gameDesc='$gameDesc'");
if ($database->dbNumRows($checkDB) == 1) {
echo "Game already in database";
} else {
//add entered material into db
$addToDB = $database->queryDB("INSERT INTO mainSite_games(gameName, gameDesc) VALUES(\" $gameName \", \" $gameDesc \")");
if (!$addToDB) {
echo "An error occured.";
} else {
header('Location: index.php?page=addGame&action=success');
}
}
$database->closeConnection();
}
?>
私の試行錯誤した ltrim をそこに見ることができます。
もちろん、SOはここでの最後の試みです。私が知っていることはすべてやった。何か案は?省略したリソースのうち、他に提供できるリソースはありますか?
編集 -
引っ張った後、スペースがあります。私が存在しないと言った理由は、私が通常それを引っ張る場所で、スペースが考慮されていないのでスペースが問題ではないと思う選択に入るからです? 私は知らないよ。