2011-06-26 1 views
2

配列を使用してテーブルの値をサーバーに送信しようとしています。サーバー側のPHPファイルでエコーを入れて、私は値が - [値1、値2]などのような形式で渡されていることがわかります。しかし、サーバー側のphpファイルで、Php配列を使って値を取得しようとしているとき、 。クライアントサイドのjavascriptページから配列を受け取る

function saveData(){ 

var req; 
try{ 
// Opera 8.0+, Firefox, Safari 
    req = new XMLHttpRequest(); 
    //document.write("2"); 
    }catch (e){ 
    // Internet Explorer Browsers 
     try{ 
      req = new ActiveXObject("Msxml2.XMLHTTP"); 
     }catch (e){ 
      try{ 
       req = new ActiveXObject("Microsoft.XMLHTTP"); 
      }catch (e){ 
      // Something went wrong 
       alert("Your browser broke!"); 
       return false; 
      } 
     } 
    } 

    req.onreadystatechange = function() { 
    //Is request finished? Does the requested page exist 
    if(req.readyState==4 && req.status==200) { 
     alert(req.responseText); 
     //document.getElementById('editgamediv').innerHTML = req.responseText; 
    } 
} 

var table = document.getElementById('POITable');  
var rowCount = table.rows.length; 
var latArray = [] 
var lngArray = [] 
var id = [] 
var id2=[] 
var levelname = document.getElementById('leveltext'); 
//alert(rowCount); 

for(var i=1; i< rowCount; i++){ 
    latArray[i] = table.rows[i].getElementsByTagName('input')[0].value; 
    lngArray[i] = table.rows[i].getElementsByTagName('input')[1].value; 
    id[i] = levelname+i; 
    id2[i] = levelname+i+i; 

    //alert(lngArray[i]); 
} 


var queryString= "?latArray="+latArray; 
queryString+="&lngArray="+lngArray+"&id="+id+"&id2="+id2+"&levelname="+levelname; 
req.open("GET","http://aiworker2.usask.ca/PasswARGUI1/addLevel_server.php"+queryString,true) //true indicates ASYNCHRONOUS 
req.send(null); 
} 

サーバー側のPHP - -

$dbhost = myHost; 
$dbuser = my User name; 
$dbpass = my Password; 
$dbname = "testGame"; 

    //Connect to MySQL Server 
$link= mysql_connect($dbhost, $dbuser, $dbpass); 


if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
    echo 'Go n Die'; 
} 
else{ 
    echo 'Connected successfully'; 
} 
    mysql_select_db($dbname); 
    //$latArray = array(); 
    $latArray=$_GET['latArray']; 
    $lngArray[]=$_GET['lngArray']; 
    $id[]=$_GET['id']; 
    $id2[]=$_GET['id2']; 
    $levelname = $_GET['levelname']; 

    echo $latArray; 
    $printlatArray[0] = $latArray[0]; 

    echo $printlatArray; 
    for($num = 0; $num< count($latArray) ; $num++){ 

     $sql_zones1 = "INSERT INTO Zones (zone_id, latitude, longitude, tag, relativeAlt, alt, dimension) VALUES 
      ('{$id[$num]}', '{$latArray[$num]}', '{$lngArray[$num]}', '{$levelname[$num]}', '0', '10', '3')"; 

     $sql_zones2 = "INSERT INTO Zones (zone_id, latitude, longitude, tag, relativeAlt, alt, dimension) VALUES 
      ('{$id2[$num]}', '{$latArray[$num]}', '{$lngArray[$num]}', '{$levelname[$num]}', '50', '80','2')"; 

     $sql_transform1 = "INSERT INTO Transform (poiID, rel, angle, scale) VALUES ('{$id[$num]}', 'true', '0', '3')"; 
     $sql_transform2 = "INSERT INTO Transform (poiID, rel, angle, scale) VALUES ('{$id2[$num]}', 'true', '0', '4')"; 

     $sql_object1 = "INSERT INTO Object (poiID, size) VALUES ('{$id[$num]}', '3')"; 
     $sql_object2 = "INSERT INTO Object (poiID, size) VALUES ('{$id2[$num]}', '3')"; 


    } 

    if (!$result_zones1 || !$result_transform1 || !$result_object1 ||!$result_zones2 || !$result_transform2 || !$result_object2) { 
    die('Invalid query: ' . mysql_error()); 
    } 
    else{ 
     echo "success"; 
    @mysql_close($link); 
    return; 
    } 

クライアントのサイズのテーブルが動的である

は、ここに私のクライアントサイドのJS機能です。だから、私は単一の変数に値を入れることさえできません。

がひどく助けが必要:(

答えて

3

をあなたのJavaScriptでは、あなたは、通常のカンマ区切りの文字列に配列に参加する必要があり、そしてPHPで受信したとき、あなたは戻って配列にそれらをexplode()ことができます。

// Javascript 
// Join the arrays into comma-delimited strings 
var latString = latArray.join(","); 
var lngString = lngArray.join(","); 

// Later... 
// PAss them into the querystring as strings: 
var queryString= "?latString="+latString; 
queryString+="&lngString="+lngString+"&id="+id+"&id2="+id2+"&levelname="+levelname; 

//-------------- 
// In PHP, explode them back to arrays: 
$latArray = explode(",", $_GET['latString'); 
$lngArray = explode(",", $_GET['lngString'); 
+0

phpのためのjsonライブラリはありません... – Blindy

+0

@Blindy PHPは 'json_decode()'を持っていますが、OPのコードはすでに単純なGETリクエストで配列の文字列として扱っています。このインスタンスでは、JavaScriptオブジェクトを処理するために必要ではありません。 –

+0

@Micheal ..ありがとうございます。私の人生をaved :) – Pow

関連する問題