2012-04-28 5 views
0

これが私の最新の問題です。私はレイアウトとすべての作業を持っているが、今私はこの部分のPHP側を把握しようとしている。私は何をしたいのですが、どのラジオボタンがPHPを使ってチェックされているかを具体的にどのように言いますか?私は$ _POST ['ins'](ここで 'ins'は挿入ボタンのIDです)を使ってみましたが、うまくいきませんでした。私はそれが挿入ボタンがチェックされているように動くようにしたい、どんなステップを行うが、私はそれを得る方法を知らないので、挿入ボタンが選択/チェックされていると言う。どのラジオボタンがチェックされているのかを確認し、PHPを使って

は、ここでは、ここでさまざまな問題がいくつかあります

<html> 
<head><title></title> 
<script type="text/javascript"> 

function show() 
{ 
if (document.getElementById('ins').checked){ 
document.getElementById("p1").style.display = "block" 
document.getElementById("zn").style.display = "block"; 
document.getElementById("p2").style.display = "block" 
document.getElementById("gpa").style.display = "block"; 
document.getElementById("p3").style.display = "none" 
document.getElementById("ngpa").style.display = "none"; 
} 
else if (document.getElementById('upd').checked){ 
document.getElementById("p1").style.display = "block" 
document.getElementById("zn").style.display = "block"; 
document.getElementById("p2").style.display = "none" 
document.getElementById("gpa").style.display = "none"; 
document.getElementById("p3").style.display = "block" 
document.getElementById("ngpa").style.display = "block"; 
} 
else { 
document.getElementById("p1").style.display = "block" 
document.getElementById("zn").style.display = "block"; 
document.getElementById("p2").style.display = "none" 
document.getElementById("gpa").style.display = "none"; 
document.getElementById("p3").style.display = "none" 
document.getElementById("ngpa").style.display = "none"; 
} 
} 

function check() 
{ 
    if((document.getElementById("zn").value == "") || (document.getElementById("gpa").value == "") || 
    (isNaN(parseFloat(document.getElementById("gpa").value)))) 
    { 
     alert("Please complete both fields and check to see if the GPA entered is a number!"); 
     return false; 
    } 
    return true; 

} 
</script> 



</head> 
<body> 
<form action = "index.php" onsubmit="return check();"> 
<input type="radio" name="group" id = "ins" onclick ="show()"/> Insert Student <br /> 
<input type="radio" name="group" id = "upd" onclick ="show()"/> Update Student <br /> 
<input type="radio" name="group" id = "del" onclick ="show()"/> Delete Student <br /> 
<p id="p1" style="display:none">Enter Z-number: <br /></p> 
<input type='text' name = 'z' id ="zn" maxlength='9' style="display:none"/> 
<p id="p2" style="display:none"><br />Enter GPA: <br /></p> 
<input type='text' name='gpa' id ="gpa" style="display:none"/> 
<p id="p3" style="display:none"><br /> Enter new GPA: <br /></p> 
<input type="text" name ="ngpa" id ="ngpa" style="display:none"/> 
<br /><input type='submit' value='Submit request' name='submit'/> 
</form> 
<?php 
if (isset($_POST['z'])) { 
$con = mysql_connect('localhost', '*****', '***********'); 
if ($con) { 
mysql_select_db('ghamzal', $con); 

$a = $_POST['z']; 
$b = $_POST['gpa']; 
$sql = "INSERT INTO Students VALUES (' $a ' , '$b')"; 

if (mysql_query($sql, $con)) echo 'Operation succeeded'; 
else echo 'Not succeeded ' .mysql_error(); 




if (isset($_POST['ins'])) { 
$sql = "SELECT * FROM Students"; 
$res = mysql_query($sql, $con); 

echo "<table border ='1'>"; 
echo "<tr><th>Znum</th><th>GPA</th></tr>"; 
while ($r = mysql_fetch_array($res)) { 
echo "<tr><td>".$r['Znum']."</td><td>".$r['gpa']. "</td></tr>"; 
} 
echo "</table>"; 
} 
mysql_close($con); 
} 
else { 
echo 'Insertion failed'. 'Could not connect to DB.';} 

} 

