php
  • mysql
  • undefined
  • 2017-11-25 2 views 0 likes 
    0

    この質問は似ているかもしれませんが、私の問題を理解してください。私の最初のページで、私はmrinsertidを使用して、この

    index.phpのように既存の値を表示する

    <?php 
    include_once("db.php"); 
    
        $result1 = mysqli_query($connect, "SELECT * FROM mrinsert WHERE userid='{$_SESSION['user_id']}'"); 
    ?> 
    <?php 
    
         while($res = mysqli_fetch_array($result1)) {   
          echo "<tr>"; 
          echo "<td>".$res['bugta']."</td>"; 
          echo "<td>".$res['releaseta']."</td>"; 
          echo "<td>".$res['ccota']."</td>";  
          echo "<td><a href=\"mredit.php?mrinsertid=$res[mrinsertid]\">Edit</a> | <a href=\"mrdelete.php?mrinsertid=$res[mrinsertid]\" onClick=\"return confirm('Are you sure you want to delete?')\">Delete</a></td>";   
         } 
         ?> 
    

    mredit.phpページをテーブルを編集するためのリンクを与えました。しかし、とき、それはこの場所でエラーを与える値更新しよう:

    <?php 
    //getting id from url 
    
    
    $mrinsertid = $_GET['mrinsertid']; //ERROR Undefined index 
    
    //selecting data associated with this particular id 
    $result = mysqli_query($connect, "SELECT * FROM mrinsert WHERE mrinsertid=$mrinsertid"); //WARNING in this line 
    
    while($res = mysqli_fetch_array($result)) 
    { 
        $releaseta=$res['releaseta']; 
        $keyta=$res['keyta']; 
        $programleadsta=$res['programleadsta']; 
        $ccota=$res['ccota']; 
        $nextmilestonesta=$res['nextmilestonesta']; 
        $bugta=$res['bugta']; 
        $risksta=$res['risksta']; 
        $summaryta=$res['summaryta']; 
    
        ?> 
    

    マイ全体mredit.php

    <?php 
    // including the database connection file 
    include_once("db.php"); 
    
    if(isset($_POST['update'])) 
    {  
        $mrinsertid = mysqli_real_escape_string($connect,$_POST['mrinsertid']); 
        $releaseta= mysqli_real_escape_string($connect,$_POST['releaseta']);  
        $keyta= mysqli_real_escape_string($connect,$_POST['keyta']); 
        $programleadsta= mysqli_real_escape_string($connect,$_POST['programleadsta']); 
        $ccota= mysqli_real_escape_string($connect,$_POST['ccota']); 
        $nextmilestonesta= mysqli_real_escape_string($connect,$_POST['nextmilestonesta']);   
        $bugta= mysqli_real_escape_string($connect,$_POST['bugta']); 
        $risksta= mysqli_real_escape_string($connect,$_POST['risksta']); 
        $summaryta= mysqli_real_escape_string($connect,$_POST['summaryta']); 
    
    
    
    
    
    
    
        // checking empty fields 
        if(empty($releaseta) || empty($keyta) || empty($programleadsta)||empty($ccota) || empty($nextmilestonesta) || empty($bugta)|| empty($riskta) || empty($summaryta)) {    
         if(empty($releaseta)) { 
          echo "<font color='red'>release field is empty.</font><br/>"; 
         } 
    
         if(empty($keyta)) { 
          echo "<font color='red'>Akey field is empty.</font><br/>"; 
         } 
    
         if(empty($programleadsta)) { 
          echo "<font color='red'>program field is empty.</font><br/>"; 
         }   
         if(empty($ccota)) { 
          echo "<font color='red'>cco field is empty.</font><br/>"; 
         } 
    
         if(empty($nextmilestonesta)) { 
          echo "<font color='red'>nextmilestone field is empty.</font><br/>"; 
         } 
    
         if(empty($bugta)) { 
          echo "<font color='red'>bug field is empty.</font><br/>"; 
         } 
         if(empty($risksta)) { 
          echo "<font color='red'>risk field is empty.</font><br/>"; 
         } 
    
         if(empty($summaryta)) { 
          echo "<font color='red'>summary field is empty.</font><br/>"; 
         } 
        } else {  
         //updating the table 
         $result = mysqli_query($connect, "UPDATE mrinsert SET releaseta='$releaseta',keyta='$keyta',programleadsta='$programleadsta',ccota='$ccota',nextmilestonesta='$nextmilestonesta',bugta='$bugta',risksta='$risksta',summaryta='$summaryta' WHERE mrinsertid='$mrinsertid'"); 
    
         //redirectig to the display page. In our case, it is index.php 
         header("Location: index.php"); 
        } 
    } 
    
    ?> 
    <?php 
    //getting id from url 
    
    
    $mrinsertid = $_GET['mrinsertid']; 
    
    //selecting data associated with this particular id 
    $result = mysqli_query($connect, "SELECT * FROM mrinsert WHERE mrinsertid=$mrinsertid"); 
    
    while($res = mysqli_fetch_array($result)) 
    { 
        $releaseta=$res['releaseta']; 
        $keyta=$res['keyta']; 
        $programleadsta=$res['programleadsta']; 
        $ccota=$res['ccota']; 
        $nextmilestonesta=$res['nextmilestonesta']; 
        $bugta=$res['bugta']; 
        $risksta=$res['risksta']; 
        $summaryta=$res['summaryta']; 
    
        ?> 
    
    <html> 
    <head>  
        <title>Edit Data</title> 
    </head> 
    <meta charset="utf-8"> 
        <meta name="viewport" content="width=device-width, initial-scale=1"> 
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
        <style> 
        .wrap { 
        position:relative; 
        width:50px; 
    } 
    .wrap button { 
        border:5px solid; 
        position:absolute; 
        top:50px; 
        border-color:black; 
        border-radius: 50%; 
        margin-left:20px; 
        display:block; 
        height: 50px; 
        width: 50px; 
        background-color:green; 
    
        } 
        </style> 
    <body> 
        <a href="index.php">Home</a> 
        <br/> 
    
        <form name="form1" method="post" action="mredit.php"> 
    
        <input type="text" name="mrinsertid" value=<?php echo $_GET['mrinsertid'];?> > 
        <input type="submit" name="update" value="update"> 
    
    <div id="MRtableDIV"> 
    <table border="2"> 
    <tr style="background-color:#80bfff"> 
    <th style="width:8%"><center>Release</center></th> 
    <th style="width:5%"><center>Status</center></th> 
    <th style="width:6%"><center>Key</center></th> 
    <th style="width:15%"><center>Program Leads</center></th> 
    <th style="width:6%"><center>CCO Dates</center></th> 
    <th style="width:6%"><center>Next Milestones</center></th> 
    <th style="width:10%"><center>Bug Projection</center></th> 
    <th style="width:14%"><center>Risks</center></th> 
    <th style="width:20%"><center>Summary</center></th> 
    <tr> 
    <tr> 
    <tr> 
        <td><textarea name="releaseta" id="ReleaseTA" style="width:100%;height:200px;resize:none;background-color:#e6f2ff""><?php echo $res['releaseta'];?></textarea></td> 
        <td> 
        <div class="wrap"> 
        <button id="button1" value = "button" style= "color:white" onclick="setColor('button1', '#101010')";></button> 
        </div> 
        <textarea name="" id="StatusTA" style="width:100%;height:200px;resize:none;background-color:#e6f2ff"></textarea> 
        </td> 
        <td><textarea name="keyta" id="KeyTA" style="width:100%;height:200px;resize:none;background-color:#e6f2ff"><?php echo $res['keyta'];?></textarea></td> 
        <td><textarea name="programleadsta" id="ProgramLeadsTA" style="width:100%;height:200px;;resize:none;background-color:#e6f2ff"><?php echo $res['programleadsta'];?></textarea></td> 
        <td><textarea name="ccota" id="CCOTA" style="width:100%;height:200px;resize:none;background-color:#e6f2ff"><?php echo $res['ccota'];?></textarea></td> 
        <td><textarea name="nextmilestonesta" id="NextMilestonesTA" style="width:100%;height:200px;resize:none;background-color:#e6f2ff"><?php echo $res['nextmilestonesta'];?></textarea></td> 
        <td><textarea name="bugta" id="BugTA" style="width:100%;height:200px;resize:none;background-color:#e6f2ff"><?php echo $res['bugta'];?></textarea></td> 
        <td><textarea name="risksta" id="RisksTA" style="width:100%;height:200px;resize:none;background-color:#e6f2ff"><?php echo $res['risksta'];?></textarea></td> 
        <td><textarea name="summaryta" id="SummaryTA" style="width:100%;height:200px;resize:none;background-color:#e6f2ff"><?php echo $res['summaryta'];?></textarea></td> 
        </tr> 
    </tr> 
    </table> 
    </div> 
        </form> 
    </body> 
    </html> 
    <?php 
    } 
    ?> 
    
    +1

    [Notice:未定義変数]、[Notice:未定義インデックス]、[Notice:Undefined offset]](https://stackoverflow.com/questions/4261133/php-notice- undefined-variable-notice-undefined-index-and-notice-undef) –

    +0

    あなたのスクリプトは[SQL Injection Attack](https://stackoverflow.com/q/60174/5914775)の危険性があります。[Little Bobby Tables](http://bobby-tables.com/)に何が起こったのか見てみましょう。 [あなたが入力を逃れている場合でも、安全ではありません!](https://stackoverflow.com/q/5741187/5914775)。代わりに、[prepared parameterized statements](https://php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用してください。 –

    +0

    XSSの問題もあり、 'font'タグは1980年代のように廃止されました; –

    答えて

    0

    は、私はちょうど{ }を削除し、直接".$_SESSION['user_id'];を追加し、$result1と呼ばれている変数にクエリを保存し、この

    を試してみてください。

    $result1 = "SELECT * FROM mrinsert WHERE user_id=".$_SESSION['user_id']; 
        $result = mysqli_query($conn, $result1); 
    
        if (mysqli_num_rows($result) > 0) { 
         // output data of each row 
         while($res = mysqli_fetch_array($result)){ 
           echo "<tr>"; 
           echo "<td>".$res['bugta']."</td>"; 
           echo "<td>".$res['releaseta']."</td>"; 
           echo "<td>".$res['ccota']."</td>";  
           echo "<td><a href='mredit.php?mrinsertid=".$res['mrinsertid']."'>Edit</a></td>"; 
         } 
        } 
        else { 
         echo "0 results"; 
        } 
        mysqli_close($conn); 
    

    mredit.php

    echo $mrinsertid = $_GET['mrinsertid']; 
    
    0

    は、フォームからアクション部分を削除し、それが正常に動作します。間には、値を整数にタイプキャストしてから使用することを忘れないでください。また、可能であれば、prepare文を使用してください。

    +0

    エラーはなくなりましたが、更新やリダイレクトは行われていません。 @プラデシュ –

    0

    問題は "mredit.php" の最初の呼び出しでは、あなたが<a href>リンクをクリックしたので、GETリクエストを使用していることです。この場合、$_GET['mrinsertid']はURLに設定された値に設定されます。 "myedit.php"の2回目の呼び出しでは、method="post"属性を持つフォームで定義されているPOSTリクエストを使用しています。したがって、値は$_GET[]ではなく、$_POST[]になります。

    は、この問題を解決する方法をいくつかのソリューションがあります。

    1. 利用$_REQUESTの代わり$_GET$_REQUEST array$_GET,および$_COOKIE配列のマージであるため、値がURLかHTMLフォーム(POSTリクエストを介して送信)から来るかどうかは関係ありません。
    2. <form>タグのmethod=属性をGETに変更してGETリクエストとして送信します。しかし、HTMLフォームはさまざまな理由でPOSTリクエストを使って送信する必要があるため、通常は行いません。
    3. <form>タグのaction=属性のURLにmrinsertidの値を追加します。この方法でmrinsertidの値は$_GETになりますが、フォームデータはまだ$_POSTになります。
    関連する問題