MySQLの挿入が取引スクリプトで動作していない

こんにちはみんな、私はRPGを持っています(オンラインロールプレイングゲーム) ユーザーはモンスターをキャッチして、それらを訓練して訓練することができました。しかし、今私は貿易スクリプトを構築するために来ている...

私は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 . ".
"; ?>

 

<?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"; } ?>

 

<?php echo "<form action='tradestore.php' method='POST'>"; while ( $v = mysql_fetch_object( $r ) ) { echo "
"; echo "
"; } echo "<input type='hidden' name='user' value='$username_trade'/>"; echo "<input type='submit' value='Check!!'/>"; ?>

Pick what you want two offer for the pokemon

<?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"; } ?>

<?php echo "<form action='test_process.php' method='POST'>"; while ( $v = mysql_fetch_object( $t ) ) { echo "
"; echo "
"; } 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";

私のDBのIMで取得

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をグライングしていない私は説明するtryied最高です。

DB接続は編集済みです.....

0
すべてのことに勇敢なことがあります... =]
追加された 著者 Grim...,

2 答え

あなたのINSERTステートメントで:

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

これは文字列に連結された配列であり、動作しません。

シリアル化するか、ループして表現を作成することもできますが、データベーススキームを再設計して、複数の値を1つのフィールドに格納しない方が良いでしょう。

1
追加された
もしあなたがする必要があれば、php'd implodeとexplodeを使用してそれを格納する文字列に分解し、検索した後にその文字列を配列に戻すことができます。そして、あなたは正しく投稿されていると確信していますか?
追加された 著者 Max,
大丈夫です、そして、あなたはdbレイアウトがどのようになるべきだと思いますか?
追加された 著者 user1121083,
まあ、ページは、それはそれが動作を停止.....挿入ページにちょうどすべてのモンスターを示していた作品です.....挿入ページに2つのループthoがあります....
追加された 著者 user1121083,

$ dbid ['pokemon']と$ 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";
1
追加された
さて、私はあなたが最初にやりたいことを理解していなかったと思います!あなたは$ pokemoninの$ pokemonのすべてのオファーにすべてのモンスターを提供したいと思う。それですか?
追加された 著者 dxvargas,
もう一度チェックしてください
追加された 著者 dxvargas,
それはtrade_mypokeid "0"を表示しており、trade_pokeidは空白です
追加された 著者 user1121083,
yer私はtrade_pokeidとtrade_fromにそれらのwhatsの両方を保存したい
追加された 著者 user1121083,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com