Reputation: 181
I am posting an array from javascript using AJAX
$.ajax({
url: "test.php",
type: "POST",
data: {arr:fullData},
success: function (data) {
console.log(data);
document.getElementById("status").innerHTML = data;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus);
alert("Error: " + errorThrown);
}
This is the array:
0: "event=200 Yard Free Style&swimmername=joe fish&lane=1&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=2&swimmername2=joe fish"
1: "event=200 Yard Free Style&swimmername=steve jobs&lane=3&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=4&swimmername2=steve jobs"
2: "event=200 Yard Free Style&swimmername=steve jobs&lane=5&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=6&swimmername2=steve jobs"
length: 3
In PHP, The array comes through like this:
array (size=1)
'arr' =>
array (size=3)
0 => string 'event=200 Yard Free Style&swimmername=joe fish&lane=1&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=2&swimmername2=joe fish' (length=147)
1 => string 'event=200 Yard Free Style&swimmername=steve jobs&lane=3&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=4&swimmername2=steve jobs' (length=151)
2 => string 'event=200 Yard Free Style&swimmername=steve jobs&lane=5&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=6&swimmername2=steve jobs' (length=151)
I have tried using "explode()" but it keeps saying it can't explode an "array"
I am trying to do the following:
$array = $_POST;
var_dump ($array[0]['event'] );
and set the different values to build a sql query like so (in loop):
foreach($_POST as $data)
{
$sql_query = '(';
if(isset($array['event'])){$sql_query .= $array['event'] . ',';}
if(isset($array['event'])){$sql_query .= $array['swimmername'] . ',';}
I am new to PHP and having a tough time figuring it out. Any help will be appreciated.
PHP Code:
<?php
$array = $_POST;
$array1 = $_REQUEST['arr'];
var_dump($array['arr']);
$returnedInfo = explode('&',$array[1]);
// Empty string when using an empty array:
echo ($returnedInfo);
$sql_query = 'INSERT INTO tbl_name
(event,swimmername, lane, place, time, score, )
VALUES ';
$i = 0;
$arrayLength = count($_POST);
var_dump ($arrayLength);
foreach($_POST as $data)
{
$sql_query = '(';
if(isset($data['event'])){$sql_query .= $data['event'] . ',';}
if(isset($data['swimmername'])){$sql_query .= ','. $data['swimmername'] . ',';}
if(isset($data['lane'])){$sql_query .= ','. $data['lane'] . ',';}
if(isset($data['place'])){$sql_query .= ','. $data['place'] . ',';}
if(isset($data['time'])){$sql_query .= ','. $data['time'] . ',';}
if(isset($data['scoreA'])){$sql_query .= ','. $data['scoreA'] . ',';}
if(isset($data['scoreB'])){$sql_query .= ','. $data['scoreB'] . ',';}
if(isset($data['time2'])){$sql_query .= ','. $data['time2'] . ',';}
if(isset($data['lane2'])){$sql_query .= ','. $data['lane2'] . ',';}
if(isset($data['place2'])){$sql_query .= ','. $data['place2'] . ',';}
if(isset($data['swimmername2'])){$name2[] = $data['swimmername2'] . ',';}
$i++;
if($i < $arrayLength) {
$sql_query .= '),';
} else {
$sql_query .= ');';
}
}
// Then use $sql_query for the INSERT step.
?>
Upvotes: 0
Views: 52
Reputation: 3658
Assuming your array looks like this:
array (
'arr' =>
array (
0 => 'event=200 Yard Free Style&swimmername=joe fish&lane=1&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=2&swimmername2=joe fish',
1 => 'event=200 Yard Free Style&swimmername=steve jobs&lane=3&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=4&swimmername2=steve jobs',
2 => 'event=200 Yard Free Style&swimmername=steve jobs&lane=5&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=6&swimmername2=steve jobs',
),
)
...you simply need to loop through it and use something like parse_str (easy) or explode (slightly more work) to transform each string into an array. For example:
# Grab the 'arr' array
$realArray = isset($array['arr']) ? $array['arr'] : array();
foreach ( $realArray as $k => $v ) {
# Quick and painless way to convert to array
parse_str($v, $value);
$realArray[$k] = $value;
}
# Put this into a function called 'debug' to make life easier
echo '<pre>';
var_export($realArray);
echo '</pre>';
Upvotes: 1