2014-11-15 8 views
9

Ho visualizzato alcuni valori dal database in forma di tabella utilizzando php. Una colonna della tabella è riservata per la modifica. Vorrei che ogni riga della tabella possa essere modificata.Modifica la riga specifica di una tabella utilizzando l'id di quella riga

codice per la modifica è

echo"<td class='success'><button class='btn blue' data-toggle='modal' data-target='#myeditModal'>Edit </button></td>"; 

codice utilizzato in modale è

<div class="modal fade" id="myeditModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
       <h4 class="modal-title" id="myModalLabel">Edut Treatment</h4> 
      </div> 

      <div class="modal-body"> 
       <form class="form-horizontal" role="form" action="edit.php?id="$row['id']"" enctype="multipart/form-data" method="post"> 
        <div class="form-group"> 
         <label class="col-lg-4 control-label"> Name</label> 
          <div class="col-lg-6"> 
           <input class="form-control" value="" type="text" name="name" > 
          </div> 
        </div> 

        <div class="form-group"> 
        <label class="col-md-3 control-label"></label> 
         <div class="col-md-8"> 
          <input class="btn btn-primary" value="Save Changes" type="submit" name="submit"> 

          <span></span> 
         </div> 
        </div> 
       </form> 

      </div> 
      <div class="modal-footer"> 
       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
      </div> 
     </div> 
    </div> 
</div> 

Codice per la pagina di edit.php è

<?php 
include('admin_session.php'); 
$con=mysqli_connect("localhost","root","","db"); 

// Check connection 
if (mysqli_connect_errno()) { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$id = $_GET['id']; 

mysqli_query($con,"UPDATE treatment_type SET name='".$name.'" WHERE id='".$id."'"); 
mysqli_close($con); 
header("Location: abc.php"); 
?> 

Il mio problema è che quando raggiungo il edit.php pagina ottengo l'url in questo modo: http://example.com/xyz/edit.php?id=

Non riesco a portare l'id a causa della quale non riesco a modificare una riga specifica della tabella.

+0

si può mostrare la definizione e un dump var di $ fila? – Stefan

+0

Beh, direi che devi usare javascript o jquery per poter passare la riga alla modale di modifica, quindi effettuare una chiamata ajax per visualizzare la pagina di modifica. In caso contrario, pubblicherete pagine modali multiplt sulla vostra pagina – KyleK

+0

@ Arif_suhail_123 Avete ragione! – Stefan

risposta

2

Se si è abilitati a chiamare l'URL bene. Molto probabilmente a causa di questa linea sul istruzione UPDATE:

WHERE id='".$id."'"); 
      ^^^^^^^ 

In secondo luogo, eco correttamente l'id fila:

action="edit.php?id=<?php echo $row['id']; ?>" 

E assicurarsi $name è definito.

E perché non utilizzare le istruzioni preparate invece:

if(isset($_GET['id'], $_GET['name'])) { 
    $con = mysqli_connect("localhost","root","","db"); 

    // Check connection 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $id = $_GET['id']; 
    $name = $_GET['name']; 

    $sql = 'UPDATE treatment_type SET name = ? WHERE id = ?'; 
    $update = $con->prepare($sql); 
    $update->bind_param('si', $name, $id); 
    $update->execute(); 

    if($update->affected_rows > 0) { 
     header("Location: abc.php"); 
    } else { 
     echo 'did not update'; 
    } 
} 
+0

@ Arif_suhail_123 sì capisco il suo flusso: quando la modale è aperta, mostrerà un modulo con tutti i campi in esso. il problema principale è che 'echo $ row ['id'];'. dal momento che 'id' non viene echeggiato correttamente, quando è inviato, il modulo non è in grado di inviare bene l'ID. – Ghost

+0

@ Arif_suhail_123 beh, ci sono alcuni mancanti parti che devono essere affrontate poiché non sappiamo come il PO riecheggia l'ID nella forma, in realtà la risposta di Kyle sopra è buona, se l'OP mette e usa le nostre risposte, entrambe dovrebbero affrontare questi problemi. prese :) – Ghost

+0

@Ghost sto ancora ricevendo lo stesso problema e durante l'utilizzo dell'istruzione preparata ho ottenuto un errore nell'errore Parse: errore di sintassi, imprevisto ';' in aggiornamento query e io non sono in grado di rimuoverlo – Sam

2

Il modo in cui lo avete ora, è necessario per passare in questa ..

<form class="form-horizontal" role="form" action="edit.php?id='<?php echo $row['id'];?>'" enctype="multipart/form-data" method="post"> 

Per l'uscita del ID corerectly nella forma.

Ma in questo modo si ottengono più forme modali diverse per ogni riga?

Si dovrebbe davvero visualizzare la modale una sola volta, quindi passare l'ID tramite jquery/javascript al modale, fare una richiesta ajax-visualizzare i dati e quindi modificarlo.

Se il suo solo una riga, dovrebbe andare bene, ma se si desidera che più righe della tabella, con la possibilità di modificare qualsiasi valore nella riga, allora è sicuramente bisogno di usare Ajax/jquery/javascript

Esempio utilizzando una finestra modale, e passando ID tramite jQuery ...

PHP

echo"<td class='success'><button class='btn blue editButton' data-id='<?php echo $row['id'];?>' >Edit </button></td>"; 

jquery

$(document).ready(function(){ 
    //Click button, apply id, and open modal. 
    $('.editButton').click(function(){ 
     var id = $(this).data('id'); 
     //Apply action with id to form 
     $('#myForm').attr('action','edit.php?id='+id); 
     //Open modal 
     $('#myModal').modal({background:'static'}); 
    }): 

    //If you want values to come into the modal you need to do a sepereate ajax call to get the one particular element from database. 


    }); 
+0

sto ancora ricevendo lo stesso url e sto ricevendo l'errore Errore Parse: errore di sintassi, imprevisto '"' nella query di aggiornamento – Sam

+0

Bene, allora ovviamente non stai mostrando come stai ottenendo i risultati e passando per applicare $ riga variabile al modulo Sembra che la riga non contenga nulla, la tua necessità di usare mysql_fetch_array e il suo ciclo – KyleK

Problemi correlati