How to sum data of row has same id - php

My query :
"SELECT sent_who, sent_amount FROM game1 ORDER BY sent_who ASC;"
Output :
array (size=4)
0 =>
array (size=4)
'sent_who' => string '1' (length=1)
0 => string '1' (length=1)
'sent_amount' => string '1' (length=1)
1 => string '1' (length=1)
1 =>
array (size=4)
'sent_who' => string '2' (length=1)
0 => string '2' (length=1)
'sent_amount' => string '1' (length=1)
1 => string '1' (length=1)
2 =>
array (size=4)
'sent_who' => string '2' (length=1)
0 => string '2' (length=1)
'sent_amount' => string '1' (length=1)
1 => string '1' (length=1)
3 =>
array (size=4)
'sent_who' => string '2' (length=1)
0 => string '2' (length=1)
'sent_amount' => string '1' (length=1)
1 => string '1' (length=1)
What i want :
array (size=4)
0 =>
array (size=4)
'sent_who' => string '1' (length=1)
0 => string '1' (length=1)
'sent_amount' => string '1' (length=1)
1 => string '1' (length=1)
1 =>
array (size=4)
'sent_who' => string '2' (length=1)
0 => string '2' (length=1)
'sent_amount' => string '3' (length=1)
1 => string '1' (length=1)
I want to merge same sent_who in array, also sum sent_amount in same array.
If i use GROUP BY instead of ORDER BY it works for sent_who, but it doesnt give sum of sent_amount

Try this:
SELECT sent_who, SUM(sent_amount) as total_sent_amount
FROM game1
GROUP BY sent_who
ORDER BY sent_who ASC
Using SUM(sent_amount) will sum all the values of sent_amount for the specific sent_who which we grouped using GROUP BY sent_who.
So you will get the array as you expect.

Related

Disallowed Key Characters in Codeigniter 2

I'm getting this error while submitting my form. Have read similar questions but couldn't find my problem.
I just disabled '_clean_input_keys' function temporarily and printed the $_POST to see what's wrong. but could not see anything weird.
Where should I search for this disallowed character?
This is my $_POST:
array (size=67)
'Naam' => string '1' (length=1)
'NaamKhanevadegi' => string '1' (length=1)
'NaamPedar' => string '1' (length=1)
'Shenasname' => string '1' (length=1)
'CodeMelli' => string '1111111222' (length=10)
'TarikhTavalodDay' => string '10' (length=2)
'TarikhTavalodMonth' => string '10' (length=2)
'TarikhTavalodYear' => string '1361' (length=4)
'Jensiat' => string '1' (length=1)
'MahalTavalod' => string '1' (length=1)
'Khedmat' => string '1' (length=1)
'SerialShenasname' => string '222222' (length=6)
'Taahol' => string '1' (length=1)
'SarparastHastam' => string '1' (length=1)
'TedadeTakafol' => string '2' (length=1)
'Ghad' => string '2' (length=1)
'Jesmani' => string '1' (length=1)
'Vazn' => string '2' (length=1)
'SabegheBimari' => string '1' (length=1)
'SabegheBime' => string '1' (length=1)
'Bimegar' => string '1' (length=1)
'BimeShode' => string '1' (length=1)
'ShomareBime' => string '2' (length=1)
'BimeDay' => string '28' (length=2)
'BimeMonth' => string '8' (length=1)
'BimeYear' => string '8' (length=1)
'ShoruMostamariDay' => string '8' (length=1)
'ShoruMostamariMonth' => string '8' (length=1)
'ShoruMostamariYear' => string '1360' (length=4)
'BimeBikari' => string '1' (length=1)
'PayanMostamariDay' => string '8' (length=1)
'PayanMostamariMonth' => string '8' (length=1)
'PayanMostamariYear' => string '1360' (length=4)
'Isargari' => string '1' (length=1)
'NameHemayati' => string '1' (length=1)
'PostalCode' => string '1212121212' (length=10)
'Tel' => string '' (length=0)
'Mobile' => string '09090909090' (length=11)
'Email' => string '' (length=0)
'Address' => string '' (length=0)
'MarjaNaam' => string '' (length=0)
'MarjaTel' => string '0909090909' (length=10)
'MarjaMobile' => string '09090909090' (length=11)
'Savad' => string '5' (length=1)
'Reshte' =>
array (size=5)
0 => string '0' (length=1)
1 => string '0' (length=1)
2 => string '0' (length=1)
3 => string '0' (length=1)
4 => string '0' (length=1)
'Moadel' =>
array (size=5)
0 => string '' (length=0)
1 => string '' (length=0)
2 => string '' (length=0)
3 => string '' (length=0)
4 => string '' (length=0)
'NoeDaneshgah' =>
array (size=4)
0 => string '1' (length=1)
1 => string '1' (length=1)
2 => string '1' (length=1)
3 => string '1' (length=1)
'Mokaleme' =>
array (size=1)
''.$i.'' => string '1' (length=1)
'Neveshtan' =>
array (size=1)
''.$i.'' => string '1' (length=1)
'ZabanTasalot' =>
array (size=1)
''.$i.'' => string '0' (length=1)
'NoeMaharat' =>
array (size=1)
0 => string '' (length=0)
'DarajeMaharat' =>
array (size=1)
0 => string '' (length=0)
'Gavahiname' =>
array (size=3)
0 => string '1' (length=1)
1 => string '10' (length=2)
2 => string '11' (length=2)
'NaameMoasese' =>
array (size=1)
0 => string '' (length=0)
'SabegheJobTitle' =>
array (size=1)
0 => string '0' (length=1)
'SabegheKar' =>
array (size=1)
0 => string '' (length=0)
'DarkhastiJobTitle' =>
array (size=1)
0 => string '0' (length=1)
'NoeEstekhdam' => string '1' (length=1)
'ShahreDarkhasti1' => string '' (length=0)
'ShahreDarkhasti2' => string '' (length=0)
'ShahreDarkhasti3' => string '' (length=0)
'KhodEshteghali' => string '2' (length=1)
'Kharej' => string '2' (length=1)
'Keshvar1' => string '' (length=0)
'Keshvar2' => string '' (length=0)
'Comment' => string '' (length=0)
'Tamas' => string '1' (length=1)
I found it!
That little $ in $i made the problem.
I forgot some php tag there.
In most of the cases when you have a existing software and you are trying to deploy in a new enviroment this kind of error should be caused by the PHP property
short_open_tag
Check if you have enabled in your new enviroment. In other words PHP couldn't read the tags in your code.

