2017-05-09 1 views
0

Code:wie Tabellenzeilen Daten mit eindeutiger ID zu aktualisieren?

<?php 
if(isset($_POST['save'])) 
{ 
    $comment1 = $_POST['comment2'].",".date('Y-m-d'); 
    $comment2 = $_POST['comment2']; 
    $id = $_POST['id']; 
    $query = "update enquires2 set comment1 = '$comment1', comment2 = '$comment2', s_date = '$s_datee' where id='$id'"; 
    $result = mysqli_query($link,$query); 
    if($result==true) 
    { 
    echo "successfull"; 
    } 
    else 
    { 
    echo "error!"; 
    } 
} 
?> 

<form method="post" name="myform"> 
<table> 
    <tr> 
    <th>comment1</th> 
    <th>comment2</th> 
    <th>Action</th> 
    </tr> 
    <?php 
    $sql = "select * from enquires2 "; 
    $result = mysqli_query($link,$sql); 
    while ($row = mysqli_fetch_array($result)) 
    { 
    ?> 
    <tr> 
    <td> 
     <input type='hidden' name='id' value='<?php echo $row['id']; ?>'> 
    </td> 

    <td> 
    <?php echo $row['comment1']; ?> 
    </td> 

    <td> 
     <input type='text' name='comment2' id='comment2' value=""/> 
    </td> 

    <td> 
     <input type ='submit' name='save' id='save' value='Save' /> 
    </td> 
    </tr> 
    <?php 
    } 
    ?> 
</table> 
</form> 

enter image description here

In diesem Code I Tabelle enquires2 mit einzigartigen ID aktualisieren möchten. In der folgenden Abbildung sehen Sie, dass die Tabellenzeile mit der Schaltfläche "Speichern" nur eine Zeile enthält und in ähnlicher Weise mehrere Zeilen mit der Schaltfläche "Speichern" in jeder Zeile enthält. Jetzt möchte ich, dass, wenn ich auf die Schaltfläche "Speichern" einer bestimmten Zeile klicke, nur diese Zeilendaten aktualisiert werden. Wie kann ich dieses Problem beheben? Bitte helfen Sie.

Danke

+0

Mögliches Duplikat von [Erstellen Sie eine HTML-Tabelle, wobei jedes TR ein FORM ist] (http://stackoverflow.com/questions/4035966/create-a-html-table-where-each-tr-is-a-form) – Ivar

+0

Soweit ich sehen kann $ s_datee ist nicht eindeutig –

+0

es ist kein Duplikat @Ivar – Demonyowh

Antwort

0

Sie AJAX und jQuery, dies zu tun verwenden könnten und die Daten in eine separate PHP-Datei zu senden und die $row['ID'] zu einem Datenwert Attribut der Taste zuweisen,

$("#save-btn").click(function(){ 
    id = $(this).attr(data-value); 
    ***** rest of values here 
    $.ajax({ 
     method: "GET", 
     data: {id: id, rest of: data here}, 
     url: phpfile.php, 
     success: function(){ 
      console.log("Success"); 
     } 
    }) 
}); 

Während in der PHP-Datei würden Sie die ID wie erhalten,

$_GET['id'], und das gleiche mit den anderen Werten, da wir die GET-Methode verwenden und sie dann in die Update-Abfrage setzen.

-1

Verwenden Sie Ihren Code aus Sicherheitsgründen nicht. Lesen Sie mehr über SQL Injektion Here. Für jede Zeile() erstellen Sie ein Formular mit einer versteckten Eingabe, die die ID der Zeile speichert.

-1

ich meinen Code überarbeitet, damit es funktioniert, erstellen Sie eine verschachtelte Tabelle in Ihrem td, so wird dieser Tag akzeptiert werden,

auch diese Verbindung für eine Arbeitsreferenz sehen, HTML: Is it possible to have a FORM tag in each TABLE ROW in a XHTML valid way?

<?php 
    if(isset($_POST['save'])) 
    { 
     $comment1 = $_POST['comment2'].",".date('Y-m-d'); 
     $comment2 = $_POST['comment2']; 
     $id = $_POST['id']; 
     $query = "update enquires2 set comment1 = '$comment1', comment2 = '$comment2', s_date = '$s_datee' where id='$id'"; 
     $result = mysqli_query($link,$query); 
     if($result==true) 
     { 
     echo "successfull"; 
     } 
     else 
     { 
     echo "error!"; 
     } 
    } 
    ?> 


    <table> 
     <tr> 
     <th>comment1</th> 
     <th>comment2</th> 
     <th>Action</th> 
     </tr> 
     <?php 
     $sql = "select * from enquires2 "; 
     $result = mysqli_query($link,$sql); 
     while ($row = mysqli_fetch_array($result)) 
     { 
     ?> 
<tr><td><table> 

    <form method="post" name="myform"> 

     <tr> 
     <td> 
      <input type='hidden' name='id' value='<?php echo $row['id']; ?>'> 
     </td> 

     <td> 
     <?php echo $row['comment1']; ?> 
     </td> 

     <td> 
      <input type='text' name='comment2' id='comment2' value=""/> 
     </td> 

     <td> 
      <input type ='submit' name='save' id='save' value='Save' /> 
     </td> 
     </tr> 
    </form> 

</table> 
</td> 
</tr> 
     <?php 
     } 
     ?> 
    </table> 
+0

Es ist nicht erlaubt, ein Formular zu setzen um ein tr-tag gewickelt. ['tr' kann nur' table', 'thead',' tbody' oder 'tfood' als Eltern haben.] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr) – Ivar

