2017-11-22 3 views
0

Ich habe einen HTML-Code, wo ich eine Tabelle und zwei Radio-Button auf jeder Zeile erstellen. Um dem Optionsfeld in jeder Zeile einen anderen Namen zu geben, habe ich while loop und I ++ benutzt. diewie zu lösen Undefined Offset: Fehler in PHP

<form action = "submit_varification.php" method = "POST" onclick = "return validate()"> 

         <div style="position: absolute; left: 50px; top: 90px;"> 
         <label class="right"><font color="white">Date:</font></label> 
         <input type="text" id = "frmDate" /><br> 
         <p id="date"></p> 
         </div> 
         <div style="position: absolute; left: 250px; top: 91px;"> 
         <label class="right"><font color="white">V-ID:</font></label> 
         <input type="text" id = "myText" name = "reviewer" value = ""/><br> 
         </div> 
         <div style="position: absolute; left: 900px; top: 91px;"> 
         <button type="button" name="show" id="show" onclick = "" >History</button> 
         </div> 
         <div style="position: absolute; left: 900px;"> 
         <input type="submit" name="test" id="test" value="Submit" /><br/> 
         </div> 

        <script> 
        var date = new Date(); 

        document.getElementById("frmDate").value = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear(); 

        </script> 
       </body> 
       <table style="position: absolute; width:95%; left: 20px; top: 150px;" id = "table1"> 
        <?php 
        $myDate = date('m/d/Y'); 
        ?> 
         <tr> 
         <th>Date</th> 
         <th>Time</th> 
         <th>Alias</th> 
         <th>Machine_Name</th> 
         <th>Build_Name</th> 
         <th>Build_version</th> 
         <th>WinDBG</th> 
         <th>.Net_Framework</th> 
         <th>Status</th> 
         </tr> 
         <?php 
          //get records from database 
          $sql3 = "SELECT * FROM data WHERE `Date` = '".$myDate."' ORDER BY id DESC"; 
          $query = $conn->query($sql3); 
          if($query->num_rows > 0){ 
          $i = 0 ; 
          while($row = $query->fetch_assoc()){ ?> 
          <tr> 
          <td><?php echo $row['Date']; ?></td> 
          <td><?php echo $row['Time']; ?></td> 
          <td><?php echo $row['Alias']; ?></td> 
          <td><?php echo $row['Machine_Name']; ?></td> 
          <td><?php echo $row['Build_Name']; ?></td> 
          <td><?php echo $row['Build_Version']; ?></td> 
          <td><?php echo $row['WinDBG']; ?></td> 
          <td><?php echo $row['.NET_Framework']; ?></td> 
          <td style='white-space: nowrap'><form><label class = "ready"><input type="radio" name="[<?php $i ?>]" value = "Ready">Ready</label><label class = "notready"><input type="radio" name="[<?php $i ?>]" value = "Not Ready" >Not Ready</label></form></td> 
          </tr> 

          <?php $i++ ; } } ?> 


         </table> 


         </form> 

ist, und ich möchte eine Datenbank den Wert jeder Zeile speichern. Also habe ich die POST-Methode auf dem Formular verwendet. und ich versuche, den Wert von Optionsfeld Datenbank zu nehmen, aber ich bin vor einem Fehler wie

Notice: Undefined offset: 0 in C:\wamp64\www\submit_varification.php on line 33 
Notice: Undefined offset: 1 in C:\wamp64\www\submit_varification.php on line 33 
Notice: Undefined offset: 2 in C:\wamp64\www\submit_varification.php on line 33 

und den PHP-Code:

$query = $conn->query($sql4); 
         if($query->num_rows > 0){ 
         $i = 0 ;  
         while($row = $query->fetch_assoc()){ 


          //...insert into your DB. 
         $row1 = $row["Date"]; 
         $row2 = $row["Time"]; 
         $row3 = $row["Alias"]; 
         $row4 = $row["Machine_Name"]; 
         $row5 = $row["Build_Name"]; 
         $row6 = $row['Build_Version']; 
         $row7 = $row["WinDBG"]; 
         $row8 = $row[".NET_Framework"]; 

         $status = $_POST["$i"]; // this is the error 


         $sql5 = "INSERT INTO history (`Date`, `Time`, `Alias`, `Machine_Name`, `Build_Name`, `Build_version`, `WinDBG`, `.NET_Framework`, `Status`, `Reviewed_By`) 
         VALUES ('".$row1."','".$row2."','".$row3."','".$row4."','".$row5."','".$row6."','".$row7."','".$row8."', '".$status."', '".$reviewer."') "; 
         if ($conn->query($sql5) === TRUE) { 
         //echo "New record created successfully"; 
         //echo nl2br("\n"); 
         echo ""; 

         } else { 
         echo "Error: " . $sql5 . "<br>" . $conn->error; 
         } 

         $i++ ; 
         } 
         } 

ist hat jemand eine Lösung?

+0

können Sie mehr von Ihrem HTML bitte zur Verfügung stellen? – Cashbee

+0

ja sicher .......... –

+0

aber wie ...........? –

Antwort

0

Dump das Array, das $ i für jede Schleife auffüllt. Ich wette, das Array hat nicht den Array-Schlüssel, den die name="[<?php $i ?>]" erwartet.

0

Können Sie die Klammern im Namensattribut entfernen und sehen, ob es funktioniert. Unten ist der Code:

<td style='white-space: nowrap'> 
<form><label class = "ready"> 
    <input type="radio" name="<?php $i ?>" value = "Ready">Ready</label> 
    <label class = "notready"><input type="radio" name="<?php $i ?>" value = "Not Ready" >Not Ready</label> 
</form> 

plus wäre es besser, wenn Sie einige statische Text auf den Namen Spalte angehängt haben und in Server-Seite können Sie Schleife es:

<td style='white-space: nowrap'> 
<form><label class = "ready"> 
    <input type="radio" name="status_<?php $i ?>" value = "Ready">Ready</label> 
    <label class = "notready"><input type="radio" name="status_<?php $i ?>" value = "Not Ready" >Not Ready</label> 
</form> 

Lassen Sie mich wissen, wenn dies hilft ..

+0

Ich versuche es Idee und ich ändern die Linie in PHP-Code wie folgt: –

+0

$ status = $ _POST ["status _"] [$ i]; –

+0

aber es ist srote die Daten in Datenbank wie nur ein letzter in einer Zeile .. –

0

Sie machen verschachtelte Formen. die Linie ersetzen

<td style='white-space: nowrap'><form><label class = "ready"><input type="radio" name="[<?php $i ?>]" value = "Ready">Ready</label><label class = "notready"><input type="radio" name="[<?php $i ?>]" value = "Not Ready" >Not Ready</label></form></td> 

dies mit:

<td style='white-space: nowrap'><label class = "ready"><input type="radio" name="<?php $i ?>" value = "Ready">Ready</label><label class = "notready"><input type="radio" name="<?php $i ?>" value = "Not Ready" >Not Ready</label></td> 

auch die Klammern entfernen, wie gopal panadi erwähnt.
Darüber hinaus bin ich mir nicht sicher, ob Sie Eingabe-Tags innerhalb Etiketten haben können. sollten sie nicht nebeneinander sein?

Bearbeiten: danach, wenn es fehlschlägt, dump die $ _POST-Array und sehen, wie/wenn die Radio-Werte in $ _POST sind. var_dump($_POST);die();