2011-06-13 38 views
3

我想做一个小调查,从数据库名称列表中填充下拉菜单的选择。调查正确地做到了这一点。我想将用户用此名称提交的报价提交到报价数据库中。他们进入该领域的报价文本正常进入,但是,从菜单中选择的名称不会被传入,而是得到一个空白名称字段。HTML/PHP调查没有正确传递到MySQL数据库

我明白我的一些代码不在上下文中,但名称是唯一没有正确传入的东西。

在表单提交,我有这个数据提交到数据库的PHP文件:

<form action="<?php $name = $_POST['name']; include "formsubmit.php";?>" method="post"> 
    <label> <br />What did they say?: <br /> 
    <textarea name="quotetext" rows="10" cols="26"></textarea></label> 
    <input type="submit" value="Submit!" /> 
</form> 

变量$名称来源于此(其中填充我的下拉菜单):

echo "<select name='name'>"; 

    while ($temp = mysql_fetch_assoc($query)) { 
    echo "<option>".htmlspecialchars($temp['name'])."</option>"; 
    }      
echo "</select>"; 

这里是我的formsubmit.php:

<?php: 
    mysql_select_db('quotes'); 
    if (isset($_POST['quotetext'])) { 
      $quotetext = $_POST['quotetext'];         
      $ident = 'yankees'; 
      $sql = "INSERT INTO quote SET 
     quotetext='$quotetext', 
     nametext='$name', 
     ident='$ident', 
     quotedate=CURDATE()"; 
     header("Location: quotes.php"); 
    if (@mysql_query($sql)) { 
    } else { 
     echo '<p> Error adding quote: ' . 
      mysql_error() . '</p>'; 
    } 
    } 
?> 
+0

是什么形式的行动决心Wh是HTML是呈现? – kinakuta 2011-06-13 18:10:45

+0

你在表单标签动作中包含了什么? – 2011-06-13 18:13:05

+0

@G molvi:我包括我的formsubmit.php,我希望在提交表单时执行它。这似乎正确地发生,除了名字根本没有通过。 – tnw 2011-06-13 18:18:14

回答

2

你的表单操作的东西看起来怪异,但无论如何,我认为你遇到的问题有没有设置$名称= $ _ POST [“名”]就像你用$做quotetext =做$ _ POST [ 'quotetext']。在sql语句之前这样做,它应该是很好的去。

编辑试图进一步帮助你,我会包括你的代码的整体结构应该是什么样的,你应该调整到适合你的实际代码(无论你离开了,如设置$查询你的名字选项):

文件1:

<form action="formsubmit.php" method="post"> 
    <label> <br />What did they say?: <br /> 
    <textarea name="quotetext" rows="10" cols="26"></textarea></label> 
    <select name='name'> 
    <?php 
    while ($temp = mysql_fetch_assoc($query)) { 
     echo "<option>".htmlspecialchars($temp['name'])."</option>"; 
    } 
    ?> 
    </select> 
    <input type="submit" value="Submit!" /> 
</form> 

formsubmit.php:

<?php 
    mysql_select_db('quotes'); 
    if (isset($_POST['quotetext'])) { 
     $quotetext = $_POST['quotetext']; 
     $name = $_POST['name']; 
     $ident = 'yankees'; 
     $sql = "INSERT INTO quote SET 
       quotetext='$quotetext', 
       nametext='$name', 
       ident='$ident', 
       quotedate=CURDATE()"; 
     if (@mysql_query($sql)) { 
      header("Location: quotes.php"); 
     } else { 
      echo '<p> Error adding quote: ' . 
       mysql_error() . '</p>'; 
     } 
    } 
?> 
+0

,看看我的帖子中的第一个代码段。 – tnw 2011-06-13 18:21:08

+0

你的表单action =“”应该设置为它要提交的文件,在这种情况下,它应该是form action =“formsubmit.php”。将$ name = $ _POST ['name']移动到您要设置$ quotetext和test的下面一行。 – two13 2011-06-13 18:24:40

+0

我试过这个以及...同样的问题依然存在。 – tnw 2011-06-13 18:38:08

1
echo "<select name='name'>"; 

    while ($temp = mysql_fetch_assoc($query)) { 
    $nyme = htmlspecialchars($temp['name']); 
    echo "<option value='$nyme'>$nyme</option>"; 
    }      
echo "</select>";- 

这样您将收到$ _POST数组中的名称的值

并且您必须从$ _POST数组中获取该值以及您需要更改 代码添加以下行以获取名称你的脚本。

$name = $_POST['name']; 

你需要改变表单的动作标签

<form action='formsubmit.php' .....> 

并在该文件成功插入后,你可以将用户重定向到whereever.php。 所以很有趣,现在在你的代码中解释你所有的一点一滴的变化。

if (@mysql_query($sql)) { 
      header("Location: quotes.php"); 

} else { 
    echo '<p> Error adding quote: ' . 
     mysql_error() . '</p>'; 
} 
+0

我试过了,仍然给我同样的问题。 – tnw 2011-06-13 18:16:58

+0

我已经修复了现在的代码。你在表单action标签中包含了什么? – 2011-06-13 18:17:46

+0

@G molvi:什么是“nyme”?另外,我尝试了这个...仍然没有。 – tnw 2011-06-13 18:22:46

相关问题