2016-08-01 4 views
-1

In meinem Code zeigt es zuerst das Ergebnis der Tabelle und dann werden die Daten beim Senden gelöscht. Aber es gibt ein Problem, dass, wo immer ich in den Löschen-Knopf klicke, ich immer die letzte Zeile löschen werde. Es löscht keine bestimmte Zeile, die ichWarum löscht mein Formular die letzte Zeile und nicht die ausgewählte Zeile?

$servername = "localhost"; 
$username = "root"; 
$password = "1234"; 
$db = "ptcl"; 
$con = new mysqli($servername, $username, $password, $db); 

Endverbindung

HTML-Code

<html> 
<body> 
<div class="content"> 
<div class="exchange"> 
    <center>EXCHANGE /NTE</center>> 
<center> 
<form action="delete.php" name="delete" method="POST"> 
<table border="1"> 
<tr><th rowspan="2">EXCHANGE TYPE</th> 
    <th colspan="9">DESCRIPTION</th> 
</tr> 
<tr> 
    <td colspan="2">Retail</td> 
    <td>DTEs</td> 
    <td>Retail/Sett</td> 
    <td>Online</td> 
    <td>Offline</td> 
    <td>Total</td> 
    <td colspan="2">Action</td> 
</tr> 

Form löschen möchten, die ich durch seine id zuerst löschen Sie zeigen wollen

<?php 
    global $con; 
    $query="select * from exchange "; 
    $result =$con->query($query); 

    if($result->num_rows > 0){ 


while($row = $result->fetch_assoc()){?> 

<tr> 
    <td><?php echo $row['exchangetype']?></td> 
     <td><?php echo $row['retail']?><td> 
    <td ><?php echo $row['dte']?></td> 
    <td><?php echo $row['retail_sett']?></td> 
    <td><?php echo $row['retail']+$row['dte']+$row['retail_sett']?></td> 
    <td><?php echo $row['offine']?></td> 
    <td><?php echo $row['retail']+$row['dte']+$row['retail_sett']+$row['offine']?></td> 
    <td><input type="submit" name="delete" value="Delete"/></td> 
      <td><input type="hidden" name="eid" value="<?php echo $row['eid']?>" /> 
    </td> 
    <?php } 
    ?> 
</tr> 
</table> 
</form> 
    </center> 
<?php } else{ 
echo "No record found"; 
     } 

    ?>  
</div> 
    </div> 

php

global $con 

$eeid = $_POST['eid']; 

if (isset($_POST['delete'])) { 
    $query = "DELETE FROM exchange WHERE eid='$eeid' "; 

    if ($con->query($query) === true) { 
     echo "DELETED Data"; 
    } else { 
     echo "error during deletion" . $con->error; 
    } 
} 

Code beginnt löschen Es wird nicht löschen, das ich es nur löschen, letzte Zeile löschen möchten.

+0

Drew Bro, wenn u wissen, wo dann das Problem ist, plz mir sagen. –

+1

Wo setzt du $ eeid? –

+0

$ eeid = $ _ POST ['eid']; vor der Löschabfrage –

Antwort

0

Hallo Problem mit Ihrem Code ist die versteckte Typ Sie es verwenden immer über ältere Werte schreiben und stellen Sie Ihren letzten Wert als Wert USE GET-Methode das Problem zu überwinden

<td><a href="delete.php?row_id=<?php echo $row['eid']?>" /></a></td> 
</td> 

In delete.php oder was auch immer Ihre Dateinamen verwenden diesen Code

//mysql_connection 
if(isset($_GET['row_id'])){ 
$eeid=$_GET['row_id']; 
$query="delete from exchange 
     where eid='$eeid' "; 

if ($con->query($query)===TRUE){ 
    echo "DELETED Data"; 
    } 
    else{ 
    echo "error during deletion".$con->error; 
    } 
} 
} 
+0

Vielen Dank so viel bro .its arbeitet jetzt. –

+0

Sie sind willkommen –

+0

bro in update ich werde das gleiche tun, aber es wird sie leeren, wenn ich es aktualisieren. –

1

Das Problem ist, dass Sie den versteckten Eingang in Form sind zu wiederholen, und sie alle haben die gleichen Namen. Wenn Sie das Formular abschicken, wird $_POST['eid'] nur der letzte sein.

Sie müssen ein separates Formular für jede Zeile haben, nicht ein Formular für die gesamte Tabelle, so dass die Übermittlungsschaltfläche nur diesen senden wird eid.

while($row = $result->fetch_assoc()){?> 

<tr> 
    <td><?php echo $row['exchangetype']?></td> 
     <td><?php echo $row['retail']?><td> 
    <td ><?php echo $row['dte']?></td> 
    <td><?php echo $row['retail_sett']?></td> 
    <td><?php echo $row['retail']+$row['dte']+$row['retail_sett']?></td> 
    <td><?php echo $row['offine']?></td> 
    <td><?php echo $row['retail']+$row['dte']+$row['retail_sett']+$row['offine']?></td> 
    <td><form method='post' action="delete.php"> 
      <input type="submit" name="delete" value="Delete"/> 
      <input type="hidden" name="eid" value="<?php echo $row['eid']?>" /> 
     </form></td> 
    <?php } 

Eine andere Möglichkeit wäre, die EID in den Wert einreichen Schaltfläche zu setzen, anstatt ein verstecktes Feld.

<td><input type="submit" name="delete" value="<?php echo $row['eid'] ?>">/</td> 

Dann delete.php tun würde:

$eeid = $_POST['delete']; 
+0

... oder, der Vollständigkeit halber, das OP könnte [Array-Felder] (http://stackoverflow.com/a/3314578/472495) verwenden. – halfer

+0

@halfer Woher sollte er wissen, auf welchen Submit-Button geklickt wurde? – Barmar

+0

Die Zahl in den eckigen Klammern z.B. '' ist normalerweise der Primärschlüssel der gerenderten Zeile. Dies wird von PHP als verschachteltes Array, z. '['item' => [1 => 'Wert']]'. – halfer

Verwandte Themen