ホームページ > バックエンド開発 > PHPチュートリアル > 簡単な投票ページ、投稿の書き方を教えてください

簡単な投票ページ、投稿の書き方を教えてください

WBOY
リリース: 2016-06-23 13:23:37
オリジナル
1200 人が閲覧しました

以前に簡単な投票関数を作成しました。その関数は、PHP のポスト値がデータベースの内容と一致する場合に count + 1 するというものです。スクリーンショットは次のとおりです

<form method="post" action="check.php"> <input type="text" name="test"> <input type="hidden" name="action" value="send"> <input type="submit" name="Submit" value="提交"> </form> <?php$conn = mysql_connect("127.0.0.1:8889","root","root"); $action = $_POST['action']; if($action == 'send'){ $test = $_POST['test']; mysql_select_db("test3",$conn); $sql = ("update tll set count=count+1 where tl01='$test'");$result = mysql_query($sql,$conn); } ?> 
ログイン後にコピー


次に、check.php を次のように変更したいと思います。元の単一ボックスを投票用に複数のボックスに変更しました。 次に、コードを
<form method="post" action="check.php"> <input type="text" name="test[]"> <br /><input type="text" name="test[]"> <br /><input type="text" name="test[]"> <br /><input type="hidden" name="action" value="send"> <input type="submit" name="Submit" value="提交"> </form> <?php$conn = mysql_connect("127.0.0.1:8889","root","root"); $action = $_POST['action']; if($action == 'send'){ $test = $_POST['test[]']; mysql_select_db("test3",$conn); $sql = ("update tll set count=count+1 where tl01='$test'");$result = mysql_query($sql,$conn); } ?> 
ログイン後にコピー
に変更する必要があります。コードを変更するのを手伝ってください。 。 どうもありがとうございます!

もう一度質問しますが、データベースの形式は「1 スペース 1 スペース 1」です。この形式は固定されています。
投票ページ 投票が成功し、データベースのカウントが実際に +1 であれば、エコー投票は成功です。失敗しました (形式が間違っている、またはエラーを入力するなど) echo
投票は失敗しました。 90点ですのでアドバイスを頂ければ幸いです!


ディスカッションへの返信 (解決策)

$_POST['test'] でこれらを取得でき、結果は配列になります

$_POST['test[]'] の値を取得できません。値が配列である $_POST['test'] を取得する必要があります。たとえば、
array('111', '222','333')

配列 Traverse をペアにしてデータベースに挿入します。等号を使用するだけではデータベースを取得できません:
tl01='$test'"
mysql にはそのようなステートメントがありません。Mysql は複数のステートメントを処理するために in オペレーションを使用する必要があります。 :
where tl01 in ( '111', '222', '333')

したがって、次のことを実現するには、配列を mysql で必要な文字列に変換する必要があります: ('111', '222', '333')関数

$_POST['test[]'] は値を取得できません。その値は配列です。たとえば、
array('111') です。 , '222','333 ')

次に、配列を走査してデータベースに挿入する必要があります。等号を使用するだけではデータベースを取得できません:
tl01='$test'"
Mysql にはありません。このようなステートメントは、MySQL で複数のステートメントを処理する必要があります。操作で使用します:
where tl01 in ('111', '222', '333')

したがって、配列を mysql で必要な文字列に変換する必要があります: (' 111'、'222'、'333') 、あなたの機能を実現するために



ご回答ありがとうございます。本やインターネット上で同様のケースが見つかりません。助けていただけますか。完全なサンプルコードを書いてください。ありがとうございます!

rree

$conn = mysql_connect("127.0.0.1:8889","root","root"); $action = $_POST['action']; if($action == 'send'){   $test = join("','", $_POST['test']);   mysql_select_db("test3",$conn);   $sql = ("update tll set count=count+1 where tl01 in ('$test')");  $result = mysql_query($sql,$conn); }
ログイン後にコピー
ログイン後にコピー

マスターが解決してくれました!どうもありがとうございます!この知識をどの本から学んだか聞いてもいいですか?もう一度調べてみます。

もう一度質問したいのですが、入力ボックスの形式が間違っている場合、または入力が間違っていて投票が成功しない場合、どうすればよいですか?


$conn = mysql_connect("127.0.0.1:8889","root","root"); $action = $_POST['action']; if($action == 'send'){   $test = join("','", $_POST['test']);   mysql_select_db("test3",$conn);   $sql = ("update tll set count=count+1 where tl01 in ('$test')");  $result = mysql_query($sql,$conn); }
ログイン後にコピー
ログイン後にコピー

マスターが解決してくれました!どうもありがとうございます!この知識をどの本から学んだか聞いてもいいですか?もう一度調べてみます。

もう一度質問したいのですが、入力ボックスの形式が間違っている場合、または入力が間違っていて投票が成功しない場合、どうすればよいですか?

本を購入する必要はありません。主に mysql 関連の知識をオンラインで確認できます。mysql 構文を学習する必要があります。そうすれば上達します
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート