RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-297806

Pashok's questions

Martin Hope
Pashok
Asked: 2023-03-27 21:51:35 +0000 UTC

为什么 Codeigniter 4 中的路由将错误的值分配给控制器参数?

  • 5

出现了无法理解的情况。将值传递false给常规函数时,默认值 =null正确分配或输出的值:

function some(?bool $a = null)
{
    var_dump($a);
}

some();
some(true);
some(false);

结果:

NULL
bool(true)
bool(false)

但是,当我尝试通过 将相同的参数传递给控制器​​参数时,返回的route值是,因此给出了不正确的结果。是什么原因造成的?也许 codeigniter在参数中 以某种不同的方式处理它?-s:falsetruefalseRoute

$routes->get('default', 'Results::index');
$routes->get('successful', 'Results::index/true');
$routes->get('errors', 'Results::index/false');

控制器:

public function index(?bool $decline = null)
{
    var_dump($decline);
    exit;
}

结果:

NULL
bool(true)
bool(true)
php
  • 2 个回答
  • 19 Views
Martin Hope
Pashok
Asked: 2022-07-18 12:19:55 +0000 UTC

为什么只有在会话退出后才将正确的数据写入 codeigniter 会话?

  • 0

我正在使用4个codeigniter。第一次进入页面时,需要将代码写入会话中,然后在用户提交表单时,将此代码与会话中的代码进行比较。为了检查,我在其中显示会话view并且它与代码匹配,但是,用于比较的会话中的值结果被写入了另一个值,并且不清楚它来自哪里。我清理了会话,并Flashdata使用了它,然后停止了它并再次启动了会话,仍然写入了一个随机值。但是,如果您使用var_dump-th 强制会话退出控制器,或者只是重新启动页面以覆盖该值,则比较两个必要的代码并且一切正常。可能是什么问题呢?会话在构造函数中连接。

控制器特点:

public function __construct()
{
  $this->session = \Config\Services::session();
}

public function index()
{
  $userCode = $this->request->getPost("userCode");
  $codeSession = $this->session->get("code");
  if(!empty($userCode))
  {
    if($userCode == $codeSession)
    {
      return redirect()->to('/Home');
    }else{
      // Для проверки значений. При первом посте - мусор, при последующих нужный код
      var_dump($codeSession);
    }
  }else{
    // Тут даже при первом заходе на страницу уже есть код почему-то
    $this->session->has("code") ? $this->session->remove("code") : '';
  }
  
  $this->generateCode();
  $data['codeSession'] = $this->session->get("code");
  // var_dump($this->session->get()); -> Так сработает и при первом запуске.
  // Без вывода надо перезапустить страницу чтобы код опять переприсвоился.
  return view("/pageWithCode", $data['codeSession']);
}

private function generateCode()
{
  $code = "Some random code";
  $this->session->set("code", $code);
}
php сессия
  • 1 个回答
  • 30 Views
Martin Hope
Pashok
Asked: 2022-09-03 18:26:16 +0000 UTC

如何通过查找类元素向量来修复元素查找错误?

  • 0

您需要更新向量元素的数据。为此,我使用了一个函数find并通过比较find_id,但编译器给出了一个错误:

...xutility(5112,21): error C2676: binary '==': 'Solder' 未定义此运算符或转换为内置运算符可接受的类型

...xutility(5147): message : выполняется компиляция ссылки на экземпляр шаблон функции "_InIt
 std::_Find_unchecked1<_InIt,_Ty>(_InIt,const _InIt,const _Ty
 &,std::false_type)"
with 
1>        [ 
1>           
1>            _InIt=Solder *, 
1>            _Ty=find_id 
1>        ]

在找到元素之后,我们通过它的方法更新它的数据。士兵的等级减少了,只剩下必要的了。在组类中,values是一个带有数字的向量,该数字是类中的一个字段Solders和一个名称number。

class Solder
{
private:
    int counterForUpdate;
    string* name;
public:
    int number;
     //конструктор
    Solder(string name_in = "Неизвестно", int number_in = 0)
    {
        name = new string(name_in);
        number = number_in;
    }
    void update(int counter){
        counterForUpdate = counterForUpdate + counter;
    }
};

struct find_id : std::unary_function<Solder, bool> {
    int number;
    find_id(int id) :number(number) { }
    bool operator()(Solder const& ms) const {
        return ms.number == number;
    }
};

class Group
{
private:
    std::vector<Solder> solders;
public:
    void addSolder(string name, int number)
    {
        Solder newSolder(name, number);
        solders.push_back(newSolder);
    }

    void updateStates(int count, int result, std::vector<int> values)
    {
        std::vector<Solder>::iterator it;
        for (vector<Solder>::size_type i = 0; i != count; i++)
        {
            it = std::find(solders.begin(), solders.end(), find_id(values[i]));
            if (result == 0)
            {
                it->update(0);
            }
            else
            {
                it->update(2);
            }
        }
    }
};
c++ stl
  • 1 个回答
  • 34 Views
Martin Hope
Pashok
Asked: 2022-08-20 23:06:59 +0000 UTC

当试图在向量中的类内查找“数字”字段时,它会给出错误不是类型名称

  • 0

我做了一个班级Solder,现在这个士兵必须从班级中添加和解雇Group。编译器不会对 add 方法发誓,但是当涉及到解雇时,您必须首先找到指向它的指针。在查找时,编译器会输出错误член "Group::solders" не является именем типа。如何摆脱它?课程如下:

class Group 
{
private:
    std::vector<Solder> solders;
    string* name;
    int countWin;
    int countLose;
public:
    //конструктор
    Group(string name_in = "Неизвестно")
    {
        name = new string(name_in);
        countWin = 0;
        countLose = 0;
    }
    //деструктор
    ~Group()
    {
        cout << "Удаление из памяти " << *this->name << endl;
        solders.clear();
        delete name;
    }