Join even on rows that are not in the first table

I have two subqueries on which I am doing a join, first one returns following data:
array (size=110)
0 =>
array (size=3)
'scans' => string '7' (length=1)
'bonus_points' => string '0' (length=1)
'date' => string '2017-06-13' (length=10)
second one:
array (size=21)
0 =>
array (size=2)
'redeems' => string '1' (length=1)
'date' => string '2017-06-13' (length=10)
1 =>
array (size=3)
'redeems' => string '1' (length=1)
'date' => string '2017-06-15' (length=10)
If I do a left join on those two like so:
LEFT JOIN query2 ON query2.date=query1.date;
I get:
array (size=110)
0 =>
array (size=4)
'scans' => string '7' (length=1)
'redeems' => '1'
'bonus_points' => string '0' (length=1)
'date' => string '2017-06-13' (length=10)
Row with the date 2017-06-15 gets lost as the second query doesnt have the match with the first.
How can I get both rows returned? Like so:
array (size=110)
0 =>
array (size=4)
'scans' => string '7' (length=1)
'redeems' => '1'
'bonus_points' => string '0' (length=1)
'date' => string '2017-06-13' (length=10)
1 =>
array (size=4)
'scans' => null
'redeems' => '1'
'bonus_points' => null
'date' => string '2017-06-15' (length=10)

unset particular row in multidimensional array

I am creating a online shopping website in php. In the add to cart process a user adds the product details and quantity in the session using the multidimensional array.
If the user want to remove a particular product from the cart list they can remove it using the (X)mark.
I have the following array stucture:
array (size=8)
'id' =>
array (size=4)
0 => string '1' (length=1)
1 => string '2' (length=1)
2 => string '3' (length=1)
3 => string '2' (length=1)
'pwidth' =>
array (size=4)
0 => string '1' (length=1)
1 => string '5' (length=1)
2 => string '9' (length=1)
3 => string '5' (length=1)
'pheight' =>
array (size=4)
0 => string '2' (length=1)
1 => string '6' (length=1)
2 => string '10' (length=2)
3 => string '6' (length=1)
'pdepth' =>
array (size=4)
0 => string '3' (length=1)
1 => string '7' (length=1)
2 => string '11' (length=2)
3 => string '7' (length=1)
'handel' =>
array (size=4)
0 => string 'no' (length=2)
1 => string 'no' (length=2)
2 => string 'yes' (length=3)
3 => string 'no' (length=2)
'quantity' =>
array (size=4)
0 => string '4' (length=1)
1 => string '8' (length=1)
2 => string '12' (length=2)
3 => string '8' (length=1)
'add' =>
array (size=4)
0 => string 'Add to Cart' (length=11)
1 => string 'Add to Cart' (length=11)
2 => string 'Add to Cart' (length=11)
3 => string 'Add to Cart' (length=11)
'count' => int 4
If the user removes a product from the array, the rest of the list should automatically align from the top. please help me to know the concept. Thank you
When you click your (X) mark to delete/remove product from cart, at that time you can get that product's array key. Now you know that this key is unique as (i hope you are using the same key to store that products data in all arrays) in all other arrays i.e. id,pwidth, etc.., You can unset($key) that key from all the arrays and than can do array_values($array) to reindex the arrays.

PHP Set Array Key to Value Inside that Array [duplicate]