+0

es ist nicht erlaubt, aber es wird funktionieren, wahrscheinlich auf einigen Browsern – apelidoko

+0

Und vielleicht nicht auf anderen. Ich würde nicht die Chance ergreifen und einfach die Regeln befolgen. Verwenden Sie lieber eine Antwort, die in allen Fällen funktionieren wird. – Ivar

0

$id = $_POST['id']; 
    $query = "update enquires2 set comment1 = '$comment1', comment2 = $comment2', s_date = '$s_datee' where id='$id'"; 
    $result = mysqli_query($link,$query); 

: Vor allem aus Sicherheitsgründen müssen Sie diese Abfrage auf eine vorbereitete Anweisung PHP MySQLI Prevent SQL Injection sehen ändern


Diese Zeile ist sowieso schlecht, Sie haben ein Eröffnungsangebot für $ comment2 verfehlt.

$query = "update enquires2 set comment1 = '$comment1', comment2 = $comment2', s_date = '$s_datee' where id='$id'"; 

Sind Sie sicher, $ link eine tatsächliche Mysqli Link ist?

Wie für den HTML-Teil müssen Sie ein Formular für jeden Datensatz mkae. Siehe den Link HTML: Is it possible to have a FORM tag in each TABLE ROW in a XHTML valid way? geschrieben

alternativ nur etwas Schlechtes tun, wie könnte die $ id Hinzufügen Feld Evry für jede Zeile (ähnlich :)

<input type ='submit' name='save[<?=$id;?>]' id='save' value='Save' /> 

und in der Check Hexe Schlüssel PHP-Code gesetzt.

if(isset($_POST['save']) && is_array($_POST['save'])){ 
    $id=key($_POST['save']); 
} 

Sie müssen auch die schlechte Sache für Ihre Kommentare replizieren, sondern als ein Proof of Concept können Sie dieses Snippet auf phpfiddle laufen.org

<?php 
print_r($_POST); 
if(isset($_POST['save']) && is_array($_POST['save'])){ 
    echo key($_POST['save']); 
} 
?> 
<html> 
    <form method='post'> 
     <input type='submit' name='save[1]' value='1' /> 
     <input type='submit' name='save[2]' value='2' /> 
    </form> 
</html> 

wünsche ich Ihnen konnte bieten eine wirklich vollständige Antwort, aber es gibt eine Menge Arbeit auf dem Code getan werden, damit es ‚richtige Codierung‘ zu sein. Wiederum ist dies eine Frage der Meinung neben der Tatsache, dass Ihr Code auf sql Injektion vunerable ist und nicht akzeptabel ist.

Verwandte Themen