    void addSolder(string name, int number)
    {
        Solder newSolder(name, number);
        solders.push_back(newSolder);
    }

    void firedSolder(int number)
    {
        std::vector<Solder>::iterator it;
        // Пытаюсь найти место где находится солдат с нужным номером в векторе
        it = find_if(solders.begin(),
            solders.end(),
            [&cm = number]
        (const solders& m) -> bool { return cm == m; }); //Ошибку тут показывает
        
        solders.erase(it);
    }
};
class Solder
{
private:
    string* name;
    int number;

public:
    //конструктор
    Solder(string name_in = "Неизвестно", int number_in = 0)
    {
        name = new string(name_in);
        number = number_in;
    }
    //деструктор
    ~Solder()
    {
        cout << "Удаление из памяти " << *this->name << endl;
        delete name;
    }
    //возвращаем номер солдата
    int getNumber()
    {
        return number;
    }
};
c++ классы
  • 1 个回答
  • 28 Views
Martin Hope
Pashok
Asked: 2022-08-16 13:37:08 +0000 UTC

在 highcharts 菜单中选择一个项目后如何更改其名称?

  • 0

有一些图形数据,在选择项目时有必要制作板的外观。但是标准函数不支持html格式的表格标题,虽然图表标题正常支持。我通过在菜单中添加一个新按钮来做到这一点menuItemDefinitions,exporting但是如何在选择后覆盖其文本?与标准输出一样,它是必要的。改为View data table,Hide data table反之亦然。我们现在拥有的代码和我们想要的照片如下所示:在此处输入图像描述

