0

我正在练习 PHP 编程。我已经制作了一份注册表,其中包含

2 个文本区域(用于名字和姓氏) 2 个单选按钮(用于性别选择 - 尚未开始工作) 8 个复选框(主题和爱好各 4 个)

我有一个人名的数据库表

5 列(名字、姓氏、性别、主题、爱好)

正在获取表单中的数据,但每个复选框都插入到名称下方的下一行中。

例如 David Bekham 的主题 php asp 和 hobby tv reading 而不是出现在同一行并针对记录的名称,它们出现在下一行。

因为这是我第一次,所以我的问题是

Q1 :- 这种表格的记录应该如何出现?Q2 :- 如果不是,那么问题出在哪里/是什么?Q3 :- 你能帮我单选按钮代码还是给我一个简单的链接来学习它。

HTML 表格

<!DOCTYPE>
<html>
<head>

<title>Insert Data</title>
</head>

<body>
<h1> Insert to Register </h1>


<form name="form1" method="post" action="insert.php" >
<fieldset>
<legend> Registration Form </legend> 

FirstName <input type="text" name="a" value="Enter firstname"/>
<br/><br/>
LastName <input type="text" name="b" value="Enter lastname"/>
<br/><br/>



<h3> Gender selection </h3>
Male <input type="radio" name="gender"/> female <input type="radio" name="gender"/>
<br/><br/>


<h3> Subject selection </h3>
<input type="checkbox" name="sb[]" value="php"/> PHP 
<br/>
<input type="checkbox" name="sb[]" value="asp"/> ASP.NET 
<br/>
<input type="checkbox" name="sb[]" value="html"/> HTML 
<br/>
<input type="checkbox" name="sb[]" value="css"/> CSS 
<br/><br/>


<h3> Hobbies selection </h3>
<input type="checkbox" name="hb[]" value="tv"/> Tv 
<br/>
<input type="checkbox" name="hb[]" value="pc"/> Computer  
<br/>
<input type="checkbox" name="hb[]" value="book"/> Reading books 
<br/>
<input type="checkbox"  name="hb[]" value="games"/> Games 
<br/><br/>
<input type="submit" name="submit" value="Submit"/>

</fieldset>

</form>

</body>
</html>

.php 文件

<!DOCTYPE>
<html>
<head>

<title>Processing_Insert_main</title>
</head>

<body>

<?php

// =============== code for Connection_SQLi ==============================      

$con=mysqli_connect("localhost","root","","Ismat_db");
//check connection
if(mysqli_connect_errno())
{
echo "Cannot connect to mysqli:" . mysqli_connect_error();
}

// =============== code for Submit_input type ================================

if(isset($_POST['submit']))
{

// ========== code for Name_TextArea ===============        

$sqlta = "INSERT INTO persons(FirstName,LastName)VALUES ('$_POST[a]','$_POST[b]')";

if (!mysqli_query($con,$sqlta))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "record added for name<br/>";


  // ====== code for subject_checkbox ================  
$s = $_POST['sb'];
$how_many=count($s);

for($i=0;$i<$how_many;$i++)
{
    echo "You Selected: " .$s[$i]."<br/>";

    if(!mysqli_query($con,"INSERT INTO persons(Subject) VALUES('$s[$i]')"))
    {
        echo "Not Recorded".mysqli_error($con);
    }
    echo "Record Added for subject<br/>";
}

   // ============ Code for Hobbies_checkbox ========================   
$h = $_POST['hb'];
$how_many=count($h);

for($i=0;$i<$how_many;$i++)
{
    echo "You Selected: " .$h[$i]."<br/>";

    if(!mysqli_query($con,"INSERT INTO persons(Hobbies) VALUES('$h[$i]')"))
    {
        echo "Not Recorded".mysqli_error($con);
    }
    echo "Record Added for Hobby<br/>";
}

     //============================================================

   echo '<br/>'.'<a href="insert_main.html">'. "Back" . '</a>'; 

   }

   ?>
   </body>
   </html>
4

2 回答 2

0
$gender=$_POST['gender'];
$chkhobby=implode(',',$_POST['chkhobby']);
<tr>
                        <th>Gender</th>
                        <td>
                            Male<input type="radio" name="gender" checked="checked" value="1">
                            Female<input type="radio" name="gender" checked="checked" value="0">

                        </td>
                </tr>
                <tr>
                        <th>Hobbies</th>
                        <td>
                            read<input id="check_1" type="checkbox" name="chkhobby[]" value="read">
                            write<input id="check_2" type="checkbox" name="chkhobby[]" value="write">
                            play<input id="check_4" type="checkbox" name="chkhobby[]" value="play"> 
                        </td>
                </tr>
于 2016-08-11T08:46:08.317 回答
-1

你的表是如何构成的?我需要查看能够为您提供实际查询的结构,但在我看来,您将每个值作为单独查询的一部分插入到数据库中(这将始终导致在数据库中插入单独的行) . 如果您将人员的名字、姓氏、爱好和运动等存储在表的一行中,您需要执行查询并将值插入 1 个查询而不是单独的查询。因此,如果您目前正在做:

"INSERT INTO persons(FistName, LastName)VALUES ('$_POST[a]','$_POST[b]')";
"INSERT INTO persons(Subject) VALUES('$s[$i]')"
"INSERT INTO persons(Hobbies) VALUES('$h[$i]')"

你应该这样做:

"INSERT INTO persons(FistName, LastName, Subject, Hobbies) VALUES('$_POST[a]','$_POST[b]','$s[$i]','$h[$i]')"

此外,对于具有文本阅读器等的人来说,为了正确的 HTML 标准合规性、可读性和可访问性等,您应该将每个输入的文本作为标签插入。所以我的意思是,而不是:

<input type="checkbox" name="sb[]" value="php"/> PHP 
<br/>
<input type="checkbox" name="sb[]" value="asp"/> ASP.NET

你应该使用:

<input type="checkbox" name="sb[]" id="checkbox_php" value="php"/><label for="checkbox_php">PHP</label> 
<br/>
<input type="checkbox" name="sb[]" id="checkbox_asp" value="asp"/><label for="checkbox_asp">ASP.NET</label>

然后,您可以使用 CSS 根据需要排列标签和复选框(浮动等)。为了使复选框正确显示并与其标签垂直对齐,我通常使用表格。这并不理想(因为它不是表格的预期用途),但它解决了某些浏览器中这些项目的垂直对齐的跨浏览器问题(和较旧的浏览器问题),并将标签与复选框保持在同一行本身。例如:

<table>
<tr>
<td><input type="checkbox" name="sb[]" id="checkbox_php" value="php"/></td>
<td><label for="checkbox_php">PHP</label></td>
</tr>
</table>

附带说明一下,您的代码很容易受到 SQL 注入的攻击。您应该阅读有关mysql_real_escape_stringmysqli_real_escape_string的信息(如果您使用 MySQLi 扩展)。

于 2013-06-15T22:50:57.727 回答