2012-04-12 13 views
0

Ich habe ein kleines Problem. Ich habe mehrere Arrays in PHP mit verschiedenen Teamnamen. Jedes Array enthält Teams einer bestimmten Liga. Wenn ich auf eine Schaltfläche zum Hinzufügen klicke, kann ich einen neuen Eintrag zum Kalender hinzufügen. Ich möchte, dass das Drop-Down nur die Teams für diese Liga hat. Klicken Sie auf die Schaltfläche Hinzufügen, um eine JavaScript-Funktion aufzurufen, die weiß, auf welche Division geklickt wurde. Um jedoch dem Javascript die Information zu geben, welche Teams angezeigt werden sollen, muss ich eines der PHP-Arrays übergeben. Das Problem, das ich habe, sagt PHP, welches Array zu javascript übergeben wird, abhängig davon, welche Liga Javascript ist. Ich möchte das Array nicht selbst spezifizieren, da es eine Option gibt, eine Liga hinzuzufügen, und dies würde bedeuten, dass jedes Mal, wenn eine Liga hinzugefügt wird, mehr Code programmiert werden muss. Der Punkt der Website ist dynamisch.PHP Javascript Konflikt mit der Weitergabe von Javascript zu PHP

Hier ist ein Code.

Hier habe ich emplode verwendet, um alle meine PHP-Arrays in JavaScript lesbar zu machen.

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-Code oben.

+0

Haben Sie nicht jeder Liga eine eindeutige Kennung zugewiesen, die auch in einem Ihrer Arrays der Schlüssel wäre? – prodigitalson

+0

Ich glaube nicht. Wie auch immer, ich würde es immer noch spezifizieren müssen. Ich denke, ich werde nur meinen Ansatz ändern und die Daten einfach an ein Formular übergeben und die Seite mit den neuen Parametern aktualisieren und Javascript entfernen. – user541597

+0

Nun, Sie können das tun, aber Sie sollten eine Möglichkeit haben, jede Liga eindeutig zu referenzieren. Warum verwenden Sie keine Datenbank? – prodigitalson

Antwort

0

Imploding funktioniert, aber warum nicht json_encode ($ array)? Es ist eine einfachere, eingebaute Möglichkeit, PHP-Arrays in Javascript-Objekte oder -Arrays umzuwandeln. Wenn Sie so etwas wie haben:

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

Dann ein mehrdimensionales assoziatives Array davon machen:

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

kodieren sie in ein Javascript-Objekt und drucken Sie es in Ihre JS:

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

Wenn Wenn Sie console.log (teamObject) würden, würden Sie Folgendes sehen:

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

Sieht kompliziert aus, aber jetzt können Sie das gewünschte Array ganz einfach herausziehen. Das League-1-Array ist teamObject.league1 und das League2-Array ist teamObject.league2 und so weiter.

0

Ich glaube, Sie etwas in den folgenden Code verpasst:

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

von rechts, sollte es sein:

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

Unter der Annahme, dass PHP die Namen der Ligen kennt und die Teams und JavaScript kennt den Namen der Liga, auf den geklickt wurde. Sie können die Arrays der Teamnamen innerhalb eines Objekts mit der Liga als Name der Eigenschaft umbrechen.

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

Dann, wenn ein Benutzer wählt einen Liga, können Sie eine Schleife durch die Anordnung von der Eigenschaft des Objekts (die der Liganame ist).

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