var html = '<div style="display: inline-block"></div>';
html += '<div style="display: inline-block; margin-left: 20px; cursor: pointer;" class="description-title" id="">';
html += '<img style="width: 20px;" src="https://img.icons8.com/ios/500/info--v1.png" alt="Info">';
html += '</div>';
new Highcharts.Chart({
 chart: {
    renderTo: 'chart_1',
    type: 'column',
    height: 350,
 },
 title: {
    text: html,
    useHTML: true,
 },
 xAxis: {
    categories: ['Processing.js', 'Impact.js', 'Other', 'Ease.js', 'Box2D.js', 'WebGL', 'DOM', 'CSS', 'Canvas', 'Javascript']
 },
 yAxis: {
    title: {
       text: 'Опрошено'
    }
 },
 series: [{
    name: 'Dev #1',
    data: [5, 10, 20, 22, 25, 28, 30, 40, 80, 90],
    color: '#FF0000',
    states: {
        inactive: {
            enabled: false
        }
    }
 }, {
    name: 'Dev #2',
    data: [15, 15, 18, 40, 30, 25, 60, 60, 80, 70],
    states: {
        inactive: {
            enabled: false
        }
    }
 }, {
    name: 'Dev #3',
    data: [1, 3, 6, 0, 50, 25, 50, 60, 30, 100]
 }],
 exporting: {
        menuItemDefinitions: {
            // Custom definition
            label: {
                onclick: function() {
                  if (this.dataTableDiv && this.dataTableDiv.style.display !== 'none') {
                    this.text = "View data table";// Присваивается, но не отображается в меню
                    this.dataTableDiv.style.display = 'none';
                    this.dataTableDiv.querySelector(".highcharts-table-caption").innerHTML = html;
                  } else {
                    this.viewData();
                    this.text = "Hide data table";// Присваивается, но не отображается в меню
                    this.dataTableDiv.style.display = '';
                    this.dataTableDiv.querySelector(".highcharts-table-caption").innerHTML = html;
                  }
                },

                text:"View data table",
            }
        },
        buttons: {
            contextButton: {
                menuItems: ["viewFullscreen", "printChart", "separator", "downloadPNG", "downloadJPEG", "downloadPDF", "downloadSVG", "separator", "downloadCSV", "downloadXLS", 'label']
            }
        }
    }
});
.actions, .chart {
    margin: 15px auto;
    width: 820px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/accessibility.js"></script>
<div id="chart_1" class="chart"></div>

javascript
  • 2 个回答
  • 36 Views
Martin Hope
Pashok
Asked: 2022-07-16 19:31:22 +0000 UTC

如何从不同的表中获取数据量?(2个条件的内连接)

  • 0

有表:

users

+------------+-------------------+------+-----+---------+----------------+
| Field      | Type              | Null | Key | Default | Extra          |
+------------+-------------------+------+-----+---------+----------------+
| id         | int unsigned      | NO   | PRI | NULL    | auto_increment |
| date       | datetime          | NO   |     | NULL    |                |
| refererId  | int               | YES  |     | NULL    |                |
+------------+-------------------+------+-----+---------+----------------+

和表actions

+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int unsigned     | NO   | PRI | NULL    | auto_increment |
| userId     | int unsigned     | NO   |     | NULL    |                |
| refererId  | int unsigned     | YES  |     | NULL    |                |
| added      | datetime         | NO   |     | NULL    |                |
| amount     | int unsigned     | NO   |     | 0       |                |
| commission | int unsigned     | NO   |     | 0       |                |
| onHold     | tinyint unsigned | NO   |     | 1       |                |
+------------+------------------+------+-----+---------+----------------+

如何获取按日期分组的注册和操作数量?在表中为每个操作actions创建一行。我添加了两个内部函数并尝试将表名放在计数的 ifs 中,但仍然不是我需要的。我试图这样做,但它只返回当天的活动:

SELECT COUNT(if(amount > 0,1,NULL)) 'actions', COUNT(if(DATE(added) = DATE(date) AND amount != 0,1,NULL)) 'registration',  DATE(added) AS added, SUM(amount) AS amount, SUM(commission) AS comission
FROM actions
INNER JOIN user ref ON ref.id = actions.refererId
#INNER JOIN user use ON use.id = actions.userId
where actions.refererId = 1 AND onHold = 1
group By DATE(actions.added)

结果:

+-------+--------------+------------+--------+-----------+
| actions | registration | added      | amount | comission |
+---------+--------------+------------+--------+-----------+
|     3   |            0 | 2022-05-16 |    210 |        63 |
|     1   |            0 | 2022-04-28 |     15 |         2 |
+---------+--------------+------------+--------+-----------+

我试图这样做,但它只返回当天的注册:

SELECT COUNT(if(amount > 0,1,NULL)) 'actions', COUNT(if(DATE(added) = DATE(date) AND amount != 0,1,NULL)) 'registration',  DATE(added) AS added, SUM(amount) AS amount, SUM(commission) AS comission
FROM actions
#INNER JOIN user ref ON ref.id = actions.refererId
INNER JOIN user use ON use.id = actions.userId
where actions.refererId = 1 AND onHold = 1
group By DATE(actions.added)

结果:

+---------+--------------+------------+--------+-----------+
| actions | registration | added      | amount | comission |
+---------+--------------+------------+--------+-----------+
|      1  |            1 | 2022-04-28 |     15 |         2 |
+---------+--------------+------------+--------+-----------+

预期结果:

+---------+--------------+------------+--------+-----------+
| actions | registration | added      | amount | comission |
+---------+--------------+------------+--------+-----------+
|       3 |            0 | 2022-05-16 |    210 |        63 |
|       1 |            1 | 2022-04-28 |     15 |         2 |
+---------+--------------+------------+--------+-----------+
mysql
  • 1 个回答
  • 31 Views
Martin Hope
Pashok
Asked: 2022-06-30 15:28:47 +0000 UTC

将鼠标悬停在高图中的组列上时如何仅隐藏该组的列?

  • 0

默认情况下,悬停会隐藏所有组中的所有其他列。我怎样才能使只有该组中的列在悬停时隐藏?我在文档中找到了悬停事件,并获取了列(左上角),但是如何用它隐藏它?也许通过tooltip什么?

现在如何工作 它现在如何工作的一个例子: 的一个例子:它应该如何工作的一个例子: 示例如何

chart1 = new Highcharts.Chart({
 chart: {
    renderTo: 'chart_1',
    type: 'column',
    height: 350,
 },

 title: {
    text: 'Планы разработчиков по созданию HTML5 игр с помощью разных инструментов(в %)'
 },
 xAxis: {
    categories: ['Processing.js', 'Impact.js', 'Other', 'Ease.js', 'Box2D.js', 'WebGL', 'DOM', 'CSS', 'Canvas', 'Javascript']
 },
 yAxis: {
    title: {
       text: 'Опрошено'
    }
 },
 /*tooltip: {
   shared: true,
   split: true,
 },*/
 plotOptions: {
   series: {
            point: {
              events: {
                mouseOver: function() {
                  var chart = this.series.chart;
                  if (!chart.lbl) {
                        chart.lbl = chart.renderer.label('')
                            .attr({
                                padding: 10,
                                r: 10,
                                fill: Highcharts.getOptions().colors[1]
                            })
                            .css({
                                color: '#FFFFFF'
                            })
                            .add();
                    }
                    chart.lbl
                        .show()
                        .attr({
                            text: 'x: ' + this.x + ', y: ' + this.y
                        });
                }
              }
            },
            events: {
                mouseOut: function (){
                    if (this.chart.lbl) {
                        this.chart.lbl.hide();
                    }
                }
            }
        },
        column: {
          groupPadding: 0.1,
          pointPadding: 0.1,
          borderWidth: 0,
          events: {
            mouseOver: function() {
              console.log("1");
            }
          }
        }
 },
 series: [{
    name: 'Dev #1',
    data: [5, 10, 20, 22, 25, 28, 30, 40, 80, 90]
 }, {
    name: 'Dev #2',
    data: [15, 15, 18, 40, 30, 25, 60, 60, 80, 70]
 }, {
    name: 'Dev #3',
    data: [1, 3, 6, 0, 50, 25, 50, 60, 30, 100]
 }]
});
.actions, .chart {
    margin: 15px auto;
    width: 820px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="chart_1" class="chart"></div>

javascript highcharts
  • 1 个回答
  • 54 Views
Martin Hope
Pashok
Asked: 2022-06-19 19:01:12 +0000 UTC

fputcsv 无法格式化字符串

  • 0

有一个功能可以完美地将数据写入文件并即时保存。唯一的问题是,当我尝试resultArray通过 fputcsv 格式化数据时,它无法执行此操作并返回:

*** 的网页可能暂时不可用或永久移至新地址

但是,对于更简单的数组,selectedColumn一切正常。下面是代码和resultArray. 我不明白为什么会这样。也许数组没有正确组合并且因此无法格式化?

编码:

function checkEmptyField($field)
{
  if(empty($field))
  {
    return '-';
  }else
  {
    return $field;
  }
}

$nameFile = 'keywords.csv';
$handle = fopen("php://output", "w");
        
header('Content-disposition: attachment; filename='.$nameFile);
header('Content-Type: text/csv; charset=UTF-8');
        
// Create head of table
$selectedColumn = [];
foreach ($clientColumns as $key=>$val)
{
  if($val == 1)
  {
     $selectedColumn [] = $key;
  }
}
      
// Create body of table
$resultArray = [$selectedColumn];
foreach ($keywordsCharacteristic as $fields) 
{
   $tempRow = [];
   foreach ($selectedColumn as $column)
   {
      switch ($column) {
        case "features":
          $tempRow [] = $fields['serpFeatures'];
          break;
        case "position":
          $tempRow [] = checkEmptyField($fields['position']);
          break;
        case "traffic":
          $tempRow [] = checkEmptyField($fields['traffic']);
          break;
        case "volume":
          $tempRow [] = checkEmptyField($fields['volume']);
          break;
        case "CPC":
          $tempRow [] = checkEmptyField($fields['cpc']);
          break;
        case "url":
            $tempRow [] = checkEmptyField($fields['pageUrl']);
            break;
        case "checked":
          $tempRow [] = checkEmptyField($fields['checked']);
          break;
        }
      }
      $resultArray [] = $tempRow;
}
var_dump($resultArray);
//fputcsv($handle, $resultArray);
fclose($handle);
exit();

关于resultArray. 即使我删除了 对应的字段features,也不会有结果,尽管数组将变得与文档中的示例相同,只是更大。

字段匹配features:

[0]=>
    array(2) {
      [0]=>
      array(3) {
        ["key"]=>
        string(7) "reviews"
        ["img"]=>
        string(11) "reviews.png"
        ["name"]=>
        string(7) "Reviews"
      }
      [1]=>
      array(3) {
        ["key"]=>
        string(15) "relatedSearches"
        ["img"]=>
        string(12) "Searches.png"
        ["name"]=>
        string(16) "Related Searches"
      }
    }
array(3) {
  [0]=>
  array(7) {
    [0]=>
    string(8) "features"
    [1]=>
    string(8) "position"
    [2]=>
    string(7) "traffic"
    [3]=>
    string(6) "volume"
    [4]=>
    string(3) "CPC"
    [5]=>
    string(3) "url"
    [6]=>
    string(7) "checked"
  }
  [1]=>
  array(7) {
    [0]=>
    array(2) {
      [0]=>
      array(3) {
        ["key"]=>
        string(7) "reviews"
        ["img"]=>
        string(11) "reviews.png"
        ["name"]=>
        string(7) "Reviews"
      }
      [1]=>
      array(3) {
        ["key"]=>
        string(15) "relatedSearches"
        ["img"]=>
        string(12) "Searches.png"
        ["name"]=>
        string(16) "Related Searches"
      }
    }
    [1]=>
    string(1) "-"
    [2]=>
    string(1) "-"
    [3]=>
    string(1) "-"
    [4]=>
    string(1) "-"
    [5]=>
    string(1) "-"
    [6]=>
    string(10) "2022-02-07"
  }
  [2]=>
  array(7) {
    [0]=>
    array(3) {
      [0]=>
      array(3) {
        ["key"]=>
        string(7) "reviews"
        ["img"]=>
        string(11) "reviews.png"
        ["name"]=>
        string(7) "Reviews"
      }
      [1]=>
      array(3) {
        ["key"]=>
        string(5) "tweet"
        ["img"]=>
        string(9) "tweet.png"
        ["name"]=>
        string(5) "Tweet"
      }
      [2]=>
      array(3) {
        ["key"]=>
        string(15) "relatedSearches"
        ["img"]=>
        string(46) "Searches.png"
        ["name"]=>
        string(16) "Related Searches"
      }
    }
    [1]=>
    string(1) "3"
    [2]=>
    string(1) "-"
    [3]=>
    string(1) "-"
    [4]=>
    string(1) "-"
    [5]=>
    string(1) "-"
    [6]=>
    string(10) "2022-02-07"
  }
}

php
  • 1 个回答
  • 31 Views
Martin Hope
Pashok
Asked: 2022-09-02 19:35:32 +0000 UTC

删除列表中除最后一次出现的元素的所有副本

  • 0

如何删除列表中除最后一次出现之外的所有元素副本?下面的代码部分工作 - 仅适用于元素的一份副本。但如果元素在开头或重复超过 2 次,则会给出不同的错误。

列表的预期结果是2 3 3 2 4 5 6 5 -> 3 2 4 6 5。但是当我们尝试执行时,我们得到:Вызвано исключение: нарушение доступа для чтения. cur было 0xFFFFFFFFFFFFFFF7.per linefor (List* cur(head); cur && cur->next; cur = cur->next) {

示例 1:有一个列表2 3 4 5 3。执行后会正确 -> 2 4 5 3

示例 2:另一个列表3 2 4 5 3。执行后写的是1个元素被删除了,但是在尝试输出后,出现错误Вызвано исключение: нарушение доступа для чтения. p было 0xFFFFFFFFFFFFFFFF.就行printf("%d", p->value);

示例 3:有很多重复的列表2 3 4 3 5 3。执行后写的是2个元素被删除了,但是显示的是2 4 5

在我看来,错误在于传递head给函数的错误Delete_copy,但我不知道如何解决它。

struct List{
    int value; 
    List* next; 
    List(int val = 0, List* p = NULL) {
        value = val;
        next = p;
    }
};
List* Insert_first(int n, List* head){
    List* q = new List(n, head);
    return q;
}
List* Delete_value(int n, List* head)
{
    List* p = head, * t;
    if (head == NULL) { puts("LIST EMPTY!"); return NULL; }
    if (head->value == n)
    {
        t = head;
        head = head->next;
        delete t;
        return head;
    }
    while (p->next != NULL)
        if (p->next->value == n)
        {
            t = p->next;
            p->next = p->next->next;
            delete t;
            return head;
        }
        else p = p->next;
    puts("NO VALUE!");
    return head;
}
void Print_list(List* head){
    List* p = head;
    puts("\n PRINT LIST");
    if (p == NULL) puts("List empty!");
    else
        while (p != NULL){
            printf("%d ", p->value);
            p = p->next;
        }
}
int Delete_copy(int countRes, List * head) {
    std::vector<int> v;
    v.push_back(head->value);
    for (List* cur(head); cur && cur->next; cur = cur->next) {
        if ((std::find(v.begin(), v.end(), cur->next->value) != v.end()) && cur->next) {
            head = Delete_value(cur->next->value, head);
            countRes++;
            Delete_copy(countRes, head);
        }
        else {
            if (cur->next){
                v.push_back(cur->next->value);
            }
            else {
                return countRes;
            }
        }
    }
    return countRes;
}
void main()
{
    int i, k, n, num;
    char const * ss[] = { "\n 0-Print list"," 1-Insert first", " 2-Delete copy"," 3-EXIT" };
    char c{};
    List* head = NULL;
    k = sizeof(ss) / sizeof(ss[0]);
    for (;;){
        for (i = 0; i < k; i++) puts(ss[i]);
        scanf_s("%c", &c); 
        switch (c){
        case '0': Print_list(head);    break;
        case '1': printf("n = "); scanf_s("%d", &num); head = Insert_first(num, head);    break;
        case '2': printf("Was delete %d elemens", Delete_copy(0, head)); break;
        case '3': return;
        }
    }
}
c++
  • 1 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2021-11-09 15:42:03 +0000 UTC

为什么 qsort 不能正确地对动态分配的结构进行排序?

  • 0

有必要按采集月份从小到大对所有记录进行分组。如果您决定不使用动态内存分配,那么它会按应有的方式从小到大排序,但是如果您更改代码,那么排序就不会那样工作。下面是按错误顺序排序的代码。

#include <stdio.h>
#include <stdlib.h>
#define COUNT_ITEMS 4

typedef struct Product {
    char name[256];
    int day;
    int month;
    int year;
    int cost;
    int count;
} Product;
void printinfo(const Product *prod)
{
    printf("Product name: %s\n", prod->name);
    printf("Date of purchase : %d.%d.%d\n", prod->day, prod->month, prod->year);
    printf("Product price: %d\n", prod->cost);
    printf("Number of products: %d\n", prod->count);
}

Product *prodRead() {
    Product *prod;
    prod = malloc(sizeof(Product));
    printf("Enter name of a Product:\n");
    scanf("%s", &prod->name);
    printf("Enter day, month(number), year of purchase through a space:\n");
    scanf("%d%d%d", &prod->day, &prod->month, &prod->year);
    printf("Enter cost of product:\n");
    scanf("%d", &prod->cost);
    printf("Enter number of product:\n");
    scanf("%d", &prod->count);
return prod;
}
int compMon(const void *a, const void *b) {
    const Product *partOne = (Product *)a;
    const Product *partTwo = (Product *)b;
    return ((*partOne).month > (*partTwo).month) - ((*partOne).month < (*partTwo).month);
}
int main() {
    Product *prod[COUNT_ITEMS];
    for (int i = 0; i < COUNT_ITEMS; i++) {
        prod[i]=prodRead();
        printf("\n");
    }
    qsort(prod, COUNT_ITEMS, sizeof(Product*), compMon);
    printf("Structura POSLE sortirovki \n");
    for (int i = 0; i < COUNT_ITEMS; i++) {
        printinfo(prod[i]);
        printf("\n");
    }
return 0;
}

输入数据(左)和输出数据(右):

A                                    C   
10 11 2020                           6 6 2020
1000                                 600
2                                    1
B                                    A
5 5 2019                             10 11 2020
500                                  1000
3                                    2
C                                    D 
6 6 2020                             3 3 2018
600                                  200
1                                    2
D                                    B
3 3 2018                             5 5 2019
200                                  500
2                                    3
c
  • 1 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-05-23 15:29:09 +0000 UTC

如何找出脚本执行的速度?

  • 0

有一项任务是将 R 语言添加到 php。我想比较一下纯php和R语言的脚本执行速度,这个怎么查,用什么资源?

php
  • 1 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-05-13 18:45:45 +0000 UTC

如何为调用的ajax请求数做一个计数器?

  • 1

有几种表格可以用 Approved/Rejected 来回答。单击 Approved/Rejected 后,将调用 AJAX。我想在成功的 AJAX 调用后将 +1、+2 等添加到跨度。怎么做才更正确?

js:

$( document ).ready(function() {
  var formaElement = $(".container");
  var counter = 0;
  formaElement.find("form[id*='zaya']").each(function() {
    var stringsp = 'zaya';
    var element = document.querySelectorAll("form[id*='zaya']")[counter];
    var idElement = element.id;
    var need = idElement.split(stringsp);
    var need = need[1];
    $("#odoZaSe"+need).click(function(ev){
      ev.preventDefault();
      var newDivOtk = document.getElementById("creaDivOtk"+need);
      newDivOtk.remove();
      var odob = "True";
      sendAjaxForm('result_form', 'zaya'+need, 'zayavki.php', odob);
      var forRemo = "zaya"+need";
      removeForm(forRemo);//Удаляем отправленную форму
        return false;
    });
    counter++;
  });
});
function otkZa(idza, coun){
  var desc = document.createElement("div");
  desc.className = "form-group";
  desc.id = "creaDivOtk"+coun;
  desc.innerHTML = "<label>Причина отказа:</label>"+
  "<input name=\"desc\" type=\"text\" class=\"form-control\" placeholder=\"Причина\">"+
  "<input class=\"btn btn-primary\" type=\"text\" name = \"otkZaSe"+idza+"\" id=\"otkZaSe"+coun+"\" readonly value=\"Отклонить\">";
  var placeDiv = document.getElementById("otkZa"+coun);
  var parent = placeDiv.parentNode;
  parent.insertBefore(desc, placeDiv);
  placeDiv.remove();
  var rem = document.getElementById("odoZaSe"+coun);
  rem.remove();
  var forRemo = document.getElementById("id ='zaya"+coun+"']");
  $("#otkZaSe"+coun).click(function(ev){
      ev.preventDefault();
      var odob = "False";
      sendAjaxForm('result_form', 'zaya'+coun, 'zayavki.php', odob);
      removeForm(forRemo);//Удаляем отправленную форму
        return false;
    });
}
function sendAjaxForm(result_form, reg_form, url, odob) {
    $.ajax({
        url:     url,
        type:     "POST",
        dataType: "html", //формат данных
        data: $("#"+reg_form).serialize(),
        success: function(response) {
          result = $.parseJSON(response);
          if(result.good == "True"){
            var message = document.getElementById('result_form');
            message.innerHTML += "<p style='color: red;'>Операция произведена</p>";
            message.scrollIntoView();
            if(odob == "True"){
              var span = document.getElementById('prinato');
              var text = document.getElementById('prinato').textContent;
              span.innerHTML = text+"<p style='color: red;'>+ "+number+"</p>";
              //Вот здесь должно добавляться +1, +2 и тд.
            }else if (odob == "False") {
              var span = document.getElementById('nePrinato');
              var text = document.getElementById('nePrinato').textContent;
              span.innerHTML = text+"<p style='color: red;'>+ "+number+"</p>";
              //Вот здесь должно добавляться +1, +2 и тд.
            }
          }
        },
        error: function(response) { 
            $('#result_form').html('Ошибка. Данные не отправлены.');
        }
    });
}

html $counterZaya - 只是一个柜台,$idZaya - 票证 ID:

<p>
<!--Тут из БД берётся кол-во заявок до запросов-->
Принятые заявки: <span id = 'prinato' class = ''>$countPrin</span>
Не принятые заявки: <span id = 'nePrinato' class = ''>$countNePrin</span>
</p>
<div id="result_form"></div>
<div class="container">
  <!--Тут в цикле выводятся формы-->
  <form id=\"zaya$counterZaya\" class=\"buttons\">
    <input name="odoZaSe$idZaya" id = "odoZaSe$counterZaya" type="text" class="btn btn-primary" value="Одобрить" readonly>
    <button onclick="otkZa($idZaya, $counterZaya);" id="otkZa$counterZaya">Отклонить</button>
  </form>
</div>
javascript
  • 1 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-05-09 23:34:02 +0000 UTC

如何简化检查现有变量?

  • 0

实际上有4个变量。哪个底部给出是未知的。每个变量的操作都是相同的。如何在不单独检查每个变量的情况下获得给定变量?

if(empty($first) and empty($second) and empty($third) and empty($fourth)){
  echo "Все пусты";
}else{
  //$desvar = ?;
  $que = "SELECT id FROM table WHERE id = ?";
  $prepque = $db->prepare($que);
  $prepque->bind_param("i", $desvar);
  $prepque->execute();
}
php
  • 2 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-03-30 19:25:16 +0000 UTC

会话在 joomla 中不起作用

  • 1

情况是这样的:有2个材料:regis和profil,有一个连接到regis的ajax脚本,有一个通过ajax发送到saveUser.php的表单处理程序。如果您使用以下代码,那么一切都会正常运行(所有检查都有效,一切都已保存,它会从 regis 切换到 profil)。

注册:

<div id="result_form"> </div>
<form id="reg_form" class="form" action="" method="POST">
<div class="form-group"><label>Ваш логин для входа на сайт:</label><br /> <input class="form-control" maxlength="50" name="login" type="text" placeholder="Your login..." data-validate="" /><span class="hint">Обязательно для заполнения</span></div>
<div class="form-group"><label>Ваш пароль:</label><br /> <input class="form-control" maxlength="50" name="password" type="password" placeholder="Your pASS..." data-validate="" /><span class="hint">Обязательно для заполнения</span></div>
<div class="form-group"><label>Ваша должность:</label><br /> <input class="form-control" maxlength="50" name="position" type="text" placeholder="Your position..." data-validate="" /><span class="hint">Обязательно для заполнения</span></div>
<div class="form-group"><label>Ваше место работы:</label><br /> <input class="form-control" maxlength="50" name="placeJob" type="text" placeholder="Your place job..." data-validate="" /><span class="hint">Обязательно для заполнения</span></div>

<div class="form-group"><input id="reg_btn" class="btn btn-primary" name="submit" type="submit" value="Зарегистрироваться" /></div></form>

profile - 这里应该通过 sourcerer 插件从会话中输出一个值

{source} <?php
echo("Hello");
?> {/source}

阿贾克斯:

$( document ).ready(function() {
    $("#reg_btn").click(
        function(ev){
          ev.preventDefault();
          var forma = $("#reg_form");
          var field = [];
          var leng = 0;
          forma.find('input[data-validate]').each(function() {
            field.push('input[data-validate]');
            var value = $(this).val();
            var line = $(this).closest('.form-group');
              if(!value){
                line.addClass('emptyField');
                setTimeout(function() {
                  line.removeClass('emptyField')
                }.bind(this),3000);
              }else{leng++;}            
          });
          if(leng == field.length){
            sendAjaxForm('result_form', 'reg_form', 'http://ip/nameSite/templates/bootstrap4/dopScripts/saveUser.php');
            return false;            
          }
        }
    );
});

function sendAjaxForm(result_form, reg_form, url) {
    $.ajax({
        url:     url, 
        type:     "POST", 
        dataType: "html", //формат данных
        data: $("#"+reg_form).serialize(),  
        success: function(response) { 
          result = $.parseJSON(response);
          if(result.already == "True"){
            var message = document.getElementById('result_form');
            message.innerHTML = "<p style='color: red;'>Такой логин уже существует</p>";            
            message.scrollIntoView();
          }else{
            window.location.href = 'moj-profil';            
          }
        },
        error: function(response) {
            $('#result_form').html('Ошибка. Данные не отправлены.');
        }
    });
}

保存用户.php:

<?php
  if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
  if (isset($_POST['password'])) { $password = $_POST['password']; if ($password =='') { unset($password);} }
  if (isset($_POST['position'])) { $position = $_POST['position']; if ($position =='') { unset($position);}}
  if (isset($_POST['placeJob'])) { $placejob = $_POST['placeJob']; if ($placejob =='') { unset($placejob);}}  
  include('bd.php');
  $checkUser="SELECT nick FROM registration WHERE nick = ?";
  $query = $db->prepare($checkUser);
  $query->bind_param("s", $login);
  $query->execute();
  $query->store_result();
  $query->bind_result($check_email);
  $query->fetch();
  $empty = $query->num_rows();
  if($empty != 0){
    $already="True";
    $result = array('already'=>$already);
  }else{
    $insert = "INSERT INTO registration (nick, pass, position, placejob)VALUES (?, ?, ?, ?)";
    $qinsert = $db->prepare($insert);
    $qinsert->bind_param("ssss", $login, $password, $position, $placejob);
    $qinsert->execute();
    $already="False";
    //THIS PLACE 
    $result = array(
        'already' => $already,
        'login' => $login
    );
  }
  echo json_encode($result);
?>

现在的问题。很多资料表明,session_start(); $_SESSION['']jooml 中的常规构造会话不起作用,应使用以下构造:

报名参加会议

define( '_JEXEC', 1 );
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT']);
define( 'DS', DIRECTORY_SEPARATOR );
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
$mainframe = JFactory::getApplication('site');
$session = JFactory::getSession();
$session->set('myVar', array('login'=>$login, 'first'=>1));

要获得会话:

{source} <?php
define( '_JEXEC', 1 );
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT']);
define( 'DS', DIRECTORY_SEPARATOR );
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();
$session = JFactory::getSession();
$mySess = $session->get('myVar', array());
echo("Hello $mySess");//Результат Hello Array
foreach($mySess as $one){
echo("Hello".$one['login']." ".$one['first']);//Результат пуст
}
?> {/source}

但它不起作用,因为如果会话入口代码插入//THIS PLACE到 saveUser.php 文件或任何其他地方,那么所有内容都将写入数据库,但 ajax 不会重定向到新页面并会说Uncaught SyntaxError: Unexpected end in JSON,如果使用defined('_JEXEC') or die;或Uncaught SyntaxError: Unexpected token < in JSON,如果使用define('_JEXEC', 1);。 我是joomle的新手,不太了解。您能告诉我如何修复此错误,以便会话正常连接、保存和工作吗?

php
  • 1 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-11-24 23:14:17 +0000 UTC

准备查询返回错误的结果

  • 1

有一个简单的查询可以工作,但是如果你输入',那么它就不会工作,因此prepare查询不会尝试这样做,但它会返回 0 作为结果,虽然不是这种情况并且包含在健康)状况。如何解决?我尝试了 throughfetchColumn()和 through $empty = $query->rowCount() === 0; var_dump($empty); if ($empty),但它们都没有工作。

工作请求(真的有这样的用户,如果不进入)

$checkPoluch = mysqli_query($db, "SELECT * FROM users WHERE login = '$namePol'");
      $empty = mysqli_num_rows($checkPoluch);
      if ($empty == 0) {        
        echo "Ошибка!";
        exit("");
      }

通过prepare(在if进入,即使有这样的登录)

$checkPoluch = "SELECT * FROM users WHERE login = ?";
  $query = $db->prepare($checkPoluch);
  $query->bind_param("s", $namePol);
  $query->execute();
  $empty = $query->num_rows;
  if ($empty == 0) {
    echo "Ошибка!";
    exit("");
  }
php
  • 1 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-09-26 19:45:13 +0000 UTC

如何在没有输入的情况下通过 POST 发送变量

  • 0

有一种形式是通过 POST 请求传递 selects 的值,但是需要给它们添加一个数组,这个数组是在这些 selects 的创建过程中形成的。怎么做?是不是可以不把这个写入测试输入的值,然后再发送呢?:)

第一个.php:

<form class="forma" action="second.php" method="post">
  <div class="form-group">
    <select class="form-control" name="NamesUsers">
<?php
      $name = $_SESSION['login'];      
      $availableNames = array();
      if ($_SESSION['RolOfUser'] == 'admin'){
        $sql = mysqli_query($db, "SELECT login FROM users WHERE login != '$name'");
        while ($row = $sql->fetch_assoc())
        {
          echo "<option value=\"".$row['login']."\">" . $row['login'] . "</option>";
          array_push($availableNames, $row['login']);
        }
      }else {
        $sqlModer = mysqli_query($db,
        "SELECT login FROM users INNER JOIN roli ON users.id=roli.UserId where users.login !='$name' and roli.RolOfUser !='admin'");
        while ($rrow = $sqlModer->fetch_assoc()) {
          echo "<option value=\"".$rrow['login']."\">" . $rrow['login'] . "</option>";
          array_push($availableNames, $row['login']);
        }
      }
?>

    </select>
  </div>
    <div class="form-group">
      <select class="form-control" name = "SetRol">
        <option value = "admin">Сделать администратором</option>
        <option value = "moderator">Сделать модератором</option>
        <option value = "user">Понизить до ЮЗВЕРЯ</option>
      </select>
    </div>  
  <input class="btn btn-primary" type="submit" value="Изменить роль">
</form>

第二个.php:

  $NameUser = $_POST['NamesUsers'];
  $NameRol = $_POST['SetRol'];
  $allowed = array("admin", "moderator", "user");
  //$availableNames = $_POST['$availableNames']; ???
  if(in_array($NameRol, $allowed) and in_array($NameUser, $availableNames)){
    $sql = "UPDATE roli SET RolOfUser = ? WHERE UserId = (SELECT id FROM users WHERE login = ?)";
    $statement = $db->prepare($sql);
    $statement->bind_param("ss", $NameRol, $NameUser);
    $statement->execute();
  }else{
    echo "<div class=\"message center\"><p>Невозможный пользователь или роль</p></div>";
  }
php
  • 3 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-09-07 15:31:30 +0000 UTC

如何通过子进程Popen只显示你需要的参数

  • 3

如果使用这段代码,那么计算机上的所有进程都会显示出来,但我不需要知道这些进程的所有信息,只需要知道它们的 id 和它们占用多少内存即可。如果不使用 psutil 库,我找不到如何做到这一点。

    import os
    from subprocess import Popen, PIPE, check_output
    print(*[line.decode('cp866', 'ignore') 
    for line in Popen('tasklist', stdout=PIPE).stdout().readlines()])
python
  • 2 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-08-27 19:08:44 +0000 UTC

为什么图片插错地方了?图像复制重新采样

  • 1

我有一个能够选择它的原始图像(使用imgAreaSelect)。然后我通过坐标 x1= 130, y1 = 70, x2 = 280, y2 = 220 选择它并创建它们的缩小副本,但它不是由所选坐标创建的,不清楚如何创建。即使您手动输入坐标。

第一个.php:

<img src="avatars/default.jpg" id="photo" alt="">
    <form action = "second.php" method = "post" >
      <input type = "text" name = "x1" value = "" />
      <input type = "text" name = "y1" value = "" / >
      <input type = "text" name = "x2" value = "" />
      <input type = "text" name = "y2" value = "" />
      <input type = "text" name = "w" value = "" />
      <input type = "text" name = "h" value = "" />
      <input type = "submit" name = "submit" value = "Submit" />
    </ form>

第二个.php:

<?php
$x1 = $_POST['x1'];
$y1 = $_POST['y1'];
$x2 = $_POST['x2'];
$y2 = $_POST['y2'];
$w = $_POST['w'];
$h = $_POST['h'];
echo "x1 = $x1, y1 = $y1, x2 = $x2, y2 = $y2, w = $w, h = $h";

function resizeimg($filename, $smallimage, $xx, $yy, $w, $h)
  {
    $ratio = $w/$h;
    // получим размеры исходного изображения
    $size_img = getimagesize($filename);
    // получим коэффициент сжатия исходного изображения
    $src_ratio=$size_img[0]/$size_img[1];

    $dest_img = imagecreatetruecolor($w, $h);
    $src_img = imagecreatefromjpeg($filename);
         imagecopyresampled($dest_img, $src_img, 130, 70, 280, 220, $w, $h, $w, $h);

    imagejpeg($dest_img, $smallimage);
    imagedestroy($dest_img);
    imagedestroy($src_img);
    return true;
  }
      $image = "avatars/default.jpg"; //большое фото
      $smallimage = "avatars/default_s.jpg";  // малое фото
      if  (!resizeimg($image, $smallimage, $x1, $y1, 150, 150))
         { echo  "Ошибка при создании уменьшенной копии изображения"; }else {
           echo "normasno";
         }
?>

应该出现在右边的照片: 在此处输入图像描述

发生的事情的照片:

在此处输入图像描述

php
  • 2 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-06-27 16:24:42 +0000 UTC

为什么返回 [object Object]?

  • 0

情况看起来很简单,但我终于搞糊涂了。底线是您需要为每个元素添加一个 id,其值是 = 到 value 属性。但最终 valuev 数组充满了值,但是当我尝试添加它们时,它返回 [object Object]。JQ:

var valuev = [];
        $("input[type=checkbox]:not(:first)").each( function( index) { valuev[index] = $(this).attr("value"); });
        $("input[type=checkbox]:not(:first)").attr({
          name: "checkMess[]",
          id: ""+($("input[type='checkbox']:not(:first)").each( function( index, element) {
            var i = index;
            $( element).attr({
              value: ""+valuev[index]// Тут [object Object]
            });
            alert(valuev[i]);//Тут нормальные значения
            }
          ))
        });

HTML:

<input type="checkbox" value="first">
<input type="checkbox" value="second">
<input type="checkbox" value="third">
<input type="checkbox" value="fourth">

因此:

<input type="checkbox" value="first">
<input type="checkbox" value="second" name="checkMess[]" id="[object Object]">
<input type="checkbox" value="third" name="checkMess[]" id="[object Object]">
<input type="checkbox" value="fourth" name="checkMess[]" id="[object Object]">
javascript
  • 1 个回答
  • 10 Views
Martin Hope
Pashok
Asked: 2020-06-24 17:38:31 +0000 UTC

querySelector 和 getElementById 有什么区别?

  • 1

这个问题可能太笼统或离题,但我很好奇。我见过有人用querySelectorid 而不是类名来查找元素。为什么不使用该方法getElementById,因为它是专门为此设计的?querySelector执行得更快或更正确?

javascript
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5