2013-06-15 2 views
0

Я занимаюсь программированием на PHP. Я сделал регистрационную форму, которая имеетРегистрационная форма - флажок установлен в новые строки в базе данных

2 Text Area (для First Name и Last) 2 радиокнопок (Для выбора пола - не начал работу над этим еще) 8 флажками (по 4 для Предмета и Хобби)

у меня есть таблицы баз данных по имени лиц, который имеет

5 Колонны (FirstName, LastName, Пол, Subject, хобби)

данные из формы в настоящее время неправдоподобным, но каждый флажок вставляется в следующую строку под именем.

Например, Дэвид Бекхэм, читающий текст php asp и hobby tv вместо того, чтобы появляться в одной строке и против имени записи, они появляются в следующей строке.

Поскольку это мой первый раз, мой вопрос

Q1: - Это то, как запись для такой формы должны появиться? Q2: - Если нет, то где/в чем проблема? Q3: - Не могли бы вы помочь мне изменить код радиокниги или предоставить мне легкую ссылку, чтобы узнать его.

HTML FORM

<!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> 
+0

У вас возникли проблемы с чем-то? Кажется, я не совсем понимаю, в чем ваш вопрос. Является ли ваша форма работы и данные фактически вставлены в вашу базу данных? Или это просто вопрос «как он размещен» в вашей базе данных? –

+0

Привет @Fred мой код работает нормально, все, что выбрано, входит в базу данных, но значения из флажка (я) отображаются в следующей строке под именем в таблице, поэтому, если я выбрал 4 флажка, я будет иметь 5 строк, один для имени и четыре для каждого из них. Я не знаю, правильно ли это, как должны отображаться данные или что-то не так, а что? –

+0

ах ок, я вижу. Ну, из того, что я увидел на SO, я сомневаюсь, что это хороший способ сделать это, и я не специалист в этой области. Сначала я бы поставил Google на ваш вопрос, и вы могли бы найти ссылку на (ответный) вопрос здесь, на SO. Я рассмотрю ваш код, чтобы узнать, могу ли я что-то придумать, но не подставляйте меня, приветствуйте. –

ответ

-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_string или mysqli_real_escape_string (если вы используете расширения MySQLi).

+0

-1 Это ** не ** ответ на OP **вопрос**. –

+0

Спасибо за эту Заппу, не могли бы вы рассказать мне, как информация помещается в одну строку таблицы в соответствии с моей формой? Я получаю каждое значение флажка в новой строке в моей таблице :( –

+0

@AbbasAnsari Это не реальный ответ на ваш вопрос. Ваш текущий HTML не имеет отношения к проблеме. –

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> 
Смежные вопросы