recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment convertir un tableau de résultats de requête au format souhaité en php et utiliser js pour le sortir en HTML au premier plan

Tableau des types d'examen jx_exam_type, le contenu peut être ajouté en arrière-plan

Tableau des scores d'examen jx_result, le contenu peut être ajouté en arrière-plan

L'exam_id dans le tableau des notes de l'examen de mi-session correspond à l'identifiant dans le tableau des types d'examen, c'est-à-dire si la note ajoutée appartient à la mi-session ou à la finale

Ensuite, interrogez en utilisant php

$sql="SELECT re.type, re.score, re.exam_id, et.title, DATE_FORMAT(et.addtime, '%Y-%m-%d') AS etime FROM jx_result AS re LEFT JOIN jx_exam_type AS et ON re.exam_id = et.id WHERE re.uid = '$uid' ORDER BY et.addtime DESC";

$result=$db->query($sql);

while($row=$result->fetch_assoc()){
    $arr[]=$row;
}

echo json_encode($arr);

Le format de sortie est le suivant

[
    {
        "type": "语文",
        "score": "91",
        "exam_id": "2",
        "title": "三年级期末考试",
        "etime": "2017-06-02"
    },
    {
        "type": "英语",
        "score": "89",
        "exam_id": "2",
        "title": "三年级期末考试",
        "etime": "2017-06-02"
    },
    {
        "type": "数学",
        "score": "60",
        "exam_id": "2",
        "title": "三年级期末考试",
        "etime": "2017-06-02"
    },
    {
        "type": "数学",
        "score": "91",
        "exam_id": "1",
        "title": "三年级期中考试",
        "etime": "2017-05-25"
    },
    {
        "type": "语文",
        "score": "85",
        "exam_id": "1",
        "title": "三年级期中考试",
        "etime": "2017-05-25"
    },
    {
        "type": "英语",
        "score": "87",
        "exam_id": "1",
        "title": "三年级期中考试",
        "etime": "2017-05-25"
    }
]

Veuillez me dire comment changer le format json de sortie ci-dessus en celui suivant

{
    "title": "三年级期中考试",
    "etime": "2017-05-25",
    "exam_id": [
        {
            "type": "数学",
            "score": "91",
            "exam_id": "1"
        },
        {
            "type": "语文",
            "score": "85",
            "exam_id": "1"
        },
        {
            "type": "英语",
            "score": "87",
            "exam_id": "1"
        }
    ],
    "title": "三年级期末考试",
    "etime": "2017-06-02",
    "exam_id": [
        {
            "type": "语文",
            "score": "91",
            "exam_id": "2"
        },
        {
            "type": "英语",
            "score": "89",
            "exam_id": "2"
        },
        {
            "type": "数学",
            "score": "60",
            "exam_id": "2"
        }
    ]
}

Après avoir changé le format ci-dessus, envoyez-le à la réception et affichez-le au format HTML via JS
(Il y a peut-être quelque chose qui ne va pas avec le format que je veux écrire, mais le sens général est de classer les données originales selon exam_id puis sortez-le)

J'étudie actuellement et je ne comprends pas très bien beaucoup de choses. S'il vous plaît, donnez-moi quelques conseils ~~ Merci

.
某草草某草草2768 Il y a quelques jours773

répondre à tous(3)je répondrai

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-07 09:25:20

    C'est l'architecture que je comprends, donc le front-end devrait pouvoir traverser vers

    while ($row = $result->fetch_assoc()) {
        $scorearr = array("type" => $row["type"], "score" => $row["type"], "exam_id" => $row["exam_id"]);
        if (isset($arr[$row["exam_id"]])) {
            $arr[$row["exam_id"]]["exam_id"][] = $scorearr;
        } else {
            $arr[$row["exam_id"]]["title"] = $row["title"];
            $arr[$row["exam_id"]]["etime"] = $row["etime"];
            $arr[$row["exam_id"]]["exam_id"][0] = $scorearr;
        }
    }
    
    $result = array();
    foreach($arr as $val) {
        $result[] = $val;
    }
    echo $json_encode($result)

    répondre
    0
  • 阿神

    阿神2017-06-07 09:25:20

    Cela devrait être une couche d'emballage de moins. Vous pouvez parcourir votre tableau, puis obtenir ce que vous voulez, puis le transcoder en json

    .

    répondre
    0
  • 滿天的星座

    滿天的星座2017-06-07 09:25:20

    Il y a quelque chose qui ne va pas dans votre logique d'obtention et de traitement des données, mais vous pouvez aussi écrire

    <?php
    $str = '[
        {
            "type": "语文",
            "score": "91",
            "exam_id": "2",
            "title": "三年级期末考试",
            "etime": "2017-06-02"
        },
        {
            "type": "英语",
            "score": "89",
            "exam_id": "2",
            "title": "三年级期末考试",
            "etime": "2017-06-02"
        },
        {
            "type": "数学",
            "score": "60",
            "exam_id": "2",
            "title": "三年级期末考试",
            "etime": "2017-06-02"
        },
        {
            "type": "数学",
            "score": "91",
            "exam_id": "1",
            "title": "三年级期中考试",
            "etime": "2017-05-25"
        },
        {
            "type": "语文",
            "score": "85",
            "exam_id": "1",
            "title": "三年级期中考试",
            "etime": "2017-05-25"
        },
        {
            "type": "英语",
            "score": "87",
            "exam_id": "1",
            "title": "三年级期中考试",
            "etime": "2017-05-25"
        }
    ]';
    
    $arr = json_decode($str,true);
    
    $result = [];
    $examId = [];
    foreach($arr as $key=>$val){
    
        if(!isset($result[$val['exam_id']])){
            $result[$val['exam_id']]['title'] = $val['title'];
            $result[$val['exam_id']]['etime'] = $val['etime'];
        }
    
        $result[$val['exam_id']]['exam_id'][] = array("type"=>$val['type'],"score"=>$val['score'],"exam_id"=>$val['exam_id']);
    
    }
    
    
    echo json_encode(array_values($result));

    Cependant, votre méthode d'obtention des données n'est pas recommandée. Si les données sont complexes et volumineuses, elles seront difficiles à traiter.

    .

    répondre
    0
  • Annulerrépondre