未定义的索引:PHP中的aksi


Undefined index: aksi in PHP

嗨,我收到一个错误:未定义的索引:aksi我的php代码是:

    <?php
include"class_koneksi.php";
$db=new database();
$db->konek();
if(isset($_GET['aksi']) && $_GET['aksi'] ==''){
    $daftar=$db->tampilData();
        echo"<table border=1>
            <tr>
                <td>Id</td>
                <td>Nama</td>
                <td>Email</td>
                <td>Pesan</td>
                <td>Edit</td>
                <td>Hapus</td>
            </tr>";
    foreach($daftar as $data){
        echo" <tr>
                <td>".$data['id']."</td>
                <td>".$data['nama']."</td>
                <td>".$data['email']."</td>
                <td>".$data['pesan']."</td>
                <td><a href='?aksi=edit&id=$data[id]'>edit</a></td>
                <td><a href='?aksi=hapus_data&id=$data[id]'>Hapus</a></td>
            </tr>";
    }
    echo"</table> <br> <a href='?aksi=tambah'>TAMBAH</a>";

}elseif($_GET['aksi']=='tambah'){ //line 31
    echo"<br>
    <form method=POST action='?aksi=tambah_data'>
        <table>
            <tr><td>Nama</td><td><input type=text name='nama'></td></tr>
            <tr><td>Email</td><td><input type=text name='email'></td></tr>
            <tr><td>Pesan</td><td><input type=text name='pesan'></td></tr>
            <tr><td></td><td><input type=submit value='simpan'></td></tr>
        </table>
    </form>
    ";
}elseif($_GET['aksi']=='tambah_data'){ line 43
    $id=$_POST[id];
    $nama=$_POST['nama'];
    $email=$_POST['email'];
    $pesan=$_POST['pesan'];
    $db->tambahData($id,$nama,$email,$pesan);
}elseif($_GET['aksi']=='edit'){ //50
    $id=$_GET['id'];
    echo"<br>
        <form method=POST action='?aksi=update_data'>
            <table>
                <tr><td>Id</td><td><input type=text name='id' value='".$db->bacaData(id,$id)."'></td></tr>
                <tr><td>Nama</td><td><input type=text name='nama' value='".$db->bacaData(nama,$id)."'></td></tr>
                <tr><td>Email</td><td><input type=text name='email' value='".$db->bacaData(email,$id)."'></td></tr>
                <tr><td>Pesan</td><td><input type=text name='pesan' value='".$db->bacaData(pesan,$id)."'></td></tr>
                <tr><td></td><td><input type=submit value='simpan'></td></tr>
            </table>
        <input type='hidden' name='id' value='".$db->bacaData(id,$id)."'>
        </form>
    ";
}elseif($_GET['aksi']=='update_data'){ //line 65
    $id=$_POST[id];
    $nama=$_POST['nama'];
    $email=$_POST['email'];
    $pesan=$_POST['pesan'];
    $db->updateData($id,$nama,$email,$pesan);
}elseif($_GET['aksi']=='hapus_data'){ //line 72
    $id=$_GET['id'];
    $db->hapusData($id);
}
?> 

如果(isset($_GET['aksi'])&amp$_GET['aksi']==''),但出现错误未定义索引:第31,43,50,65,72行C:''examplep''htdocs''crud''lat1.php中的aksi有人能帮我摆脱这个吗

提前感谢

您需要将isset($_GET['aksi']) &&放在每个IF语句中,因为它们彼此独立。因此,在第一个IF语句中使用它并不意味着在其他语句中使用。

例如:

}elseif(isset($_GET['aksi']) && $_GET['aksi']=='tambah'){ // line 31
}elseif(isset($_GET['aksi']) && $_GET['aksi']=='tambah_data'){ // line 43

将if重组为这样的东西:

if(isset($_GET['aksi']))
{
   if($_GET['aksi'])=='') ...
   if($_GET['aksi'])=='anyvalue') ...
   //..and so on
}

您最好在整个比较前加一次前缀,看看是否有值。甚至可能将其与switch结合起来,以代替各种比较:

switch (isset($_GET["aksi"]) ? $_GET["aksi"] : "") {
     case "":
         ///
         break;
     case "tampah":
         ///
     case "tampah_data":
         ///
     case "edit":
         ///

这更简短,而且通常更容易理解。

还要研究两个输出块的HEREDOC字符串。它们允许在HTML中仍然使用双引号,但也可以插入变量或varexpressions。

error_reporting(E_ALL ^ E_NOTICE)