2017-07-31 13 views
-4

複数のテキストフィールド(名前、電子メール、電話、..)を持ち、複数のチェックボックスオプションを持つサインアップフォームを作成しようとしています。選択されたチェックボックスに基づいてmysqlにPHPフォームのテキストフィールド

また、各チェックボックスに1つずつ、複数のテーブルをmysqlデータベースに作成しました。
私の目標は、選択したチェックボックスデータテーブルにテキストフィールドに値を格納することです。

私の質問は、私が作成する方法である場合、それは

<html> 
<head> 

</head> 
<script type="text/javascript"> 
function toggle(source) { 
    checkboxes = document.getElementsByName('chk1[]'); 
    for(var i=0, n=checkboxes.length;i<n;i++) { 
    checkboxes[i].checked = source.checked; 
    } 
} 
</script> 
<body> 
<h2><font color="white">Welcome to Cars and Coffee</h2> 
<p>Sign up to receive if you are interested in 
    receiving information from Cars and Coffee.</p> 
<p>Please select at least one option</p> 
<form name="newEntry" action="page.php" method="POST"> 
name<input type=text length=60 size=30 name="name"><br> 
email<input type=text length=60 size=30 name="email"><br> 
car<input type=text length=60 size=30 name="car"><br> 
phone<input type=text length=60 size=30 name="phone"><br> 
<input type="submit" name="submit" email="add" car="add" phone="add" > 

</form> 

<form action="page.php" method="POST"> 

<input type="checkbox" name="chk[]" value="cars_coffee">Cars & Coffee<br> 
<input type="checkbox" name="chk[]" value="kentucky">Kentucky Derby Party<br> 
<input type="checkbox" name="chk[]" value="july">July 4th<br> 
<input type="checkbox" name="chk[]" value="labor">Labor Day<br> 
<input type="checkbox" name="chk[]" value="new_year">New Years Day<br> 
<input type="checkbox" name="chk[]" value="all" onClick="toggle(this)">Select All<br> 

</form> 
<?php 
mysql_connect("localhost", "db", "pw"); 
mysql_select_db("db"); 
$qh = mysql_query("select * from all_emails order by id desc"); 
if (@mysql_num_rows($qh)) { /* the if(@...) syntax makes PHP supress any 
warnings that might come out of that function. */ 
     /* mysql_fetch_object(query handle); 
     * returns an object whose contents are that of one rotw in the 
database. */ 
     while ($obj = mysql_fetch_object($qh)) { 
       echo " 
<p> 
$obj->email<br> 
$obj->name<br> 
$obj->car<br> 
$obj->phone<br> 
<p> 
<hr> 
"; 
     } 
} 
?> 

</body> 
</html> 

ページinput.phpそのテーブル

に、テキストフィールドの入力を保存しますので、選択されているチェックボックス検索する声明。 PHP

<?php 
mysql_connect("localhost", "db", "pw"); 
mysql_select_db("db"); 
mysql_query("insert into all_emails (name, email, car, phone) values ('".$_POST['name']."','".$_POST['email']."','".$_POST['car']."', '".$_POST['phone']."')"); 
?> 
<html> 
<head> 
<meta http-equiv=refresh content="0; URL=./input.php"> 
</head> 
</html> 

私が試しているif文は次のとおりです。

<?php 
mysql_connect("localhost", "db", "pw"); 
mysql_select_db("db"); 

if(isset($_POST["cars_coffee"])) { 
    $sql = "INSERT INTO cars_and_coffee (name, email, car, phone) values ('".$_POST['name']."','".$_POST['email']."','".$_POST['car']‌​."', '".$_POST['phone']."')"); 
    mysql_query($sql) or die(mysql_error()); 
    } 
    echo "Record is inserted"; 
} 

?> 
+0

私は実際の質問が表示されない、または解決する必要がある問題が表示されますか? – Zak

+1

* "mysqlデータベースに複数のテーブルを作成しましたが、各チェックボックスに1つずつ" * - 真剣に?あなたはこれをやりたいと100%確信していますか?あなたはこれを真剣に考え直すべきです。 –

+0

@Zak私はちょうどeditted、基本的に私はどのようなチェックボックスを選択したかをチェックするためにif文を使用する方法を探しています – mtkilic

答えて

1

こんにちは、次のコードを使用し、私は非常にあなたがmysqliのやPDOを使用することをお勧めします。 mysql関数は廃止され、廃止されました。

あなたのデータベースに挿入する前に、データを浄化して安全にキャストしてください。

注:フォームでは、同じフォームページにリダイレクトしています。適切なPHPファイル名またはルーティングパスを使用してください。次

db_connect.php

$host  = 'localhost'; 
$user  = 'root'; 
$password = 'root'; 
$database = 'skerp'; 


$connection_error = 'Sorry!!! We are experiencing problems with the database settings'; 

