2011-10-24 58 views
0

大家好,希望大家好。我需要你在我遇到的问题上有价值的专业知识。我会尽量在下面解释。php连接到mysql并提交数据

我有一个表格和表格内我有一个“选择一个状态”选项:

<select name="State"> 
<option value="0" selected="selected">Select a State</option> 
<option value="AL">Alabama</option> 
<option value="AK">Alaska</option> 
<option value="AZ">Arizona</option> 
<option value="AR">Arkansas</option> 
    etc..... 
</select> 

当客户选择一个状态,然后点击形式提交按钮,我希望他们能够采取我的MySQL数据库,并从表中选择相关的IP地址。

我在两个字段中创建了一个phpmyadmin内部的表。 第一个是:状态,VARCHAR,30%,主 第二个是:IP,文本

然后我进口,其与下面的格式

状态IP

AL 67.100填充它的CSV文件。 244.74

AK 68.20.131.135

AK 64.134.225.33

等c .......

所以一个例子是:客户填写表格并选择阿拉巴马州作为州。然后他们提交表格,并将表格连接到数据库,在数据库中查看阿拉巴马州(AL)。然后它会从相关部分收集相关信息,并将其提交给我的电子邮件地址以及表单信息(名称,电子邮件等)的其余部分。它还需要随机选择来自阿拉巴马州的IP,因为在数据库中,我有阿拉巴马州(AL)多次,所以它只是选择的阿拉巴马IP的

我希望我做的意义

如果你知道如何人要做到这一点或在哪里可以找到的信息,将不胜感激

感谢您的帮助

阿里


ŧ为了你的全力帮助,并在延误中抱歉。每当我的代码添加到页面中我得到这个错误

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/content/b/o/l/boldbaba406/html/1stop/1vince/test1.php on line 3 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/content/b/o/l/boldbaba406/html/1stop/1vince/test1.php on line 3 

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/content/b/o/l/boldbaba406/html/1stop/1vince/test1.php on line 4 

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/content/b/o/l/boldbaba406/html/1stop/1vince/test1.php on line 5 

我可能做一些非常愚蠢的,但我什么也看不见。任何帮助将是巨大的

阿里

+0

你有任何的代码? – middus

+0

到目前为止,您的CGI程序到底是什么? –

+1

不是一个答案,只是一个普遍的观点,但是......你说'我已经创建了一个包含两个字段的表' - 你是否创建了第三个自动递增索引字段(主键)?作为一般规则,*无论多么简单,每个*表都应该有其中一个,但有一些例外,但它们很少,并且... – DaveRandom

回答

1

假设你的表看起来是这样的:

+-------+---------------+ 
| state |  ip  | 
+-------+---------------+ 
| AL | 67.100.244.74 | 
| AK | 68.20.131.135 | 
| AZ | 64.134.225.33 | 
+-------+---------------+ 

您的脚本可能是这样的:

<select name="State"> 
<option value="0" selected="selected">Select a State</option> 
<option value="AL">Alabama</option> 
<option value="AK">Alaska</option> 
<option value="AZ">Arizona</option> 
<option value="AR">Arkansas</option> 
    etc..... 
</select> 

<?php 
$state = $_POST['State']; // User selected Alaska (AK) so $_POST['State'] = 'AK' 
$query = "SELECT state, ip FROM ipaddresses WHERE state='" . mysql_real_escape_string($state) . "'"; 
$link_resource = mysql_connect($host, $username, $password); 
$db = mysql_select_db($database); 
$result = mysql_query($query, $link_resource); 
$row = mysql_fetch_assoc($result); 

// ip-address belonging to Alaska (AK) turns out to be 68.20.131.135 as it's stored in the same row as AK 
?> 

的IP地址属于AK现在存储在$ row ['ip']中。其他表单字段可以通过使用$ _POST数组来访问,例如$ _POST ['customer_name']如果您的表单有一个名为'customer_name'的输入字段。

更新: 新增数据库连接。这只是一个非常基本的例子,你应该对数据库连接和查询进行一些研究。我建议你立即开始学习MySQLi(MySQL改进的扩展),而不是'普通的'旧的&'MySQL。

0

你可以让MySQL返回一个随机行是这样的:

// Get the state that the user selected 
$selectedState = mysql_real_escape_string($_REQUEST['State']); 

// Build a query 
$query = "SELECT ip 
      FROM table_name 
      WHERE state = '$selectedState' 
      ORDER BY rand() 
      LIMIT 1"; 

// Execute it 
$result = mysql_query($query); 

// Fetch the result as an array 
$row = mysql_fetch_assoc($result); 

// The IP address you want is now stored in $row['ip'] 

最重要的一点是ORDER BY rand() LIMIT 1 - 这是得到的,而不是所有行1个随机匹配行,的部分。