This question already has answers here:
How do you reindex an array in PHP but with indexes starting from 1?
(12 answers)
Closed 7 years ago.
I have an array which looks like (var_dump):
array (size=3)
0 =>
array (size=8)
'id' => string '1' (length=1)
'user_id' => string '64' (length=2)
'level' => string '1' (length=1)
'score' => string '9999' (length=4)
't1' => string '1' (length=1)
't2' => string '0' (length=1)
't3' => string '0' (length=1)
'attempts' => string '1' (length=1)
1 =>
array (size=8)
'id' => string '2' (length=1)
'user_id' => string '64' (length=2)
'level' => string '2' (length=1)
'score' => string '123456789' (length=9)
't1' => string '1' (length=1)
't2' => string '1' (length=1)
't3' => string '0' (length=1)
'attempts' => string '4' (length=1)
2 =>
array (size=8)
'id' => string '3' (length=1)
'user_id' => string '64' (length=2)
'level' => string '3' (length=1)
'score' => string '123456789' (length=9)
't1' => string '1' (length=1)
't2' => string '1' (length=1)
't3' => string '0' (length=1)
'attempts' => string '7' (length=1)
How can I change the key 0, 1, 2 etc.. to be the value of level inside that array?
For example:
1 =>
array (size=8)
'id' => string '1' (length=1)
'user_id' => string '64' (length=2)
'level' => string '1' (length=1)
'score' => string '9999' (length=4)
't1' => string '1' (length=1)
't2' => string '0' (length=1)
't3' => string '0' (length=1)
'attempts' => string '1' (length=1)
2 =>
array (size=8)
'id' => string '2' (length=1)
'user_id' => string '64' (length=2)
'level' => string '2' (length=1)
'score' => string '123456789' (length=9)
't1' => string '1' (length=1)
't2' => string '1' (length=1)
't3' => string '0' (length=1)
'attempts' => string '4' (length=1)
3 =>
array (size=8)
'id' => string '3' (length=1)
'user_id' => string '64' (length=2)
'level' => string '3' (length=1)
'score' => string '123456789' (length=9)
't1' => string '1' (length=1)
't2' => string '1' (length=1)
't3' => string '0' (length=1)
'attempts' => string '7' (length=1)
I have already tried renaming the key inside a forloop, that did not replace only the key, but instead, it replaced the whole array and left it blank.
Thanks
$arr = [ ['id'=>1], ['id'=>2], ['id'=>3]];
$new = [];
foreach($arr as $item)
$new[$item['id']] = $item;
print_r($new);
result
Array (
[1] => Array ( [id] => 1)
[2] => Array ( [id] => 2)
[3] => Array ( [id] => 3)
}

Return Values of Entire Table Using PDO

I want to run what I thought was going to be a simple query.
I want to return a database table just the values) in the same 2D style it is written in into $data[i][k]
I am using PHP's PDO, and the closest I have been able to get is:
$result=$database->query("SELECT * FROM `garage_statistics`",$bind = null,$fetch = 'FETCH_COLUMN');
$this->statement = $this->pdo->prepare($query);
$result = $this->statement->fetchAll(PDO::FETCH_COLUMN,1);
Which returns
0 => string 'Garage2' (length=1)
1 => string 'Garage3' (length=7)
2 => string 'Garage4' (length=7)
3 => string 'Garage6' (length=7)
4 => string 'Garage7' (length=7)
However I can't get it to loop for all the columns. I tried fetchall and got back:
array (size=10)
0 =>
array (size=14)
'name' => string 't' (length=1)
0 => string 't' (length=1)
'tablename' => string 't' (length=1)
1 => string 't' (length=1)
'numfloors' => string '3' (length=1)
2 => string '3' (length=1)
'status' => string '4' (length=1)
3 => string '4' (length=1)
'numspots' => string '0' (length=1)
4 => string '0' (length=1)
'spotsinuse' => string '0' (length=1)
5 => string '0' (length=1)
'time' => string '2012-12-07 13:47:13' (length=19)
6 => string '2012-12-07 13:47:13' (length=19)
1 =>
array (size=14)
'name' => string 'Garage 3' (length=8)
0 => string 'Garage 3' (length=8)
'tablename' => string 'Garage3' (length=7)
1 => string 'Garage3' (length=7)
'numfloors' => string '2' (length=1)
2 => string '2' (length=1)
'status' => string '3' (length=1)
3 => string '3' (length=1)
'numspots' => string '0' (length=1)
4 => string '0' (length=1)
'spotsinuse' => string '0' (length=1)
5 => string '0' (length=1)
'time' => string '2012-12-07 13:49:46' (length=19)
6 => string '2012-12-07 13:49:46' (length=19)
While this does contain all the data, it has so much stuff that I don't want.
Is there a simple way to get a basic 2D array of a table using PDO?
$result = $this->statement->fetchAll(PDO::FETCH_NUM);
Returns correct type

Categories