2014-07-21 13 views
5

Mam projekt podobny do tego przykładu.Zagnieżdżony formularz jest zabroniony, prawda? Więc jak to zrobić?

<?php 

if (isset($_POST['delete'])) { 
    // Delete using id 
} 

if (isset($_POST['deleteAll'])) { 
    // Delete using array name check 
} 

?> 

<form method="POST" action="index.php" onsubmit="return validate()"> // First form 
    <?php foreach ($rows as $row) : ?> 
     <form method="POST" action="index.php" onsubmit="return validate()> // Second form 
      <input type="checkbox" name="check[]" value="<?php $row['id'] ?>" /> 
      <input type="hidden" name="id" value="<?php $row['id'] ?>" /> 
      <input type="submit" name="delete" value="Delete" /> 
     </form> 
    <?php endforeach ?> 

    <input type="submit" name="deleteAll" value="Delete checked items" /> 
</form> 

onsubmit używałem funkcji potwierdzić na javascript.

Już o tym myślę i mogę tylko pomyśleć o użyciu nested-form.

second form i i używane do delete przy użyciu ID.

first form i submit deleteAll użyte do delete wszystkich sprawdzonych pozycji.

gdybym delete second form,

i klikam deleteid będzie last index z foreach.

Więc będę delete ostatni row, a nie row Chciałam delete.

już myśleć i znaleźć żadnej wskazówki,

Mam nadzieję, że ktoś tutaj może dać wskazówkę.

Odpowiedz

6

Nie próbuj robić tego w ten sposób. Po prostu komplikujesz sprawę. Pojedyncza forma powinna wystarczyć.

<form method="POST" action="index.php" onsubmit="return validate()"> 
    <?php foreach ($rows as $row) : ?> 
     <input type="checkbox" name="check[]" value="<?php echo $row['id'] ?>" /> 
     <button name="delete" value="<?php echo $row['id']; ?>">Delete</button><br/> 
    <?php endforeach ?> 
    <input type="submit" name="deleteAll" value="Delete checked items" /> 
</form> 

PHP

// handle single delete 
if(isset($_POST['delete'])) { 
    $id = $_POST['delete']; // individual ID 
} 

// handle mulitple selected checkboxes 
if(isset($_POST['deleteAll'])) { 
    $ids = $_POST['check']; 
} 
+0

Twoja droga jest piękniejsze. Może za dużo myślę, najpierw spróbuję. – Scramble

Powiązane problemy