2012-08-15 3 views
1

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

Когда я добавляю несколько входных данных, база данных не добавит никакого содержимого.

Я знаю, что мой код близок, но я не понимаю, где именно и что с ним делать.

P.S. - Я еще новичок в этом и учусь ...

Вот что у меня есть

<?php 

$host = 'hostName'; 
$user = 'userName'; 
$password = 'password'; 

$link = mysql_connect($host, $user, $password); 

$selected = mysql_select_db('dbName', $link); 

if(!isset($_POST['text-input'])) 
{ 


echo '<html> 
     <body> 
       <form action="post.php" method="post"> 
         <input type="text" name="text-input" id="text-input" value="Update MyDataColumn" style="width:300px;" /> 
         <input type="submit" value="Submit" /> 
       </form> 
     </body> 
</html>'; } 


else { 
$form_input = $_POST['text-input'] ; 


mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input . '");'); 

echo ' 
<html> 
     <body> 
       <script type="text/javascript"> 
         alert(\'Database now contains: <?php echo $form_input ?>. Redirecting...\'); 
         window.location = \'http://url.com\'; 
       </script> 

     </body> 
</html>'; 
} 
?> 

Я хотел бы разобраться в том, как разместить в многочисленных колонок в пределах одного дб/таблицы.

Хорошо, из ответов ниже я изменил код, чтобы выглядеть следующим образом:

<?php 

       $host = 'dbHost'; 
       $user = 'dbUser'; 
       $password = 'dbPassword'; 

       $link = mysql_connect($host, $user, $password); 

       $selected = mysql_select_db('dbName', $link); 

       if(!isset($_POST['text-input'])) 
       { 


       echo ' 
        <form action="index.php" method="post"> 
         <input type="text" name="text-input" id="text-input" value="Update itemName" style="width:300px;" /> 
         <input type="text" name="text-input2" id="text-input2" value="Update itemDescription" style="width:300px;" /> 
         <input type="text" name="text-input3" id="text-input3" value="Update productID" style="width:300px;" /> 
         <input type="text" name="text-input4" id="text-input4" value="Update itemPrice" style="width:300px;" />  
         <input type="submit" value="Submit" /> 
        </form>' 
        ; } 


       else { 
       $form_input = $_POST['text-input'] ; 
       $form_input2 = $_POST['text-input2'] ; 
       $form_input3 = $_POST['text-input3'] ; 
       $form_input4 = $_POST['text-input4'] ; 


       mysql_query('INSERT INTO `items` (itemName, itemDescription, productID, itemPrice) 
       VALUES ("' . $form_input . '", "' . $form_input2 . '", "' . $form_input3 . '", "' . $form_input4 . '"); 

       echo ' 
       <html> 
         <body> 
           <script type="text/javascript"> 
             alert(\'Database has been updated. Redirecting to previous url.\'); 
             window.location = \'http://url.com\'; 
           </script> 

         </body> 
       </html>'; 
       } 
       ?> 

Что происходит с этим кодом, я получаю ошибку синтаксиса, неожиданный «>»

+0

Вы действительно должны смотреть в PDO. 'mysql_ *' устарел. Кроме того, не нужно делать все это, повторяя. Просто закончите свой тег PHP перед своим HTML, а затем снова запустите php с помощью '

ответ

1

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

HTML:

<form action="post.php" method="post"> 
    <input type="text" name="text-input" id="text-input" value="Update MyDataColumn" style="width:300px;" /> 
    <input type="text" name="text-input2" id="text-input2" value="Update MyDataColumn2" style="width:300px;" /> 
    <input type="text" name="text-input3" id="text-input3" value="Update MyDataColumn3" style="width:300px;" />  
    <input type="submit" value="Submit" /> 
</form> 

PHP:

$form_input = $_POST['text-input'] ; 
$form_input2 = $_POST['text-input2'] ; 
$form_input3 = $_POST['text-input3'] ; 


mysql_query('INSERT INTO `tableName` (columnName, columnName2, columnName3) VALUES ("' . $form_input . '","' . $form_input2 . '","' . $form_input3 . '");'); 
+0

'' '' '' '' '' '' '' '' '' '' '' '' '' должны быть уникальными, потому что для доступа вам нужно '

+0

Это правда, быстро скопировать и вставить задание было быстро. Сделано редактирование. – Jeremy1026

0

В вашем HTML выход нужно добавить еще одно поле, как этот (уже в вашем коде):

<input type="text" name="text-input" id="text-input" 
value="Update MyDataColumn" style="width:300px;" /> 

НО , у него должно быть другое «имя» (!);

<input type="text" name="text-input2" id="text-input2" 
value="Another Input" style="width:300px;" /> 

Теперь мы извлекаем новую переменную ("текст-Input2") из массива $ _POST, как это:

$form_input = $_POST['text-input']; // Your code... 
$form_input2 = $_POST['text-input2']; // for the new input field 

И мы должны изменить команду SQL к этому:

mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input . '"); 
mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input2 . '"); 

Вышеупомянутая команда SQL добавит оба входа в форму как отдельную строку в вашей таблице, они не связаны друг с другом. Чтобы иметь их в одной строке, вам нужно сначала сменить таблицу и добавить к ней еще один столбец. Команда SQL для этого:

ALTER TABLE tableName ADD columnName2 VARCHAR(255); 

Это добавит в таблицу еще один столбец с именем «columName2». И мы, наконец, можно добавить оба значения в одной строке таблицы:

mysql_query('INSERT INTO `tableName` (columnName, columName2) 
VALUES ("' . $form_input . '", "' . $form_input2 . '"); 

Вот это ;-)

 Смежные вопросы

  • Нет связанных вопросов^_^