2012-04-12 7 views
0

少し問題があります。私はPHPでいくつかの配列を別のチーム名で持っています。各配列には特定のリーグのチームが含まれています。追加ボタンをクリックすると、カレンダーに新しいエントリを追加するオプションが表示されます。私はドロップダウンしてそのリーグのチームだけを持って欲しい。追加ボタンのonclick私は、どの分割がクリックされたかを知るjavascript関数を呼び出します。しかし、私はPHPの配列のいずれかを渡す必要が表示するチームの情報をjavascriptを与えるために。私が抱えている問題は、どのリーグjavascriptがオンになっているかに応じて、どの配列がjavascriptに渡されるかをphpに伝えることです。リーグを追加するオプションがあり、リーグが追加されるたびにより多くのコードでコードする必要があるため、配列を自分で指定する必要はありません。サイトのポイントは動的です。PHP javascriptとPHPとの競合が発生する

ここにいくつかのコードがあります。

for ($i = 0;$i<$sizeof($leaguesarray);$i++){ 
    $htmlimploded[$i] = implode($html[$i]); 
} 

ここで私はemplodeを使用して、すべてのPHP配列をjavascriptで読むことができます。

for (var h = 0; h<size; h++){ // goes through every league 
    if(h == leaguenum){ // finds the league for the clicked add button 
     // this is the line that I have trouble with I can't think of 
     //anyway of telling it which array to use since it is serverside code. 
     var myarray = ["<? echo $htmlimploded[]?>"]; 
    } 
} 

上記のJavascriptコード。

+0

各リーグに割り当てられた一意の識別子は、いずれかの配列のキーでもありませんか? – prodigitalson

+0

私はそう信じません。いずれにせよ、私はそれをまだ指定しなければならない。私は自分のアプローチを変更してフォームにデータを渡し、新しいパラメータでページをリフレッシュしてJavaScriptを取り除かなければならないと思っています。 – user541597

+0

これは可能ですが、各リーグを一意に参照する方法が必要です。なぜあなたはデータベースを使用していないのですか? – prodigitalson

答えて

0

インプリメンテーションは動作しますが、なぜjson_encode($ array)を使用しないのですか? PHPの配列をjavascriptのオブジェクトや配列に変換するのが簡単です。あなたのようなものがある場合:

$all_teams = array('league1'=>$league1, 'league2'=>$league2); 

JavaScriptオブジェクトにそれをエンコードし、あなたのJSにそれを印刷:

$encoded = json_encode($all_teams); 
print 'var teamObject = '.$encoded.';'; 

場合

$league1 = array('team1', 'team2'); 
$league2 = array('team3, 'team4') ; 

を次にこれらの多次元連想配列を作りますconsole.log(teamObject)に次のようなメッセージが表示されました:

{"league1": ["team1", "team2"], "league2": ["team3", "team4"]} 

複雑に見えますが、今すぐあなたは非常に簡単にあなたが望む配列を引き出すことができます。リーグ1の配列はteamObject.league1であり、league2の配列はteamObject.league2であり、以下同様です。

0

私は次のコードで何か逃したと思う:右することにより

var myarray = ["<? echo $htmlimploded[]?>"]; 

を、それがあるべき:

PHPはリーグの名前とチームを知っているとJavaScriptことと仮定すると
var myarray = ["<?php echo $htmlimploded[]?>"]; 
0

クリックされたリーグ名を知っています。チーム名の配列を、プロパティの名前としてリーグのオブジェクト内にラップすることができます。

<?php 
$arr = array("League1" => array("Team 1", "Team 2"), 
      "League2" => array("Team 3", "Team 4") 
     ); 
?> 
var obj = {}; 
<?php foreach ($arr as $k => $v): ?> 
obj.<?php echo $k; ?> = ["<?php echo implode('","', $v); ?>"]; 
<?php endforeach; ?> 

ユーザーがリーグを選択すると、そのオブジェクトのプロパティ(リーグ名)の配列をループすることができます。

clickedLeague = "League1"; 
for (var i = 0; i < obj[clickedLeague].length; i++) 
{ 
    console.log(obj[clickedLeague][i]); // Logs the team name to console 
} 
関連する問題