?> 
</body> 
</html> 
+3

あなたのコードはSQLインジェクションに対して脆弱です。 **本当に**は準備済みのステートメントを使用していなければなりません.SQLに評価されないパラメータとして変数を渡します。私が何を話しているのか、それについてどうやって行くのか分からなければ、[Bobby Tables](http://bobby-tables.com)を読んでください。 – eggyal

+0

Googleで[PHPラジオボタン](http://www.google.com/search?q=PHP+radio+button)を検索したときに表示されるチュートリアルを試してみましたか? – eggyal

答えて

2

私のコードです。最初の1つは、フォームがGETメソッドを使用して送信されているが、POSTメソッドを使用して送信されたかのようにPHPで値を取得しようとしていることです。あなたは、データベース内の値を更新しているので、タグを開いたフォームは、これに変更する必要がありますので、POSTメソッドは、好ましい。

<form method="post" action="index.php" onsubmit="return check();"> 

入力の「名前」フィールドには、あなたの$_POST変数で終わるものですその変数の値は、選択された入力の値です。

だから、あなたはこのように見えるためにあなたの入力を変更する必要があります。それはそれを含めることをお勧めだから

<input type="radio" name="selection" value="ins" id="ins" onclick="show()"/><label for="ins">Insert Student</label><br /> 
<input type="radio" name="selection" value="upd" id="upd" onclick="show()"/><label for="upd">Update Student</label><br /> 
<input type="radio" name="selection" value="del" id="del" onclick="show()"/><label for="del">Delete Student</label><br /> 

を(私は<label>マークアップを追加しましたそれは、アクセシビリティに役立ち、そして人々がのラベルをクリックした場合。ラジオボタン自体をクリックしたとして、あなたのラジオボタンは、それはそれを扱います)PHPコードで今すぐ

:今

$selection = $_POST['selection']; 

(私は右のあなたを得た場合)あなたの質問については

if ($selection == "ins") { 
    // do work here 
} elseif ($selection == "upd") { 
    // do work here 
} 
// etc. 
+0

ok、以前はlabelプロパティを使用していなかったので、これは初めてのことです。どのようなラベルを使用しての使用ですか? – beginnerprogrammer

+0

これをチェックしてください:[フォームのチェックボックスにラベルタグが必要な理由](http:// uxmovement。com/forms/why-your-form-checkboxes-need-to-have-label-tags /)を使用すると、チェックボックスをより使いやすく、アクセスしやすくなります。 – Charles

+0

大丈夫、それは素晴らしいポストであり、読んでいます。有難うございます。私は、更新ラジオボタンがチェックされているときに取り組んでいた。それはznumberに入力し、新しいGPAに入力するように求めます。どのように私はそれがユーザーがMySQLで入力したznumberのgpaの値を更新すると言う必要があります – beginnerprogrammer

3

- あなたは、各ラジオの属性を設定する必要があります。は、選択したラジオボタンを表す値が含まれます、そして、あなたは適切なロジックを実行することができますあなたはそれを識別する際に、たとえば、サーバー側のコードで使用することを計画しているものに:

<input type="radio" name="group" value="ins" id = "ins" onclick ="show()"/> Insert Student <br /> 
<input type="radio" name="group" value="upd" id = "upd" onclick ="show()"/> Update Student <br /> 
<input type="radio" name="group" value="del" id = "del" onclick ="show()"/> Delete Student <br /> 

とサーバー側で、選ばれたラジオの値はとしてアクセスできるようになりますあなたのケースでは、グループ名によるPOSTパラメータ:

$_POST['group'] 

そして..私はeggyalのコメントに強く同意し、準備されたステートメント(とSQLインジェクション一般)を見てみることをお勧めします。

幸運を祈る!

関連する問題