2012-02-06 51 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