

PHPの例の自動販売機システムの作成中で起きたことです。  
操作や挙動が思ってたのよりもうまくいかないです。

①  
URLを開いた瞬間いきなりエラーメッセージが表示される。  
[![画像の説明をここに入力](https://i.stack.imgur.com/ngrQP.png)](https://i.stack.imgur.com/ngrQP.png)  
②  
空欄で入力するとエラーメッセージは表示されるが、同時にデータも登録されてしまう。  
[![画像の説明をここに入力](https://i.stack.imgur.com/KMc3S.png)](https://i.stack.imgur.com/KMc3S.png)  
2回目も空欄で入力するとエラーメッセージは表示されるが、同時になぜか2つもデータも登録されてしまう。  
[![画像の説明をここに入力](https://i.stack.imgur.com/DBsv6.png)](https://i.stack.imgur.com/DBsv6.png)  
3回目、4回目も2回目と同様です。  
③  
データを入れて入力するとなぜか個数だけ登録できていない。  
[![画像の説明をここに入力](https://i.stack.imgur.com/5qk2t.png)](https://i.stack.imgur.com/5qk2t.png)  
[![画像の説明をここに入力](https://i.stack.imgur.com/Br898.png)](https://i.stack.imgur.com/Br898.png)  
2回目でデータを入れて入力するとなぜか前回入力したデータと今回入力したデータ(個数0)が登録されてしまう。  
[![画像の説明をここに入力](https://i.stack.imgur.com/8Eklg.png)](https://i.stack.imgur.com/8Eklg.png)  
[![画像の説明をここに入力](https://i.stack.imgur.com/iKsqV.png)](https://i.stack.imgur.com/iKsqV.png)  
3回目、4回目も2回目と同様です。  
関数を一緒に合体させたり、submitを押されたときに等条件を追加しましたが、データが登録できなくなったり、エラーメッセージが表示されなくなったりなどうまくいきませんでした。  
おそらくinsert_drink関数とdo_sql関数とvalidation_check関数がうまくいってないのですが直し方がわかりません。  
お手数をおかけしますがご教授のほどよろしくお願いいたします。

ソースコード  
functions.php

[code]

    <?php
    require_once('../../include/conf/const.php');
    require_once('../../htdocs/mvc/tool.php');
    require_once('../../htdocs/mvc/index.php');
    require_once('../../htdocs/mvc/result.php');
    
    
    function get_db_connect() {
     
    if (!$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD, DB_NAME)) {
            die('error: ' . mysqli_connect_error());
        }
        mysqli_set_charset($link, DB_CHARACTER_SET);
        return $link;
    }
    
    function close_db_connect($link) {
    
        mysqli_close($link);
    }
    
    function insert_drink($link) {
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        return;
    }
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'insert') {
            
            if (isset($_POST['new_name']) === TRUE) {
                
                $new_name = $_POST['new_name'];
                    
            }
            
            if (isset($_POST['new_price']) === TRUE) {
            
                $new_price = $_POST['new_price'];
                        
            }
            
            if (isset($_POST['new_stock']) === TRUE) {
                
                $new_stock = $_POST['new_stock'];
                    
                
            }
    
            /*もしもisset($_POST['new_status']の中身がTRUEならば*/
            if (isset($_POST['new_status']) === TRUE) {
                
                /*もしもisset($_POST['new_stock']の中身がTRUEならば*/
                if ((int) $_POST['new_status'] === 0 || (int) $_POST['new_status'] === 1) {
                    $new_status = (int) $_POST['new_status'];
                } else {
                    $err_msg[] = 'ステータスは公開か非公開を選択してください'; 
                 }
            } else {
                $err_msg[] = 'ステータスを選択してください';
                
                
            }
    
                $new_time = date('Y-m-d H:i:s');
    
    
                $sql = 'INSERT INTO drink_info_table(drink_name, price, created_at, updated_at, status) VALUES(\''.$new_name.'\',\''.$new_price.'\',\''.$new_time.'\',\''.$new_time.'\',\''.$new_status.'\')';
    
                if ($result = mysqli_query($link, $sql) === TRUE) {
    
                    $drink_id = mysqli_insert_id($link);
    
    
                    $sql = 'INSERT INTO stock_table(drink_id, stock, created_at, updated_at) VALUES(\''.$drink_id.'\',\''.$new_stock.'\',\''.$new_time.'\',\''.$new_time.'\')';
    
                    if ($result = mysqli_query($link, $sql) !== TRUE) {
                        $err_msg[] = 'stock_tableへのデータの登録に失敗しました';
                        
                
                    }
                } else {
                    $err_msg[] = 'drink_info_tableへのデータの登録に失敗しました';
                    
                    
                }
                    $complete_msg[] = '追加登録完了!';
                    
                }
    }
    
            
    // function update_drink() {
    //     if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'update') {
    
    //         if (isset($_POST['update_stock']) === TRUE) {
    //             if (preg_match('/^[0-9]+$/', cut($_POST['update_stock'])) === 1) {
    //                 $update_stock = (int) cut($_POST['update_stock']);
    
    //                 $update_time = date('Y-m-d H:i:s');
    
    //                 $update_id = $_POST['drink_id'];
    
    //                 $sql = 'UPDATE stock_table SET stock = ' . $update_stock . ', updated_at = \'' . $update_time;
    
    //                 if ($result = mysqli_query($link, $sql) === TRUE) {
    //                     $complete_msg[] = '在庫数更新完了!';
                        
    //                     ;
                        
    //                 } else {
    //                     $err_msg[] = '在庫数の更新に失敗しました';
                        
                       
    //                 }
    //             } else {
    //                 $err_msg[] = '0以上の半角整数を入力してください';
                    
                  
    //             }
    //         }
    //     }
    // }
    // function change_drink() {
    //     if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'change') {
    
    //         if (isset($_POST['change_status']) === TRUE) {
    //             if ((int) $_POST['change_status'] === 0 || (int) $_POST['change_status'] === 1) {
    //                 $change_id = $_POST['drink_id'];
    //                 $change_status = (int) $_POST['change_status'];
    
    //                 $change_time = date('Y-m-d H:i:s');
    
    //                 $sql = 'UPDATE drink_info_table SET updated_at = \'' . $change_time . '\', status = ' . $change_status . ' WHERE drink_id = ' . $change_id;
    
    
    //                 if ($result = mysqli_query($link, $sql) === TRUE) {
    //                     $complete_msg[] = 'ステータス変更完了!';
                        
    //                 } else {
    //                     $err_msg[] = 'ステータスの変更に失敗しました';
    //                 }
    //             } else {
    //                 $err_msg[] = 'ステータスは公開か非公開を選択してください';
    //             }
    //         }
    //     }
    
    //     if (count($err_msg) === 0) {
            
    //         mysqli_commit($link);
    //     } else {
            
    //         mysqli_rollback($link);
    //     }
    
    //     $sql = 'SELECT drink_info_table.drink_id, drink_info_table.drink_name, drink_info_table.price, stock_table.stock, drink_info_table.status, FROM drink_info_table LEFT JOIN stock_table ON drink_info_table.drink_id = stock_table.drink_id';
        
    //     if ($result = mysqli_query($link, $sql)) {
    
    //         while ($row = mysqli_fetch_array($result)) {
    //             $data[] = $row;
    //         }
    //     } else {
    //         $err_msg[] = 'データの抽出に失敗しました';
    //     }
    // }
    
    
    
    function do_sql($link) {
        $sql = 'SELECT drink_info_table.drink_id, drink_info_table.drink_name, drink_info_table.price, drink_info_table.status,stock_table.stock
        FROM drink_info_table
        JOIN stock_table
        ON drink_info_table.drink_id = stock_table.drink_id';
        $data = [];
        if ($result = mysqli_query($link, $sql)) {
            while ($row = mysqli_fetch_array($result)) {
                $data[] = $row;
            }
        } else {
            $err_msg[] = 'データの抽出に失敗しました';
        }
        return $data;
    }
    
    // function id_check() {
    //     if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    //         $purchase_time = date('Y-m-d H:i:s');
    
    //         if (isset($_POST['drink_id']) === TRUE) {
    
    //             switch (TRUE) {
    //                 case ($_POST['drink_id'] === ''):
    //                     $err_msg[] = 'index.phpからdrink_idを受信できませんでした';
    //                     break;
    //                 case ($_POST['drink_id'] === NULL):
    //                     $err_msg[] = 'index.phpからdrink_idを受信できませんでした';
    //                     break;
    //                 default:
    //                     $drink_id = (int) $_POST['drink_id'];
    //                     break;
    //             }
    //         } else {
    //             $err_msg[] = '商品を選択してください';
    //         }
    
    //         if (isset($_POST['money']) === TRUE) {
    
    //             switch (TRUE) {
    //                 case ($_POST['money'] === ''):
    //                     $err_msg[] = '金額を入力してください';
                        
    //                     break;
    //                 case ($_POST['money'] === NULL):
    //                     $err_msg[] = 'index.phpからmoneyを受信できませんでした';
                        
    //                     break;
    //                 case (preg_match('/^[0-9]+$/', cut($_POST['money'])) !== 1):
    //                     $err_msg[] = '金額は0以上の半角整数を入力してください';
                        
    //                     break;
    //                 default:
    //                     $money = (int) cut($_POST['money']);
    //                     break;
    //             }
    //         }
    
    //         if (count($err_msg) === 0) {
    
    //             $sql = 'SELECT drink_info_table.drink_name, drink_info_table.price,  drink_info_table.status, stock_table.stock
    //             FROM drink_info_table
    //             JOIN stock_table
    //             ON drink_info_table.drink_id = stock_table.drink_id
    //             WHERE drink_info_table.drink_id = ' . $drink_id;
    
    //             if ($result = mysqli_query($link, $sql)) {
    
    //                 while ($row = mysqli_fetch_array($result)) {
    //                     $data[] = $row;
    //                 }
    //             } else {
    //                 $err_msg[] = '情報の取得に失敗しました';
    //             }
    
    //             foreach ($data as $info) {
    
    //                 $drink_name = $info['drink_name'];
    //                 $price = (int) $info['price'];
    //                 $stock = (int) $info['stock'];
    //                 $status = (int) $info['status'];
    
    //                 $remaining_stock = $stock - 1;
    //                 $return = $money - $price;
    //             }
    
    //             switch (TRUE) {
    //                 case ($return < 0):
    //                     $err_msg[] = 'お金が足りません';
                        
    //                     break;
    //                 case ($remaining_stock < 0):
    //                     $err_msg[] = 'この商品は品切れです';
                        
    //                     break;
    //                 case ($status === 0):
    //                     $err_msg[] = 'この商品は選択できません';
                        
    //                     break;
    //             }
    
    //             $sql = 'UPDATE stock_table SET stock = ' . $remaining_stock . ', updated_at = \'' . $purchase_time . '\' WHERE drink_id = ' . $drink_id;
    
    //             if ($result = mysqli_query($link, $sql)) {
    
    //                 $sql = 'INSERT INTO drink_history_table(drink_id, purchased_at) VALUES (' . $drink_id . ', \'' . $purchase_time . '\')';
    
    //                 if ($result = mysqli_query($link, $sql) !== TRUE) {
    //                     $err_msg[] = 'drink_history_tableへの追加に失敗しました';
                        
    //                 }
    //             } else {
    //                 $err_msg[] = 'stock_tableの更新に失敗しました';
    //         }
            
    //     }
    // }
    
    // function html_enc($text){ 
    // return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
    // }
    // }
    
    function validation_check($link) {
       $err_msg = [];
       if (!isset($_POST['new_name']) || (isset($_POST['new_name']) && $_POST['new_name'] === ""))  {
         $err_msg[] = '商品名を入力してください。';
        }
        
        if (!isset($_POST['new_price']) || (isset($_POST['new_price']) && $_POST['new_price'] === "")) {
         $err_msg[] = '値段を入力してください';
        }
        
        if (!isset($_POST['new_stock']) || (isset($_POST['new_stock']) && $_POST['new_stock'] === "")) {
         $err_msg[] = '個数を入力してください';
        }
        return $err_msg;
    
    }
    
[/code]

tool.php

[code]

    <?php
    require_once('../../include/model/functions.php');
    require_once('../../include/conf/const.php');
    $link = get_db_connect();
    $data = insert_drink($link);
    $data = do_sql($link);
    require_once('../../include/view/tool2.php');
    
    $data =  [
                    'drink_name' => '',
                    'price' => '',
                    'created_at' => '',
                    'updated_at' => '',
                    'status' => '',
                ];
    
    close_db_connect($link);
    
[/code]

tool2.php

[code]

    <!DOCTYPE html>
    <html lang="ja">
    
    <head>
        <meta charset="UTF-8">
        <title>自動販売機商品管理</title>
    </head>
    
    <body>
        <?php require_once('../../include/model/functions.php'); ?>
        <?php
        $complete_msg = insert_drink($link);
        if (count($complete_msg) !== 0) {
            foreach ($complete_msg as $complete) { ?>
                <p><?php print $complete; ?></p>
        <?php }
        } ?>
        <?php 
        $err_msg = validation_check($link);
        if (count($err_msg) !== 0)  {
            foreach ($err_msg as $err) { ?>
                <p><?php print $err; ?></p>
        <?php }
        } ?>
    
        <h1>自動販売機管理ツール</h1>
    
        <section>
            <h2>新規商品追加</h2>
    
            <form action="tool.php" method="post" enctype="multipart/form-data">
                <label>名前: <input type="text" name="new_name" size="30" /></label><br>
                <label>値段: <input type="text" name="new_price" size="30" /></label><br>
                <label>個数: <input type="text" name="new_stock" size="30" /></label><br>
                <select name="new_status"><br>
                    <option value="0">非公開</option>
                    <option value="1">公開</option>
                    <option value="2">入力チェック用</option>
                </select><br>
                <input type="hidden" name="sql_kind" value="insert">
                <input type="submit" value="■□■□商品追加■□■□" />
            </form>
    
        </section>
    
        <section>
            <h2>商品情報変更</h2>
            <table>
                <caption>商品一覧</caption>
                <tbody>
                    <tr>
                        <th>商品名</th>
                        <th>価格</th>
                        <th>在庫数</th>
                        <th>ステータス</th>
                    </tr>
    
                    <?php if (empty($data) !== TRUE) {
                        foreach ($data as $list) {
                            if ((int) $list['status'] === 0) { ?>
                                <tr class="status_0">
                                <?php } else { ?>
                                <tr>
                                <?php } ?>
                                <? php print htmlspecialchars($list,ENT_QUOTES,'UTF-8'); ?>
                                <td class="d_name"><?php print $list['drink_name']; ?></td>
                                <td class="d_price"><?php print $list['price']; ?></td>
                                <td>
                                    <form method="post">
                                        <input type="text" class="input_text_width text_align_right" name="update_stock" value="<?php print $list['stock']; ?>">個
                                        <br>
                                        <input type="submit" value="変更">
                                        <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
                                        <input type="hidden" name="sql_kind" value="update">
                                    </form>
                                </td>
    
                                <?php if ((int) $list['status'] === 0) { ?>
                                    <td class="d_status">
                                        <form method="post">
                                            <input type="submit" value="非公開 → 公開">
                                            <input type="hidden" name="change_status" value="1">
                                            <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
                                            <input type="hidden" name="sql_kind" value="change">
                                        </form>
                                    </td>
                                </tr>
                            <?php } else { ?>
                                <td class="d_status">
                                    <form method="post">
                                        <input type="submit" value="公開 → 非公開">
                                        <input type="hidden" name="change_status" value="0">
                                        <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
                                        <input type="hidden" name="sql_kind" value="change">
                                    </form>
                                </td>
                                </tr>
                    <?php }
                            }
                        } ?>
    
                </tbody>
            </table>
        </section>
    </body>
    
    </html>
    
[/code]

const.php

[code]

    <?php
    $err_msg = [];
    $complete_msg = [];
    
    define('DB_HOST',   ''); // データベースのホスト名又はIPアドレス
    define('DB_USER',   '');  // MySQLのユーザ名
    define('DB_PASSWD', '');    // MySQLのパスワード
    define('DB_NAME',   '');    // データベース名
    
    define('HTML_CHARACTER_SET', 'UTF-8');  // HTML文字エンコーディング
    define('DB_CHARACTER_SET',   'UTF8');   // DB文字エンコーディング
    
    date_default_timezone_set('Asia/Tokyo');
    
[/code]


CC BY-SA 4.0
2021-08-27T07:09:28.857
81069
2021-08-27T07:57:16.077
47881
question
php
登録されたときの挙動がおかしい。


問題点がたくさんありそうですが、まずはアルゴリズムに注目して回答します。

プログラムを作るうえで大事なことは

「プログラム的思考でアルゴリズムを考えること」  
「考えたアルゴリズムをプログラムで再現すること」  
です。  
なのでまずはアルゴリズムが大事です。  
アルゴリズムを表現する方法は[フローチャート](https://tech-blog.rakus.co.jp/entry/202001026/flow-
chart)や[アクティビティ図](https://www.lucidchart.com/pages/ja/uml-activity-
diagram)などいろいろありますが、一旦簡略化した方法で説明します。

tool.phpとtool2.phpからアルゴリズムを確認すると以下のようになっています。

tool.php  
「開始」  
→「必要なファイルを読み込む」  
→「データベースにつなぐ」  
→「POSTだったらdrink_info_tableにデータを登録する」  
→「drink_info_tableからデータを参照する」  
→「tool2.phpを読み込む」  
→「データベースから切断する」  
→「終了」

tool2.php  
→「HTMLのヘッダーを出力する」  
→「POSTだったらdrink_info_tableにデータを登録する」  
→「バリデーションを実行してその結果を表示する」  
→「新規商品追加のフォームを表示する」  
→「商品一覧を表示する」  
→「終了」

となっています。これは頭の中のアルゴリズムと同じになっていますか？  
まずはそれを確認してください。

まずわかりやすい問題点が「POSTだったらdrink_info_tableにデータを登録する」が2回行われています。もっと具体的に言うと、insert_drink()が2回呼ばれています。

またバリデーションが実行されていますが、バリデーションの目的は「画面にエラーのテキストを表示すること」が目的ではないです。「データベースに不正な値を入れないこと」が目的です。バリデーションの結果が×であれば、データベースに登録する処理に回してはだめです。

上記を踏まえて、処理的にはこうするべきでしょうね  
tool.php  
「開始」  
→「必要なファイルを読み込む」  
→「データベースにつなぐ」  
→「POSTだったらバリデーションを実行する」  
→「POSTかつバリデーションの結果がOKだったらdrink_info_tableにデータを登録する」  
→「drink_info_tableからデータを参照する」  
→「tool2.phpを読み込む」  
→「データベースから切断する」  
→「終了」

tool2.php  
「開始」  
→「HTMLのヘッダーを出力する」  
→「バリデーションの結果を表示する」  
→「新規商品追加のフォームを表示する」  
→「商品一覧を表示する」  
→「終了」

またtool.phpとtool2.phpと分けて記述していますが、  
それが混乱するもとになっている可能性があるので、一旦まとめたソースコード（元のソースコードをまとめただけで修正の必要があります）と処理の流れを置いておきます。これをtool.phpとして実行して修正開発を試してみてください。

[code]

    <?php
    require_once('../../include/model/functions.php');
    require_once('../../include/conf/const.php');
    $link = get_db_connect();
    $data = insert_drink($link);
    $data = do_sql($link);
    
    ?><!DOCTYPE html>
    <html lang="ja">
    
    <head>
        <meta charset="UTF-8">
        <title>自動販売機商品管理</title>
    </head>
    
    <body>
        <?php require_once('../../include/model/functions.php'); ?>
        <?php
        $complete_msg = insert_drink($link);
        if (count($complete_msg) !== 0) {
            foreach ($complete_msg as $complete) { ?>
                <p><?php print $complete; ?></p>
        <?php }
        } ?>
        <?php 
        $err_msg = validation_check($link);
        if (count($err_msg) !== 0)  {
            foreach ($err_msg as $err) { ?>
                <p><?php print $err; ?></p>
        <?php }
        } ?>
    
        <h1>自動販売機管理ツール</h1>
    
        <section>
            <h2>新規商品追加</h2>
    
            <form action="tool.php" method="post" enctype="multipart/form-data">
                <label>名前: <input type="text" name="new_name" size="30" /></label><br>
                <label>値段: <input type="text" name="new_price" size="30" /></label><br>
                <label>個数: <input type="text" name="new_stock" size="30" /></label><br>
                <select name="new_status"><br>
                    <option value="0">非公開</option>
                    <option value="1">公開</option>
                    <option value="2">入力チェック用</option>
                </select><br>
                <input type="hidden" name="sql_kind" value="insert">
                <input type="submit" value="■□■□商品追加■□■□" />
            </form>
    
        </section>
    
        <section>
            <h2>商品情報変更</h2>
            <table>
                <caption>商品一覧</caption>
                <tbody>
                    <tr>
                        <th>商品名</th>
                        <th>価格</th>
                        <th>在庫数</th>
                        <th>ステータス</th>
                    </tr>
    
                    <?php if (empty($data) !== TRUE) {
                        foreach ($data as $list) {
                            if ((int) $list['status'] === 0) { ?>
                                <tr class="status_0">
                                <?php } else { ?>
                                <tr>
                                <?php } ?>
                                <? php print htmlspecialchars($list,ENT_QUOTES,'UTF-8'); ?>
                                <td class="d_name"><?php print $list['drink_name']; ?></td>
                                <td class="d_price"><?php print $list['price']; ?></td>
                                <td>
                                    <form method="post">
                                        <input type="text" class="input_text_width text_align_right" name="update_stock" value="<?php print $list['stock']; ?>">個
                                        <br>
                                        <input type="submit" value="変更">
                                        <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
                                        <input type="hidden" name="sql_kind" value="update">
                                    </form>
                                </td>
    
                                <?php if ((int) $list['status'] === 0) { ?>
                                    <td class="d_status">
                                        <form method="post">
                                            <input type="submit" value="非公開 → 公開">
                                            <input type="hidden" name="change_status" value="1">
                                            <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
                                            <input type="hidden" name="sql_kind" value="change">
                                        </form>
                                    </td>
                                </tr>
                            <?php } else { ?>
                                <td class="d_status">
                                    <form method="post">
                                        <input type="submit" value="公開 → 非公開">
                                        <input type="hidden" name="change_status" value="0">
                                        <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
                                        <input type="hidden" name="sql_kind" value="change">
                                    </form>
                                </td>
                                </tr>
                    <?php }
                            }
                        } ?>
    
                </tbody>
            </table>
        </section>
    </body>
    
    </html>
    <?php
    
    $data =  [
                    'drink_name' => '',
                    'price' => '',
                    'created_at' => '',
                    'updated_at' => '',
                    'status' => '',
                ];
    
    close_db_connect($link);
    
[/code]

上のtool.phpの処理の流れ  
「開始」  
→「必要なファイルを読み込む」  
→「データベースにつなぐ」  
→「POSTだったらdrink_info_tableにデータを登録する」  
→「drink_info_tableからデータを参照する」  
→「HTMLのヘッダーを出力する」  
→「POSTだったらdrink_info_tableにデータを登録する」  
→「バリデーションを実行してその結果を表示する」  
→「新規商品追加のフォームを表示する」  
→「商品一覧を表示する」  
→「データベースから切断する」  
→「終了」

理想的なtool.phpの処理の流れ  
「開始」  
→「必要なファイルを読み込む」  
→「データベースにつなぐ」  
→「POSTだったらバリデーションを実行する」  
→「POSTかつバリデーションの結果がOKだったらdrink_info_tableにデータを登録する」  
→「drink_info_tableからデータを参照する」  
→「HTMLのヘッダーを出力する」  
→「バリデーションの結果を表示する」  
→「新規商品追加のフォームを表示する」  
→「商品一覧を表示する」  
→「データベースから切断する」  
→「終了」


CC BY-SA 4.0
2021-08-27T07:49:33.263
81071
2021-08-27T07:57:16.077
2021-08-27T07:57:16.077
22665
22665
81069
answer