PHP Warning: number_format() expects parameter 1 to be float [duplicate] - php
This question already has answers here:
Warning: number_format() expects parameter 1 to be double, string given [closed]
(3 answers)
Closed 5 months ago.
Can you please someone help me with this code I got
PHP Warning: number_format() expects parameter 1 to be float, string given in line 39
I am copied the whole class I hope that will help you better to find the problem.
class stats_site extends stats {
function __construct() {
global $CONF, $DB, $FORM, $LNG, $TMPL;
$TMPL['header'] = $LNG['stats_header'];
$TMPL['username'] = $DB->escape($FORM['u'], 1);
$stats = $DB->fetch("SELECT * FROM {$CONF['sql_prefix']}_stats WHERE username = '{$TMPL['username']}'", __FILE__, __LINE__);
unset($stats['username']);
$sites = array($DB->fetch("SELECT * FROM {$CONF['sql_prefix']}_sites WHERE username = '{$TMPL['username']}'", __FILE__, __LINE__));
if ($stats) {
$TMPL = array_merge($TMPL, $stats, $sites);
$TMPL['unq_pv_max_daily'] = $TMPL['unq_pv_0_daily'] > $TMPL['unq_pv_max_daily'] ? $TMPL['unq_pv_0_daily'] : $TMPL['unq_pv_max_daily'];
$TMPL['tot_pv_max_daily'] = $TMPL['tot_pv_0_daily'] > $TMPL['tot_pv_max_daily'] ? $TMPL['tot_pv_0_daily'] : $TMPL['tot_pv_max_daily'];
$TMPL['unq_in_max_daily'] = $TMPL['unq_in_0_daily'] > $TMPL['unq_in_max_daily'] ? $TMPL['unq_in_0_daily'] : $TMPL['unq_in_max_daily'];
$TMPL['tot_in_max_daily'] = $TMPL['tot_in_0_daily'] > $TMPL['tot_in_max_daily'] ? $TMPL['tot_in_0_daily'] : $TMPL['tot_in_max_daily'];
$TMPL['unq_out_max_daily'] = $TMPL['unq_out_0_daily'] > $TMPL['unq_out_max_daily'] ? $TMPL['unq_out_0_daily'] : $TMPL['unq_out_max_daily'];
$TMPL['tot_out_max_daily'] = $TMPL['tot_out_0_daily'] > $TMPL['tot_out_max_daily'] ? $TMPL['tot_out_0_daily'] : $TMPL['tot_out_max_daily'];
$TMPL['unq_pv_max_weekly'] = $TMPL['unq_pv_0_weekly'] > $TMPL['unq_pv_max_weekly'] ? $TMPL['unq_pv_0_weekly'] : $TMPL['unq_pv_max_weekly'];
$TMPL['tot_pv_max_weekly'] = $TMPL['tot_pv_0_weekly'] > $TMPL['tot_pv_max_weekly'] ? $TMPL['tot_pv_0_weekly'] : $TMPL['tot_pv_max_weekly'];
$TMPL['unq_in_max_weekly'] = $TMPL['unq_in_0_weekly'] > $TMPL['unq_in_max_weekly'] ? $TMPL['unq_in_0_weekly'] : $TMPL['unq_in_max_weekly'];
$TMPL['tot_in_max_weekly'] = $TMPL['tot_in_0_weekly'] > $TMPL['tot_in_max_weekly'] ? $TMPL['tot_in_0_weekly'] : $TMPL['tot_in_max_weekly'];
$TMPL['unq_out_max_weekly'] = $TMPL['unq_out_0_weekly'] > $TMPL['unq_out_max_weekly'] ? $TMPL['unq_out_0_weekly'] : $TMPL['unq_out_max_weekly'];
$TMPL['tot_out_max_weekly'] = $TMPL['tot_out_0_weekly'] > $TMPL['tot_out_max_weekly'] ? $TMPL['tot_out_0_weekly'] : $TMPL['tot_out_max_weekly'];
$TMPL['unq_pv_max_monthly'] = $TMPL['unq_pv_0_monthly'] > $TMPL['unq_pv_max_monthly'] ? $TMPL['unq_pv_0_monthly'] : $TMPL['unq_pv_max_monthly'];
$TMPL['tot_pv_max_monthly'] = $TMPL['tot_pv_0_monthly'] > $TMPL['tot_pv_max_monthly'] ? $TMPL['tot_pv_0_monthly'] : $TMPL['tot_pv_max_monthly'];
$TMPL['unq_in_max_monthly'] = $TMPL['unq_in_0_monthly'] > $TMPL['unq_in_max_monthly'] ? $TMPL['unq_in_0_monthly'] : $TMPL['unq_in_max_monthly'];
$TMPL['tot_in_max_monthly'] = $TMPL['tot_in_0_monthly'] > $TMPL['tot_in_max_monthly'] ? $TMPL['tot_in_0_monthly'] : $TMPL['tot_in_max_monthly'];
$TMPL['unq_out_max_monthly'] = $TMPL['unq_out_0_monthly'] > $TMPL['unq_out_max_monthly'] ? $TMPL['unq_out_0_monthly'] : $TMPL['unq_out_max_monthly'];
$TMPL['tot_out_max_monthly'] = $TMPL['tot_out_0_monthly'] > $TMPL['tot_out_max_monthly'] ? $TMPL['tot_out_0_monthly'] : $TMPL['tot_out_max_monthly'];
$this->averages();
$TMPL['average_rating'] = $TMPL['num_ratings'] > 0 ? round($TMPL['total_rating'] / $TMPL['num_ratings'], 0) : 0;
$stats = array_map('number_format', $stats);
$TMPL = array_merge($TMPL, $stats);
$this->locale();
$TMPL['header'] .= " - {$TMPL['title']}";
$TMPL['category_url'] = urlencode($TMPL['category']);
$query = "SELECT id, date, review FROM {$CONF['sql_prefix']}_reviews WHERE username = '{$TMPL['username']}' AND active = 1";
if (isset($FORM['all_reviews']) && $FORM['all_reviews']) {
$result = $DB->query("{$query} ORDER BY date DESC", __FILE__, __LINE__);
}
else {
$result = $DB->select_limit("{$query} ORDER BY RAND()", 2, 0, __FILE__, __LINE__);
}
$TMPL['reviews'] = '';
while (list($TMPL['id'], $TMPL['date'], $TMPL['review']) = $DB->fetch_array($result)) {
$TMPL['reviews'] .= $this->do_skin('stats_review');
}
$TMPL['content'] = $this->do_skin('stats');
}
else {
$this->error($LNG['g_invalid_u']);
}
}
}
And line 39 is this line here:
$stats = array_map('number_format', $stats);
Many thanks in advance!
EDIT
I've put here THE FULL CODE so you can better fix the problem with it.
I tried everything you advice here but it doesn't help :(
Here is the full code:
<?php
if (!defined('ATSPHP')) {
die("This file cannot be accessed directly.");
}
class stats extends base {
function __construct() {
global $FORM;
if (isset($FORM['u'])) { $stats = new stats_site; }
else { $stats = new stats_overall; }
}
function averages() {
global $TMPL;
$ranking_periods = array('daily', 'weekly', 'monthly');
$ranking_methods = array('unq_pv', 'tot_pv', 'unq_in', 'tot_in', 'unq_out', 'tot_out');
foreach ($ranking_periods as $ranking_period) {
foreach ($ranking_methods as $ranking_method) {
$TMPL["{$ranking_method}_avg_{$ranking_period}"] = 0;
for ($i = 0; $i < 10; $i++) {
$TMPL["{$ranking_method}_avg_{$ranking_period}"] = $TMPL["{$ranking_method}_avg_{$ranking_period}"] + $TMPL["{$ranking_method}_{$i}_{$ranking_period}"];
}
$TMPL["{$ranking_method}_avg_{$ranking_period}"] = number_format($TMPL["{$ranking_method}_avg_{$ranking_period}"] / 10, 1);
}
}
}
function locale() {
global $CONF, $LNG, $TMPL;
setlocale(LC_ALL, $CONF['default_language']);
for ($i = 2; $i < 10; $i++) {
$TMPL["{$i}_daily"] = strftime('%B %d', time()-3600*24*$i + (3600*$CONF['time_offset']));
}
for ($i = 2; $i < 10; $i++) {
$TMPL["{$i}_weekly"] = "{$LNG['stats_week']} ".date('W', time()-3600*24*7*$i + (3600*$CONF['time_offset']));
}
for ($i = 2; $i < 10; $i++) {
$TMPL["{$i}_monthly"] = strftime('%B %y', mktime(0, 0, 0, date('m')-$i, 1));
}
}
}
class stats_site extends stats {
function __construct() {
global $CONF, $DB, $FORM, $LNG, $TMPL;
$TMPL['header'] = $LNG['stats_header'];
$TMPL['username'] = $DB->escape($FORM['u'], 1);
$stats = $DB->fetch("SELECT * FROM {$CONF['sql_prefix']}_stats WHERE username = '{$TMPL['username']}'", __FILE__, __LINE__);
unset($stats['username']);
$sites = array($DB->fetch("SELECT * FROM {$CONF['sql_prefix']}_sites WHERE username = '{$TMPL['username']}'", __FILE__, __LINE__));
if ($stats) {
$TMPL = array_merge($TMPL, $stats, $sites);
$TMPL['unq_pv_max_daily'] = $TMPL['unq_pv_0_daily'] > $TMPL['unq_pv_max_daily'] ? $TMPL['unq_pv_0_daily'] : $TMPL['unq_pv_max_daily'];
$TMPL['tot_pv_max_daily'] = $TMPL['tot_pv_0_daily'] > $TMPL['tot_pv_max_daily'] ? $TMPL['tot_pv_0_daily'] : $TMPL['tot_pv_max_daily'];
$TMPL['unq_in_max_daily'] = $TMPL['unq_in_0_daily'] > $TMPL['unq_in_max_daily'] ? $TMPL['unq_in_0_daily'] : $TMPL['unq_in_max_daily'];
$TMPL['tot_in_max_daily'] = $TMPL['tot_in_0_daily'] > $TMPL['tot_in_max_daily'] ? $TMPL['tot_in_0_daily'] : $TMPL['tot_in_max_daily'];
$TMPL['unq_out_max_daily'] = $TMPL['unq_out_0_daily'] > $TMPL['unq_out_max_daily'] ? $TMPL['unq_out_0_daily'] : $TMPL['unq_out_max_daily'];
$TMPL['tot_out_max_daily'] = $TMPL['tot_out_0_daily'] > $TMPL['tot_out_max_daily'] ? $TMPL['tot_out_0_daily'] : $TMPL['tot_out_max_daily'];
$TMPL['unq_pv_max_weekly'] = $TMPL['unq_pv_0_weekly'] > $TMPL['unq_pv_max_weekly'] ? $TMPL['unq_pv_0_weekly'] : $TMPL['unq_pv_max_weekly'];
$TMPL['tot_pv_max_weekly'] = $TMPL['tot_pv_0_weekly'] > $TMPL['tot_pv_max_weekly'] ? $TMPL['tot_pv_0_weekly'] : $TMPL['tot_pv_max_weekly'];
$TMPL['unq_in_max_weekly'] = $TMPL['unq_in_0_weekly'] > $TMPL['unq_in_max_weekly'] ? $TMPL['unq_in_0_weekly'] : $TMPL['unq_in_max_weekly'];
$TMPL['tot_in_max_weekly'] = $TMPL['tot_in_0_weekly'] > $TMPL['tot_in_max_weekly'] ? $TMPL['tot_in_0_weekly'] : $TMPL['tot_in_max_weekly'];
$TMPL['unq_out_max_weekly'] = $TMPL['unq_out_0_weekly'] > $TMPL['unq_out_max_weekly'] ? $TMPL['unq_out_0_weekly'] : $TMPL['unq_out_max_weekly'];
$TMPL['tot_out_max_weekly'] = $TMPL['tot_out_0_weekly'] > $TMPL['tot_out_max_weekly'] ? $TMPL['tot_out_0_weekly'] : $TMPL['tot_out_max_weekly'];
$TMPL['unq_pv_max_monthly'] = $TMPL['unq_pv_0_monthly'] > $TMPL['unq_pv_max_monthly'] ? $TMPL['unq_pv_0_monthly'] : $TMPL['unq_pv_max_monthly'];
$TMPL['tot_pv_max_monthly'] = $TMPL['tot_pv_0_monthly'] > $TMPL['tot_pv_max_monthly'] ? $TMPL['tot_pv_0_monthly'] : $TMPL['tot_pv_max_monthly'];
$TMPL['unq_in_max_monthly'] = $TMPL['unq_in_0_monthly'] > $TMPL['unq_in_max_monthly'] ? $TMPL['unq_in_0_monthly'] : $TMPL['unq_in_max_monthly'];
$TMPL['tot_in_max_monthly'] = $TMPL['tot_in_0_monthly'] > $TMPL['tot_in_max_monthly'] ? $TMPL['tot_in_0_monthly'] : $TMPL['tot_in_max_monthly'];
$TMPL['unq_out_max_monthly'] = $TMPL['unq_out_0_monthly'] > $TMPL['unq_out_max_monthly'] ? $TMPL['unq_out_0_monthly'] : $TMPL['unq_out_max_monthly'];
$TMPL['tot_out_max_monthly'] = $TMPL['tot_out_0_monthly'] > $TMPL['tot_out_max_monthly'] ? $TMPL['tot_out_0_monthly'] : $TMPL['tot_out_max_monthly'];
$this->averages();
$TMPL['average_rating'] = $TMPL['num_ratings'] > 0 ? round($TMPL['total_rating'] / $TMPL['num_ratings'], 0) : 0;
function formatter($stats) { return number_format(floatval($stats)); }
$stats = array_map('number_format', $stats);
//$stats = array_map(function($v){return is_numeric($v) ? number_format($v) : $v;}, $stats);
$TMPL = array_merge($TMPL, $stats);
$this->locale();
$TMPL['header'] .= " - {$TMPL['title']}";
$TMPL['category_url'] = urlencode($TMPL['category']);
$query = "SELECT id, date, review FROM {$CONF['sql_prefix']}_reviews WHERE username = '{$TMPL['username']}' AND active = 1";
if (isset($FORM['all_reviews']) && $FORM['all_reviews']) {
$result = $DB->query("{$query} ORDER BY date DESC", __FILE__, __LINE__);
}
else {
$result = $DB->select_limit("{$query} ORDER BY RAND()", 2, 0, __FILE__, __LINE__);
}
$TMPL['reviews'] = '';
while (list($TMPL['id'], $TMPL['date'], $TMPL['review']) = $DB->fetch_array($result)) {
$TMPL['reviews'] .= $this->do_skin('stats_review');
}
$TMPL['content'] = $this->do_skin('stats');
}
else {
$this->error($LNG['g_invalid_u']);
}
}
}
class stats_overall extends stats {
function __construct() {
global $CONF, $DB, $FORM, $LNG, $TMPL;
$TMPL['header'] = $LNG['stats_overall'];
$stats = $DB->fetch("SELECT SUM(unq_pv_overall), SUM(tot_pv_overall), SUM(unq_in_overall), SUM(tot_in_overall), SUM(unq_out_overall), SUM(tot_out_overall),
SUM(unq_pv_0_daily), SUM(unq_pv_1_daily), SUM(unq_pv_2_daily), SUM(unq_pv_3_daily), SUM(unq_pv_4_daily), SUM(unq_pv_5_daily), SUM(unq_pv_6_daily), SUM(unq_pv_7_daily), SUM(unq_pv_8_daily), SUM(unq_pv_9_daily), SUM(tot_pv_0_daily), SUM(tot_pv_1_daily), SUM(tot_pv_2_daily), SUM(tot_pv_3_daily), SUM(tot_pv_4_daily), SUM(tot_pv_5_daily), SUM(tot_pv_6_daily), SUM(tot_pv_7_daily), SUM(tot_pv_8_daily), SUM(tot_pv_9_daily),
SUM(unq_in_0_daily), SUM(unq_in_1_daily), SUM(unq_in_2_daily), SUM(unq_in_3_daily), SUM(unq_in_4_daily), SUM(unq_in_5_daily), SUM(unq_in_6_daily), SUM(unq_in_7_daily), SUM(unq_in_8_daily), SUM(unq_in_9_daily), SUM(tot_in_0_daily), SUM(tot_in_1_daily), SUM(tot_in_2_daily), SUM(tot_in_3_daily), SUM(tot_in_4_daily), SUM(tot_in_5_daily), SUM(tot_in_6_daily), SUM(tot_in_7_daily), SUM(tot_in_8_daily), SUM(tot_in_9_daily),
SUM(unq_out_0_daily), SUM(unq_out_1_daily), SUM(unq_out_2_daily), SUM(unq_out_3_daily), SUM(unq_out_4_daily), SUM(unq_out_5_daily), SUM(unq_out_6_daily), SUM(unq_out_7_daily), SUM(unq_out_8_daily), SUM(unq_out_9_daily), SUM(tot_out_0_daily), SUM(tot_out_1_daily), SUM(tot_out_2_daily), SUM(tot_out_3_daily), SUM(tot_out_4_daily), SUM(tot_out_5_daily), SUM(tot_out_6_daily), SUM(tot_out_7_daily), SUM(tot_out_8_daily), SUM(tot_out_9_daily),
SUM(unq_pv_0_weekly), SUM(unq_pv_1_weekly), SUM(unq_pv_2_weekly), SUM(unq_pv_3_weekly), SUM(unq_pv_4_weekly), SUM(unq_pv_5_weekly), SUM(unq_pv_6_weekly), SUM(unq_pv_7_weekly), SUM(unq_pv_8_weekly), SUM(unq_pv_9_weekly), SUM(tot_pv_0_weekly), SUM(tot_pv_1_weekly), SUM(tot_pv_2_weekly), SUM(tot_pv_3_weekly), SUM(tot_pv_4_weekly), SUM(tot_pv_5_weekly), SUM(tot_pv_6_weekly), SUM(tot_pv_7_weekly), SUM(tot_pv_8_weekly), SUM(tot_pv_9_weekly),
SUM(unq_in_0_weekly), SUM(unq_in_1_weekly), SUM(unq_in_2_weekly), SUM(unq_in_3_weekly), SUM(unq_in_4_weekly), SUM(unq_in_5_weekly), SUM(unq_in_6_weekly), SUM(unq_in_7_weekly), SUM(unq_in_8_weekly), SUM(unq_in_9_weekly), SUM(tot_in_0_weekly), SUM(tot_in_1_weekly), SUM(tot_in_2_weekly), SUM(tot_in_3_weekly), SUM(tot_in_4_weekly), SUM(tot_in_5_weekly), SUM(tot_in_6_weekly), SUM(tot_in_7_weekly), SUM(tot_in_8_weekly), SUM(tot_in_9_weekly),
SUM(unq_out_0_weekly), SUM(unq_out_1_weekly), SUM(unq_out_2_weekly), SUM(unq_out_3_weekly), SUM(unq_out_4_weekly), SUM(unq_out_5_weekly), SUM(unq_out_6_weekly), SUM(unq_out_7_weekly), SUM(unq_out_8_weekly), SUM(unq_out_9_weekly), SUM(tot_out_0_weekly), SUM(tot_out_1_weekly), SUM(tot_out_2_weekly), SUM(tot_out_3_weekly), SUM(tot_out_4_weekly), SUM(tot_out_5_weekly), SUM(tot_out_6_weekly), SUM(tot_out_7_weekly), SUM(tot_out_8_weekly), SUM(tot_out_9_weekly),
SUM(unq_pv_0_monthly), SUM(unq_pv_1_monthly), SUM(unq_pv_2_monthly), SUM(unq_pv_3_monthly), SUM(unq_pv_4_monthly), SUM(unq_pv_5_monthly), SUM(unq_pv_6_monthly), SUM(unq_pv_7_monthly), SUM(unq_pv_8_monthly), SUM(unq_pv_9_monthly), SUM(tot_pv_0_monthly), SUM(tot_pv_1_monthly), SUM(tot_pv_2_monthly), SUM(tot_pv_3_monthly), SUM(tot_pv_4_monthly), SUM(tot_pv_5_monthly), SUM(tot_pv_6_monthly), SUM(tot_pv_7_monthly), SUM(tot_pv_8_monthly), SUM(tot_pv_9_monthly),
SUM(unq_in_0_monthly), SUM(unq_in_1_monthly), SUM(unq_in_2_monthly), SUM(unq_in_3_monthly), SUM(unq_in_4_monthly), SUM(unq_in_5_monthly), SUM(unq_in_6_monthly), SUM(unq_in_7_monthly), SUM(unq_in_8_monthly), SUM(unq_in_9_monthly), SUM(tot_in_0_monthly), SUM(tot_in_1_monthly), SUM(tot_in_2_monthly), SUM(tot_in_3_monthly), SUM(tot_in_4_monthly), SUM(tot_in_5_monthly), SUM(tot_in_6_monthly), SUM(tot_in_7_monthly), SUM(tot_in_8_monthly), SUM(tot_in_9_monthly),
SUM(unq_out_0_monthly), SUM(unq_out_1_monthly), SUM(unq_out_2_monthly), SUM(unq_out_3_monthly), SUM(unq_out_4_monthly), SUM(unq_out_5_monthly), SUM(unq_out_6_monthly), SUM(unq_out_7_monthly), SUM(unq_out_8_monthly), SUM(unq_out_9_monthly), SUM(tot_out_0_monthly), SUM(tot_out_1_monthly), SUM(tot_out_2_monthly), SUM(tot_out_3_monthly), SUM(tot_out_4_monthly), SUM(tot_out_5_monthly), SUM(tot_out_6_monthly), SUM(tot_out_7_monthly), SUM(tot_out_8_monthly), SUM(tot_out_9_monthly)
FROM {$CONF['sql_prefix']}_stats", __FILE__, __LINE__);
// Get rid of SUM() in array keys
foreach ($stats as $key => $value) {
$new_key = str_replace(array('SUM(', ')'), '', $key);
$stats[$new_key] = $value;
unset($stats[$key]);
}
$TMPL = array_merge($TMPL, $stats);
$this->averages();
$stats = array_map('number_format', $stats);
$TMPL = array_merge($TMPL, $stats);
$this->locale();
$TMPL['content'] = $this->do_skin('stats_overall');
}
}
?>
Error happen at line 85:
$stats = array_map('number_format', $stats);
Latest Error after using Miken32's Answer:
PHP Notice: Undefined index: title in sources/stats.php on line 91
PHP Notice: Undefined index: category in sources/stats.php on line 92
PHP Notice: Undefined index: title in sources/misc/skin.php(84) : runtime-created function on line 1
PHP Notice: Undefined index: url in sources/misc/ etc.
array_map() applies a function to each element of the array. In this case you're passing it the name of a function ("number_format") that expects a number but it's getting a string. Instead, you can pass it your own function that can check it:
$stats = array_map(function($v){return is_numeric($v) ? number_format($v) : $v;}, $stats);
By default numeric types from MySQL are returned as string values in php. The easiest thing to do would be create a custom function and pass that in:
function formatter($value) { return number_format(floatval($value)); }
Related
Using an If statement in PHP but not working
What I want to do is When I enter all my information (for client ID 199 in the picture) In my account being submit it, it goes into the database. BUT I want it to change to something and so i added an if statement Here the code im adding to the existing code already at the BOTTOM of the code if ($vpr_clid == 199) { $vpr_cl_name = "Shelley Madsen And Associates"; } if the ($vpr_clid = 199) i want the clname to be "Shelley Madsen And Associates" then what is show in the table below instead of "Nice and White Smiles" (that an example of the results look like) but when i chcek the database it not changing it and still show "Nice and White Smiles :( I dont see any error, so it might be the placement of the code i have to put the IF statement in the huge php file? Dont know how to fix this issue Thanks (the code below is the base code before i added the If statement) I also insert the if statement before the function were called but still didnt work example if ($vpr_clid == 199) { $vpr_cl_name = "Shelley Madsen And Associates"; } $result = InsertIntoPayReminder($link, $vars); $result = GetVpr_Id($link, $vars); <?php session_start(); if ($_SESSION['company'] != "ACB") { // redirect to the logout page $redirect = 'logout.php'; include './includes/redirect.php'; } class variables_obj { var $vpr_plan = ''; var $vpr_id = ''; var $vpr_clid = ''; var $vpr_cl_name = ''; var $vpr_cl_phone = ''; var $vpr_call_start_date = ''; var $vpr_db_account = ''; var $vpr_db_fname = ''; var $vpr_db_mname = ''; var $vpr_db_lname = ''; var $vpr_rp_fname = ''; var $vpr_rp_mname = ''; var $vpr_rp_lname = ''; var $vpr_rp_address = ''; var $vpr_rp_city = ''; var $vpr_rp_state = ''; var $vpr_rp_zipcode = ''; var $vpr_rp_phonenum = ''; var $vpr_rp_phonetype = ''; var $vpr_date_entered = ''; var $newrecdt = ''; var $vpl_day_offset = ''; var $vpl_action = ''; var $vpr_promocode = ''; } function ScrubPhone($old_phone_num) { $phone_length = strlen($old_phone_num); $new_phone_num = ""; for($i = 0; $i < $phone_length; $i = $i + 1) { if(is_numeric($old_phone_num[$i])) { $new_phone_num .= $old_phone_num[$i]; } } return $new_phone_num; } function ScheduleCreated($link, $vars) { $query = "UPDATE v_payreminder SET vpr_schedule_created = '1' WHERE vpr_id='".$vars->vpr_id."'"; if (!mysql_query($query,$link)) { die('Error: ' . mysql_error()); } return true; } function CreateScheduleRow($link, $vars){ // echo "vpl_day_offset: ".$vars->vpl_day_offset."<br>"; // echo "vpl_action: ".$vars->vpl_action."<br>"; $plus_days = " +".$vars->vpl_day_offset." days"; // echo "plus days: ".$plus_days."<br>"; $date_offset = strtotime(date("Y-m-d", strtotime($vars->vpr_date_entered)).$plus_days); $date_offset = date("Y-m-d", $date_offset); // echo "date_offset: ".$date_offset."<br>"; // $date_offset = strtotime(date("Y-m-d",strtotime($vars->vpr_date_entered))." +".$vars->vpl_day_offset." days"); // $date_offset = strtotime(date("Y-m-d", strtotime($date)) . " +1 day"); // echo "date_offset: ".$date_offset."<br>"; $query = "INSERT INTO v_pr_schedule ( vpr_id, vsc_plan, vsc_date_entered, vsc_action, vsc_action_date, vsc_status ) VALUES ( '$vars->vpr_id', '$vars->vpr_plan', '$vars->vpr_date_entered', '$vars->vpl_action', '$date_offset', 'VACT')"; //echo "query: ".$query."<br>"; if (!mysql_query($query,$link)) { die('Error: ' . mysql_error()); } return true; } function CreateSchedule($link, &$vars) { // CREATE SCHEDULE $query = " SELECT vpl_day_offset, vpl_action, vpl_condition FROM v_plan WHERE vpl_plan = '".$vars->vpr_plan."'"; // echo "query: ".$query."<br>"; $qresult = mysql_query($query); if (!$qresult) { print(mysql_error()); } if ($qresult && mysql_num_rows($qresult) > 0 ) { while ($row = mysql_fetch_array($qresult, MYSQL_ASSOC)) { $vars->vpl_day_offset = $row['vpl_day_offset']; $vars->vpl_action = $row['vpl_action']; if ($row['vpl_condition'] == 'OO') { CreateScheduleRow($link, $vars); } } } return true; } function InsertIntoPayReminder($link, &$vars) { $vars->vpr_cl_name = strtr($vars->vpr_cl_name, "'", " "); //echo "Client Name: ".$vars->vpr_cl_name."<br><br>"; //exit(); $sql="INSERT INTO v_payreminder ( vpr_clid, vpr_cl_name, vpr_cl_phone, vpr_call_start_date, vpr_db_account, vpr_db_fname, vpr_db_mname, vpr_db_lname, vpr_rp_fname, vpr_rp_mname, vpr_rp_lname, vpr_rp_phonenum, vpr_rp_phonetype, vpr_rp_address, vpr_rp_city, vpr_rp_state, vpr_rp_zipcode, vpr_promo, vpr_date_entered) VALUES ( '$vars->vpr_clid', '$vars->vpr_cl_name', '$vars->vpr_cl_phone', '$vars->vpr_call_start_date', '$vars->vpr_db_account', '$vars->vpr_db_fname', '$vars->vpr_db_mname', '$vars->vpr_db_lname', '$vars->vpr_rp_fname', '$vars->vpr_rp_mname', '$vars->vpr_rp_lname', '$vars->vpr_rp_phonenum', '$vars->vpr_rp_phonetype', '$vars->vpr_rp_address', '$vars->vpr_rp_city', '$vars->vpr_rp_state', '$vars->vpr_rp_zipcode', '$vars->vpr_promocode', '$vars->vpr_date_entered')"; if (!mysql_query($sql,$link)) { die('Error2: ' . mysql_error()); } return true; } function GetVpr_Id($link, &$vars) { // Find out what vpr_id is $query = "SELECT vpr_id FROM v_payreminder "; $query .= "WHERE vpr_clid = '".$vars->vpr_clid."' AND vpr_date_entered = '".$vars->vpr_date_entered."'"; $qresult = mysql_query($query); if (!$qresult) { print(mysql_error()); } if ($qresult && mysql_num_rows($qresult) > 0 ) { $row = mysql_fetch_array($qresult, MYSQL_ASSOC); $vars->vpr_id = $row['vpr_id']; } } function InsertInActivity($link, $vars) { // ENTER INTO ACTIVITY $vaction_desc = 'PATIENT ENTERED'; $sql = "INSERT INTO v_pr_activity ( vpr_id, va_plan, va_action_dttm, va_action_code, va_action_desc, va_disposition_code, va_disposition_desc, va_status_code, va_status_desc ) VALUES ( '$vars->vpr_id', '$vars->vpr_plan', '$vars->vpr_date_entered', 'VINIT', '$vaction_desc', 'SUCCESS', 'SUCCESS', 'VACT', 'ACTIVE' )"; if (!mysql_query($sql,$link)) { die('Error: ' . mysql_error()); } } include './includes/dblogin.php'; $vars = new variables_obj(); $vars->vpr_plan = 'VP01'; $vars->vpr_clid = $_SESSION['userid']; //------------------------------------------------------- // No commas can be in client name or they will // mess up the Global Connect CSV file. //------------------------------------------------------- $vpr_cl_name = $_SESSION['username']; $vpr_cl_name = str_replace(",", " ", $vpr_cl_name); $vars->vpr_cl_name = $vpr_cl_name; //------------------------------------------------------- //------------------------------------------------------- $vars->vpr_cl_phone = ScrubPhone($_SESSION['uphone']); $vars->vpr_call_start_date = '0000-00-00'; $vars->vpr_db_account = $_POST['ndaccnum']; $vars->vpr_db_fname = $_POST['ndfreqname']; $vars->vpr_db_mname = $_POST['ndmname']; $vars->vpr_db_lname = $_POST['ndlreqname']; $vars->vpr_rp_fname = $_POST['ndrfreqname']; $vars->vpr_rp_mname = $_POST['ndrmname']; $vars->vpr_rp_lname = $_POST['ndrlreqname']; $vars->vpr_rp_address = ''; $vars->vpr_rp_city = ''; $vars->vpr_rp_state = $_POST['ndrstatereqname']; $vars->vpr_rp_zipcode = $_POST['ndrreqzipcode']; $phonenumber = $_POST['1ndrreqphone'].$_POST['2ndrreqphone'].$_POST['3ndrreqphone']; $vars->vpr_rp_phonenum = $phonenumber; $vars->vpr_rp_phonetype = $_POST['treqphone']; $vars->vpr_date_entered = date('Y-m-d H:i:s'); $vars->newrecdt = date('Ymd'); $vars->vpr_promocode = $_POST['promocode']; // echo "vpr_plan: ".$vars->vpr_plan."<br>"; // echo "vpr_date_entered: ".$vars->vpr_date_entered."<br>"; // echo "newrecdt: ".$vars->newrecdt."<br>"; // echo "vpr_clid: ".$vars->vpr_clid."<br>"; // echo "vpr_id: ".$vars->vpr_id."<br>"; $result = InsertIntoPayReminder($link, $vars); $result = GetVpr_Id($link, $vars); $result = InsertInActivity($link, $vars); $result = CreateSchedule($link, $vars); $result = ScheduleCreated($link, $vars); // echo "vpr_id: ".$vars->vpr_id."<br>"; mysql_close($link); // redirect $redirect = 'vpayremind.php'; include './includes/redirect.php'; ?>
okay referencing the following lines.. if ( $vpr_clid == 199 ) { $vpr_cl_name = "Shelley Madsen And Associates"; } $result = InsertIntoPayReminder($link, $vars); ...and then: function InsertIntoPayReminder($link, &$vars) { $vars->vpr_cl_name = strtr($vars->vpr_cl_name, "'", " "); so on and so forth... } it doesnt seem as if you are actually setting the value of the class object. You seem to be setting some arbitrary php variable to the name you want, and then passing a totally different ' $vars ' object into the function. I don't see any reason to believe that the ' $vars ' you are passing into the function call contains the name value you want it to contain. You should be assigning the value of ' $vars ' before passing it in. For instance: if ( $vpr_clid == 199 ) { $vars[ 'vpr_cl_name' ] = "Shelley Madsen And Associates"; } then you can get rid of this line all together: $vars->vpr_cl_name = strtr($vars->vpr_cl_name, "'", " ");
How can I do this sql filter results
I have an website there are 5 categories, i only want to show the 1-4 category only in the new posts..how can I edit the code to do this job? thanks Here is my code, and I do that in my sql by using following code: SELECT * FROM `ff_se` WHERE Wid in ('1','2','3','4')" but i dont know how to do that in php code. following is my part of php code: $this->TableSe = 'ff_se'; $this->TableSeWord = 'ff_se_word'; $this->TableSeSupport = 'ff_se_support'; $this->TableSePost = 'ff_se_post'; $this->TableSePostTableId = 'ff_se_post_tableid'; public function GetAjaxList($Get){ $Results = array(); $Get = $this->StrToGBK($Get); $Page = $Get['page'] ? intval($Get['page']):0; $Where = ''; $Order = 'S.updateline'; if($Get['type'] == 'New'){ $Order = 'S.dateline'; }else if($Get['type'] == 'Hot'){ $Order = 'S.updateline'; if($this->Config['PluginVar']['ListHotVal']){ $Where .= ' and (S.support_count >= '.$this->Config['PluginVar']['ListHotVal'].' OR S.comment_count >= '.$this->Config['PluginVar']['ListHotVal'].')'; } if($this->Config['PluginVar']['ListHotDataline']){ $Where .= ' and S.dateline >= '.strtotime("-".$this->Config['PluginVar']['ListHotDataline']." hours",time()); } }else if($Get['type'] == 'Nearby'){// $Order = 'S.updateline'; if($Get['lng'] && $Get['lat']){ $SquarePoint = $this->GetReturnSquarePoint($Get['lng'],$Get['lat'],$this->Config['PluginVar']['Distance']); $Where .= ' and S.lat <> 0 and S.lat > '.$SquarePoint['right-bottom']['lat'].' and S.lat < '.$SquarePoint['left-top']['lat'].' and S.lng > '.$SquarePoint['left-top']['lng'].' and S.lng < '.$SquarePoint['right-bottom']['lng']; }else{ return $Results; } } if($_GET['wid']){ $Where .= ' and S.wid = '.intval($_GET['wid']); } $Where .= ' and S.display = 1 and S.fast_add_display = 1'; $Where = preg_replace('/and/','where',$Where,1); $this->Config['PluginVar']['ListNum'] = $this->Config['PluginVar']['ListNum'] ? $this->Config['PluginVar']['ListNum'] : 10; $Limit = 'LIMIT '.($Page * $this->Config['PluginVar']['ListNum']).','.$this->Config['PluginVar']['ListNum']; $FetchSql = 'SELECT W.title as Ttitle,S.* FROM '.DB::table($this->Tablese).' S LEFT JOIN '.DB::table($this->TableSeWord).' W on W.id = S.wid '.$Where .' order by topdateline > '.time().' desc,'.$Order.' desc,S.dateline desc '.$Limit; $Results = $this->ListFormat(DB::fetch_all($FetchSql)); return $Results; }
I think you should try and understand the code first before you modify it ... but anyway: You would only need to append the condition to the where clause generated in the PHP code. You could do that by adding THE LINE MARKED "THIS LINE IS NEW" after this line: $Where = ''; And this is the relevant part of the code: $Where = ''; $Order = 'S.updateline'; if($Get['type'] == 'New'){ $Where .= ' and S.wid in (1,2,3,4)'; //THIS LINE IS NEW $Order = 'S.dateline'; }else ....... As you can see any redundant initial "and"s are replaced with "where" here: $Where = preg_replace('/and/','where',$Where,1); so this should work - assuming that $Get['type'] == 'New' means that this is a new post which I can only guess.
Notice: Undefined property: PDOStatement::$mysqli_num_rows in
Here is my PHP code who is returning the following error. public static function categoryParentChildTree($parent = 14, $spacing = '', $category_tree_array = '') { $db=Db::getConnection(); if (!is_array($category_tree_array)) $category_tree_array = array(); $sql = 'SELECT id,name,parentid FROM category WHERE parentid = 14 ORDER BY id ASC'; $resCategory=$db->query($sql); *if ($resCategory->num_rows > 0) {* while($rowCategories = $resCategory->fetch_assoc()) { $category_tree_array[] = array("id" => $rowCategories['id'], "name" => $spacing . $rowCategories['name']); $category_tree_array = Self::categoryParentChildTree($rowCategories['id'], ' '.$spacing . '- ', $category_tree_array); } } return $category_tree_array; } please help me this function output this error Notice: Undefined property: PDOStatement::$mysqli_num_rows in
Your notice appears because the object is not created. Replace line $resCategory=$db->query($sql); by this : if($resCategory = $db->query($sql)) { //continue with your code... if ($resCategory->num_rows > 0) { ... } else { // SQL Query didn't return anything }
Laravel Request does not return result
I am using AWS and laravel 5.1. I have two issues: Most of the time API returns the expected result but sometimes server doesn't return result for longer time. It might be due to the server load(Although we don't have too much load on server). Clients wait for few minutes and after that application crashes. Any Advice. If Client made an API request and before getting result, if device loses internet connection. Server has process the data but unable to deliver it to the client. how to handle this (Both in get as well as post request) Sample Code for first Part public function psychometricResponses(Request $request) { $questionId=$request->get('questionId'); $answerId=$request->get('answerId'); $from = $request->has('from'); $userId = $request->has('id') ? $request->get('id') : 0; $name = $request->has('name') ? $request->get('name') : ''; $email = $request->has('email') ? $request->get('email') : ''; $gender = $request->has('gender') ? $request->get('gender') : ''; $relationshipStatus = $request->has('relationshipStatus') ? $request->get('relationshipStatus') : ''; if($userId!=0){ $status = 1; User::where('id',$userId)->update(['status'=>1]); }else{ $status = 0; } $id = $this->calculatePersonality($questionId, $answerId, $userId, $from, $name, $email, $gender, $relationshipStatus); return json_encode(['code'=>200,'message'=>"success",'response'=>array('personality'=>$this->_getPersonality($id),'psychometricId'=>$id,'status'=>$status)]); } public function calculatePersonality($questionId, $answerId, $userId, $from, $name, $email, $gender, $relationshipStatus) { // $questionArray = explode(',', $questionId); //arraySize is 60 $answerArray = explode(',', $answerId); // //arraySize is 60 $this->questionAll = $this->_questionAll(); $personality = array('O'=>0,'C'=>0,'E'=>0,'A'=>0,'N'=>0); for($i=0; $i<sizeof($answerArray);$i++){ $type = $this->_getQuestionType($questionArray[$i]); if($type=='O'){ $personality['O'] = $answerArray[$i]=='1' ? $personality['O']+1 : $personality['O']-1; }else if($type=='OR'){ $personality['O'] =$answerArray[$i]=='1' ? $personality['O']-1 : $personality['O']+1; }else if($type=='C'){ $personality['C'] = $answerArray[$i]=='1' ? $personality['C']+1 : $personality['C']-1; }else if($type=='CR'){ $personality['C'] = $answerArray[$i]=='1' ? $personality['C']-1 : $personality['C']+1; }else if($type=='E'){ $personality['E'] = $answerArray[$i]=='1' ? $personality['E']+1 : $personality['E']-1; }else if($type=='ER'){ $personality['E'] = $answerArray[$i]=='1'?$personality['E']-1 : $personality['E']+1; }else if($type=='A'){ $personality['A'] = $answerArray[$i]=='1' ? $personality['A']+1 : $personality['A']-1; }else if($type=='AR'){ $personality['A'] = $answerArray[$i]=='1' ? $personality['A']-1 : $personality['A']+1; }else if($type=='N'){ $personality['N'] = $answerArray[$i]=='1'? $personality['N']+1 : $personality['N']-1; }else if($type=='NR'){ $personality['N'] = $answerArray[$i]=='1' ? $personality['N']-1 : $personality['N']+1; } } $mod = array(); $mod['O'] = abs($personality['O']); $mod['C'] = abs($personality['C']); $mod['E'] = abs($personality['E']); $mod['A'] = abs($personality['A']); $mod['N'] = abs($personality['N']); arsort($mod); $values = array_keys($mod); $pTypeOne = $personality[$values[0]] < 0 ? $values[0].'R' : $values[0]; $pTypeTwo = $personality[$values[1]] < 0 ? $values[1].'R' : $values[1]; $pTypeThree = $personality[$values[2]] < 0 ? $values[2].'R' : $values[2]; $pTypeFour = $personality[$values[3]] < 0 ? $values[3].'R' : $values[3]; $pTypeFive = $personality[$values[4]] < 0 ? $values[4].'R' : $values[4]; $psychometricResponse = PsychometricResponse::create(array('typeA'=>$pTypeOne, 'valueA'=>$personality[$values[0]],'typeB'=>$pTypeTwo, 'valueB'=>$personality[$values[1]], 'typeC'=>$pTypeThree, 'valueC'=>$personality[$values[2]],'typeD'=>$pTypeFour, 'valueD'=>$personality[$values[3]], 'typeE'=>$pTypeFive, 'valueE'=>$personality[$values[4]],'questionId'=>$questionId,'answerId'=>$answerId, 'userId'=>$userId, 'from'=>$from,'name'=>$name,'email'=>$email, 'gender'=>$gender,'relationshipStatus'=>$relationshipStatus)); return $psychometricResponse->id; } private function _questionAll(){ $question = PsychometricQuestion::where('isActive',1)->get(['id','type']); $result =array(); for($i=0;$i<sizeof($question);$i++){ $result[$question[$i]->id] = $question[$i]->type; } return $result; } private function _getQuestionType($id){ return $this->questionAll[$id]; } private function _getPersonality($id){ $personality = PsychometricResponse::where('id',$id)->first(['typeA','typeB','typeC','typeD','typeE','valueA','valueB']); $combined = array($personality->typeA,$personality->typeB); sort($combined); $combinedPersonality = PsychometricResult::where('type',$combined[0]."-".$combined[1])->first(['type','keyword','description','colorCode']); //Table PsychometricResult has 40 rows only. $primaryPersonality = PsychometricResult::where('type',$personality->typeA)->first(['type','keyword','description','colorCode']); $secondaryPersonality = PsychometricResult::where('type',$personality->typeB)->first(['type','keyword','description','colorCode']); $permutation = $this->_getAllPermutation($personality); $stylePersonality = PsychometricStyle::whereIn('type',$permutation)->get(['type','aspect','style','description']); $primaryPercentage = round(abs($personality->valueA)/(abs($personality->valueA)+abs($personality->valueB)), 2); $secondaryPercentage = 1 - $primaryPercentage; return array('primaryPersonality'=>$primaryPersonality,'secondaryPersonality'=>$secondaryPersonality,'combinedPersonality'=>$combinedPersonality, 'styles'=>$stylePersonality,'primaryPercentage'=>$primaryPercentage,'secondaryPercentage'=>$secondaryPercentage); } private function _getAllPermutation($personality){ $combined = array($personality->typeA,$personality->typeB,$personality->typeC,$personality->typeD,$personality->typeE); sort($combined); $permutation = array(); for($i=0;$i<sizeof($combined);$i++){ for($j=$i+1;$j<5;$j++){ array_push($permutation,$combined[$i]."-".$combined[$j]); } } return $permutation; }
Issue with createQueryBuilder and MongoRegex
After several research for the createquerybuilder for mongodb, I cannot solve my issue.Can you please help me? Here is the structure of the data : “Field1” : { “Field2”: “value1a”,“Field3” : {“Field4” : “value2a”,”Field5” : “value3a”}} “Field1” : { “Field2”: “value1b”,“Field3” : {“Field4” : “value2b”,”Field5” : “value3b”}} “Field1” : { “Field2”: “value1c”,“Field3” : {“Field4” : “value2c”,”Field5” : “value3c”}} How can I get the whole row where Field5 = value3a ? I have proceeded with the below code but it doesn’t return me any record : $keywords = "test"; $keywords_Array = explode(',',$keywords); $nbKeyword = count($keywords_Array); $odm = $this->get("doctrine mongodb"); $donnees = $odm->createQueryBuilder("MyBundle:MyCollection"); for($i=0; $i<$nbKeyword; $i++){ $search = new \MongoRegex('/"Field5":"'.$ keywords_Array [$i].'"/'); $donnees = $donnees->field("Field1")->equals(new \MongoRegex('/"Field3":"'.$search.'"/')); } $donnees = $donnees->getQuery()->execute(); Foreach($donnees as $ data) { $resp = $data->getResult(); } Return $resp; And another structure of data (here, the data is an array of values): “Field1” : {“Field2”: [“value1”,”value2”,”value3”]} How can I get the whole row where Field2 = value3 ? It is the same as above with the below code, it doesn’t return me any record : $keywords = "test"; $keywords_Array = explode(',',$keywords); $nbKeyword = count($keywords_Array); $odm = $this->get("doctrine mongodb"); $donnees = $odm->createQueryBuilder("MyBundle:MyCollection"); for($i=0; $i<$nbKeyword; $i++){ $donnees = $donnees-> field("Field1")->equals(new \MongoRegex('/"Field2":"'. $keywords_Array [$i].'"/i')); } $donnees = $donnees->getQuery()->execute(); Foreach($donnees as $ data) { $resp = $data->getResult(); } Return $resp; Thanks in advance
The issue is fixed.I post the solution just in case anyone has also the same problem. For the first structure of data, the code should be like this : $keywords = "test"; $keywords_Array = explode(',',$keywords); $nbKeyword = count($keywords_Array); $odm = $this->get("doctrine mongodb"); $donnees = $odm->createQueryBuilder("MyBundle:MyCollection"); for($i=0; $i<$nbKeyword; $i++){ $donnees = $donnees->field('Field1')->equals(new \MongoRegex('/"Field5":'.$keywords_Array [$i].'/')); } $donnees = $donnees->getQuery()->execute(); Foreach($donnees as $ data) { $resp = $data->getResult(); } Return $resp; And for the second structure of data,the code should be like this : $keywords = "test"; $keywords_Array = explode(',',$keywords); $nbKeyword = count($keywords_Array); $odm = $this->get("doctrine mongodb"); $donnees = $odm->createQueryBuilder("MyBundle:MyCollection"); for($i=0; $i<$nbKeyword; $i++){ $keys = new \MongoRegex("/".$keywords_Array [$i]."/"); $donnees = $donnees->field("Field1")->in(array("Field2"=>$keys)); } $donnees = $donnees->getQuery()->execute(); Foreach($donnees as $ data) { $resp = $data->getResult(); } Return $resp; Thank you.