$link = mysqli_connect($host, $user, $password, $database) or DIE($connection_error); 

は実装

<?php 

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 
if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    include_once ('db_connection.php'); 

    if(in_array('cars_coffee', $_POST['chk'])){ 
     $emails = mysqli_query($link, "INSERT INTO all_emails (name, email, car, phone) VALUES ('".$_POST['name']."','".$_POST['email']."','".$_POST['car']."', '".$_POST['phone']."')"); 
    }else{ 
    //If it fails then put the condition here or you may skip else part 
     echo 'Not Exists'; 
    } 

    echo '<pre>'; 
    print_r($_POST); 
} 
?> 
<!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <title></title> 
    </head> 
    <body> 
     <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 

    <input type="checkbox" name="chk[]" value="cars_coffee">Cars & Coffee<br> 
    <input type="checkbox" name="chk[]" value="kentucky">Kentucky Derby Party<br> 
    <input type="checkbox" name="chk[]" value="july">July 4th<br> 
    <input type="checkbox" name="chk[]" value="labor">Labor Day<br> 
    <input type="checkbox" name="chk[]" value="new_year">New Years Day<br> 
    <input type="checkbox" name="chk[]" value="all" onClick="toggle(this)">Select All<br> 
    <input type="submit" value="Submit" /> 
     </form> 
    </body> 
</html> 

であることがお役に立てば幸いです。ハッピーコーディング!

+0

私は時間を費やして助けてくれて本当に感謝しています! 1)上記のコードでは、私のmysqlデータベースを接続しますか? 2)私はあなたが目的によってテキストフィールドを残したと仮定しています。テキストフィールドの値はテーブル – mtkilic

+0

@mtkilicに追加したいので、db_connect.phpを作成するか、上記のファイルの上に同様のファイル名とrequire_onceまたはinclude_onceを作成することをお勧めします。ええ、私は接続を行っていませんが、上記の条件の中に置くことができます($ _ SERVER ['REQUEST_METHOD'] == 'POST'){/ /あなたのデータベースに接続} –

+0

私はこれをやったと思います? https://gist.github.com/mtkilic/d1a17321d0a737ddc400bacb1b98a082 – mtkilic

0

チェック・ボックスが選択されているかどうかを確認するには、issetメソッドを使用できます。

注:

if (isset ($_POST ["cars_coffee"])) 
{ 
    // do something 
}  
if (isset ($_POST ["kentucky"])) 
{ 
    // do something else 
} 
... 
+0

これは私が車のテーブルにテキストフィールドを格納する場合は、これは何ですか? $ _ POST ['email']。 "'、'"。$ _ POST ['name']。$ 'POST'。 – mtkilic

+0

私はそれほど強力ではありませんが、あまりにも多くの引用符を使用していると思います。これを試してみてください:$ _POST ['name']、$ _POST ['email']、$ _POST ['car']、$ _POST [ 'phone']) "; ' – IcedAnt

0

チェックボックスを使用してユーザーからデータを取得しているため、ロジックに若干の問題があるようです。ユーザーにチェックボックスを1つだけ選択させたい場合は、ラジオボタンを使用します。それは複数のものを選ぶことができなくなります。私はあなたを正しく理解していないだけで、ユーザーが複数のボックスを選択できるようにしたいのであれば、チェックボックスを使用し続けますが、各チェックボックスの名前属性を一意に変更してください。今のところ、すべてのチェックボックスは同じ名前なので、チェックした最後のチェックボックスだけが読み込まれます。

$sql = ''; 
// make sure that the checkbox is set 
if(isset($_POST['kentucky_checkbox'])){ 
{ 
    $sql += 'INSERT INTO kentucky VALUES ...;'; 
} 
if(isset($_POST['labor_checkbox'])){ 
{ 
    $sql += 'INSERT INTO labor VALUES ...;'; 
} 

etc. 

... 

// execute $sql 

あなたはラジオボタンを使用した場合、ロジックはこのような何かを行くだろう:

ロジックを使用すると、チェックボックスを使用して継続し、各チェックボックスに一意の名前を与えた場合には、このような何かを行くだろう

// make sure that the variable is set 
if(isset($_POST['chk[]'])){ 
{ 
    // check what the value is 
    switch ($_POST['chk[]']) { 
     case 'option1': 
     // set the table 
     $table = 'table1'; 
     break; 
     case 'option2': 
     $table = 'table2'; 
     break; 
     case 'option3': 
     $table = 'table3'; 
     break; 
    } 
} 

... 

$sql = 'INSERT INTO ' . $table . ' VALUES ...'; 
+0

ご指摘ありがとうございますが、私が好きな場合には、それ以上のものを選択できるようにしたいと思います。つまり、選択したチェックボックスからのメールのみを受け取ることになります – mtkilic

関連する問題