表单的未定义索引和未定义偏移

问题描述

我是一名正在发展的新学生,我为自己创建了一个网站,我可以在该网站上发布我在进行某些运动(例如自行车)时的结果,但我在那里遇到了很多问题。 第一个:第 34 和 35 行的未定义索引 第二个:我的表单的每个输入的未定义偏移量

你可以在这里查看我的代码

<?PHP
    session_start();
    //Connexion
    include('connexionBDD.PHP');
    //Form
    if(isset($_POST['enregistrement'])) {

        if($_POST['seance'] == 'new') {
            //REQ (INSERT)
            $req = "INSERT INTO `donnees_velo` (`SEANCE`,`DATE`,`CALORIES`,`DUREE`,`disTANCE`,`PUISSANCE`,`CALORIES PAR HEURE`,`MOVEs`,`FCMOY`,`FCMAX`,`PERFORMANCE`,`VITESSE`) 
                    VALUES (NULL,'".$_POST['date']."','".$_POST['calories']."','".$_POST['duree']."','".$_POST['distance']."','".$_POST['puissance']."','".$_POST['calories_heure']."','".$_POST['MOVEs']."','".$_POST['FCMOY']."','".$_POST['FCMAX']."','".$_POST['PERFORMANCE']."','".$_POST['VITESSE']."');";
                    echo $req;
        } else {
            echo $req = "UPDATE `donnees_velo` 
                    SET `DATE` = '".$_POST['date']."',`calories` = '".$_POST['calories']."'
                        `DUREE` = '".$_POST['duree']."'
                        `disTANCE` = '".$_POST['distance']."'
                        `CALORIES PAR HEURE` = '".$_POST['calories_heure']."'
                        `MOVEs` = '".$_POST['MOVEs']."'
                        `FCMOY` = '".$_POST['FCMOY']."'
                        `FCMAX` = '".$_POST['FCMAX']."'
                        `PERFORMANCE` = '".$_POST['PERFORMANCE']."'
                        `VITESSE` = '".$_POST['VITESSE']."'
                        WHERE `seance` = '".$_POST['idvelo']."'";
                        echo $req;
        }

        //EXE REQ (QUERY)
        $db->query($req);
        header('Location: index.html');
        exit();
    }
    if($_GET['seance'] != 'new') {
        $req = "SELECT * FROM `donnees_velo` WHERE `seance` = '".$_GET['id']."'";

        //REQ LAUNCHING
        $rep = $db->query($req);

        //REQ TO TBL
        $tbl_velo = $rep->fetchAll();
    } else {
        $tbl_velo[0]['id'] = 'new';
        $tbl_velo[0]['date'] = '';
        $tbl_velo[0]['calories'] = '';
        $tbl_velo[0]['duree'] = '';
        $tbl_velo[0]['distance'] = '';
        $tbl_velo[0]['calories_heure'] = '';
        $tbl_velo[0]['MOVEs'] = '';
        $tbl_velo[0]['FCMOY'] = '';
        $tbl_velo[0]['FCMAX'] = '';
        $tbl_velo[0]['PERFORMANCE'] = '';
        $tbl_velo[0]['VITESSE'] = '';
    }
    var_dump($tbl_velo);
?>


<html>
<head>
<Meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="test.css">
<link rel="stylesheet" href="pagedeux.css">
<title>Vélo</title>
</head>
<body>
<div class="overlay"></div>
    <p class="line-1 anim-typewriter">Le vélo</p>
    <form action="velo.PHP" method="POST" >
    <input type="hidden" value="<?PHP echo $tbl_velo[0]['SEANCE']; ?>" name="seance">
    Date : <input name="date" value="<?PHP echo $tbl_velo[0]['date']; ?>" type="date"><br/>
    Calories : <input name="calories" value="<?PHP echo $tbl_velo[0]['calories']; ?>" type='text'><br/>
    Durée : <input name="duree" value="<?PHP echo $tbl_velo[0]['duree']; ?>" type="text">
    distance : <input name="distance" value="<?PHP echo $tbl_velo[0]['distance']; ?>" type="text">
    Calories par heure : <input name="calories_heure" value="<?PHP echo $tbl_velo[0]['calories_heure']; ?>" type="text">
    MOVEs : <input name="MOVEs" value="<?PHP echo $tbl_velo[0]['MOVEs']; ?>" type="text">
    Fréquence cardiaque moyenne : <input name="FCMOY" value="<?PHP echo $tbl_velo[0]['FCMOY']; ?>" type="text">
    Fréquence cardiaque mxaimale : <input name="FCMAX" value="<?PHP echo $tbl_velo[0]['FCMAX']; ?>" type="text">
    Performance : <input name="PERFORMANCE" value="<?PHP echo $tbl_velo[0]['PERFORMANCE']; ?>" type="text">
    Vitesse : <input name="VITESSE" value="<?PHP echo $tbl_velo[0]['VITESSE']; ?>" type="text">
  <input type="submit" name="enregistrement" value="Envoyer">
</form>

非常感谢!

解决方法

您正在从 'seance' 变量中获取 'id'$_GET,而由于从表单发送,这两个变量存在于 $_POST 变量中。
您应该在这两个地方用 $_GET 替换 $_POST 的实例。
此外,请注意容易受到 SQL Injection 影响的 $_POST['id'] 变量,我建议对其进行消毒。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...