2011-10-24 54 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個隨機匹配行,的部分。