2012-02-06 91 views
0

你好男孩和女孩我擁有一個RPG(一個在線角色扮演遊戲) 用戶可以捕捉怪物,並培訓他們和東西。但現在我已經來到建立一個交易腳本...Mysql插入不能在交易腳本

我顯示所有那裏的怪物和其他用戶在1頁上的怪物,但是當他們選擇他們想要什麼,並提供了什麼怪物它不會添加進入數據庫的信息...

因此,我有一個頁面,他們必須輸入他們想要交易的用戶名。

<form name="input" action="tradedo.php" method="get"> 
Username: <input type="text" name="username_trade" /> 
<input type="submit" value="Submit" /> 
</form> 

然後在tradedo.php有怪物顯示,其他用戶怪物搶,他們可以選擇他們想要什麼,有什麼,爲他們...

session_start(); 

mysql_connect("localhost", "blah", ""); 
mysql_select_db(""); 



$username_trade = $_POST['username_trade']; 



$_SESSION['username_trade'] = $username_trade ; 

echo "You put in id ". $username_trade . ".<br />"; 



?> 
</p> 
<p>&nbsp;</p> 
<p><span class="mid_box"> 
    <?php 
         // get and display userbox 
         $q = "SELECT id,pokemon,exp,level FROM user_pokemon WHERE belongsto='". $_SESSION['username_trade']."'"; 
         $r = mysql_query($q); 

         if (mysql_num_rows($r) <= 0) { 
          echo "You have no current pokemon stored"; 

         } 
        ?> 

</span></p> 
<p>&nbsp;</p> 

<p> 
    <?php 
echo "<form action='tradestore.php' method='POST'>"; 
while ($v = mysql_fetch_object($r)) 
{ 
    echo "<label><input type='checkbox' name='pokemon[]' value='$v->dbid'/> They have a $v->pokemon </label><br/>"; 
     echo "<label> Level $v->level  </label><br/>"; 
} 
echo "<input type='hidden' name='user' value='$username_trade'/>"; 
echo "<input type='submit' value='Check!!'/>"; 
?> 
</p> 
<p><strong>Pick what you want two offer for the pokemon </strong></p> 
<p> 
    <?php 
         // get and display userbox 
         $q = "SELECT id,pokemon,exp,level FROM user_pokemon WHERE belongsto='". $_SESSION['username']."'"; 
         $t = mysql_query($q); 

         if (mysql_num_rows($t) <= 0) { 
          echo "You have no current pokemon stored"; 

         } 
        ?> 
</p> 
<p> 


    <?php 
echo "<form action='test_process.php' method='POST'>"; 
while ($v = mysql_fetch_object($t)) 
{ 
    echo "<label><input type='checkbox' name='pokemonin[]' value='$v->dbid'/> I have a $v->pokemon</label><br/>"; 
    echo "<label> Level $v->level  </label><br/>"; 
} 
echo "<input type='hidden' name='userin' value='$username'/>"; 
echo "</form>"; 

這個偉大的工程。 ......它顯示了所有的怪物,一切是偉大的,但現在我需要插入他們,這裏是插入頁面

session_start(); 

mysql_connect("localhost", "blahhhhhhhhhhh", ""); 
mysql_select_db(""); 



$pokemon = $_POST['pokemon']; 
$pokemonin = $_POST['pokemonin']; 
$meid = $_SESSION['username']; 
$toid = $_POST['user']; 
$dbid = array(); 
$dbid2 = array(); 

foreach ($pokemon as $poke) 
{ $dbid['pokemon'][] = $poke; 

} 

foreach ($pokemonin as $poke2) 
{ $dbid2['pokemonin'][] = $poke2; 


} 




srand ((double) microtime()*1000000); 
$random_number = rand(); 
echo "$random_number"; 


    mysql_query("INSERT INTO trade (trade_id, trade_to, trade_from, trade_pokeid, trade_mypokeid) 
          VALUES ('$random_number','".$toid."', '".$meid."', '".$dbid['pokemon']."', '".$dbid2['pokemonin']."');") or die("Error: ". mysql_error()); 



echo"Done"; 

在我的數據庫即時得到

trade_id = 1977949793(works) 
trade_to = 
trade_from = admin (works) 
trade_pokeid = Array (no monster ids ???) 
trade_mypokeid = Array(no monster ids ???) 

是腳本用於插入怪物ID有1,4,5,7然後id抓住他們,並顯示他們在交易接受頁面..但不是它只是添加數組,甚至沒有抓住trade_to我試着解釋我能做到的最好。

和DB連接我已經編輯了.....

+0

有強大的熟悉這一切...一些=] – 2012-02-07 09:46:31

回答

1

在你的INSERT語句:

... '".$dbid['pokemon']."' 

這是串聯爲一個字符串數組,將無法正常工作。

你可以序列,或通過其循環,並創造一定的代表性,但它會更好地重新設計數據庫方案,這樣你就不會多值存儲在一個字段...

+0

確定,您怎麼看分貝佈局應該是怎樣的? – user1121083 2012-02-06 16:40:54

+0

如果必須,您可以使用php'd implode並將其分解爲一個字符串進行存儲,並在檢索後將該字符串拆分回數組。而且,你確定它正確地發佈了嗎? – Max 2012-02-06 16:41:27

+0

那麼頁面的工作原理是它顯示所有插入頁面上的所有怪物停止工作.....插入頁面上有2個循環tho ...... – user1121083 2012-02-06 16:51:16

1

$ DBID [「口袋妖怪']和$ dbid2 ['pokemonin']是數組,所以當你連接它們時,它們會轉向一個字符串,其值爲「Array」。

不顧安全或性能,這應該工作:

session_start(); 

mysql_connect("localhost", "blahhhhhhhhhhh", ""); 
mysql_select_db(""); 

$pokemon = $_POST['pokemon']; 
$pokemonin = $_POST['pokemonin']; 
$meid = $_SESSION['username']; 
$toid = $_POST['user']; 

foreach ($pokemon as $poke) 
{ 
    foreach ($pokemonin as $poke2) 
    { 
     srand ((double) microtime()*1000000); 
     $random_number = rand(); 
     echo "$random_number"; 

     mysql_query("INSERT INTO trade (trade_id, trade_to, trade_from, trade_pokeid, trade_mypokeid) 
    VALUES ('$random_number','".$toid."', '".$meid."', '".$poke."', '".$poke2."');") or die("Error: ". mysql_error()); 

    } 
} 

echo "Done"; 
+0

這是顯示trade_mypokeid「0」和trade_pokeid是空白 – user1121083 2012-02-06 16:58:09

+0

好吧,我想我不明白你想要做的第一件事!你想給$ pokemon中的所有怪物提供$ pokemonin中的所有優惠。是嗎? – dxvargas 2012-02-06 18:41:16

+0

你我想在trade_pokeid和trade_from – user1121083 2012-02-06 19:55:50