2016-08-23 4 views
-1

Ich habe eine Website erstellt, die viele Listen/Tabellen (basierend auf PHP) hat. Ich versuche, ein Change All und Delete All System für die Listen zu machen. Ich habe bereits checkbox zu allen einzelnen Listenelementen hinzugefügt. Ich habe auch ein Kontrollkästchen, um alle diese Elemente mit einem Klick auszuwählen. Jetzt bin ich fest, wie man die Änderungs- und Löschoption ausführt. Es war 3 Tage ...ändere und lösche ausgewählte Objekte aus der Liste - PHP

  • Ich habe den Change All Code richtig gemacht. Aber ich kann Delete All Teil nicht herausfinden.
  • Ich weiß nicht, die Variable $ targetpage übergeben, um es danach umleiten zu lassen.

Hier ist der Code:

<!DOCTYPE html> 
<html> 
<title>List 1</title> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="http://www.w3schools.com/lib/w3.css"> 
<link rel="stylesheet" href="http://www.w3schools.com/lib/w3-theme-purple.css"> 
<?php include('dbcon.php');?> 
<style>a {text-decoration: none;}</style> 

<!--Select All--> 
<script> 
function checkAll(ele) { 
    var checkboxes = document.getElementsByTagName('input'); 
    if (ele.checked) { 
     for (var i = 0; i < checkboxes.length; i++) { 
      if (checkboxes[i].type == 'checkbox') { 
       checkboxes[i].checked = true; 
      } 
     } 
    } else { 
     for (var i = 0; i < checkboxes.length; i++) { 
      console.log(i) 
      if (checkboxes[i].type == 'checkbox') { 
       checkboxes[i].checked = false; 
      } 
     } 
    } 
} 
</script> 

<body> 
<!--?php include ('header.php');?--> 

<form name="form1" enctype="multipart/form-data" action="ajaxAction.php" method="post"> 
<div class="w3-container"> 
    <div class="w3-padding-32 w3-center"> 
     <input class="w3-btn w3-green" type="submit" name="chkbox" value="Change All" /> 
     <input class="w3-btn w3-red" type="submit" value="Delete All"> 
    </div> 
<center> 
<table class="w3-table-all" style="width: auto;"> 
    <tr class="w3-theme"> 
     <th><input class="w3-check" type="checkbox" onchange="checkAll(this)" name="chk[]" /></th> 
     <th>Data</th> 
    </tr> 

    <tr> 
     <td> 
      <input class="w3-check" type="checkbox" name="chkbox[]" /> 
     </td> 
     <td class="w3-small" > 
      The data is displayed here. 
     </td> 
    </tr> 
</table> 
</center> 
</div> 
</form> 
<br> 
<!--?php include ('footer.php');?--> 
</body> 
</html> 

Hier ist der ajaxAction.php Code:

<!--Change--> 
    <?php 
    if ($_REQUEST['chkbox']) { 
     $targetpage = $_REQUEST['targetpage']; 
     $change = array(); 
     $change = $_REQUEST['chkbox']; 
     for($c=0;$c<count($change); $c++){ 

      $sql_all = "update `table` set `value`='123' WHERE `id` = '$change[$c]'"; 
      mysql_query($sql_all) or die(mysql_error()); 
     } 
    ?> 
    <script> 
     var targetpage = "<?php echo $targetpage ?>"; 
     location.href=targetpage+"?done"; 
    </script> 
    <?php } ?> 

    <!--Delete--> 
    <?php ?> 
    <script> 
     var targetpage = "<?php echo $targetpage ?>"; 
     location.href=targetpage+"?done"; 
    </script> 

Mit meinem aktuellen Code, bin ich nur in der Lage das ausgewählte Array verwenden chkbox[] für eine Verarbeitung, dh Change All. Ich kann nicht das gleiche Array für Delete All Knopf verwenden.

+0

Sie sind anfällig für [sql injection attacks] (http://bobby-tables.com). –

+0

Statt javscript an den Browser zu senden und eine komplette Rundreise zu machen, warum nicht PHP '' header ('Location: another_page.php') verwenden '' – RiggsFolly

+1

Habe ich recht, wenn ich annehme, dass jemand die 'Delete All'-Verarbeitung für schreiben möchte Du? – RiggsFolly

Antwort

0

Nachdem ich die Trial-and-Error-Methode verwendet und zwei Wochen lang versucht hatte, bekam ich endlich die Lösung ON MY OWN und ich habe einen ernsten Fehler, weil niemand aus diesem Forum mir die Lösung zeigen wollte.

Es war einfach. Alles, was ich tun musste, war $_POST statt $_REQUEST zu verwenden und verschiedene Namen sowohl die Tasten wie folgt verwenden:

<input class="w3-btn w3-green" type="submit" name="submit1" value="Change All"> 
<input class="w3-btn w3-red" type="submit" name="submit2" value="Delete All"> 

Also, ich geändert ajaxAction.php zu: tell

<?php 
//Change All 
if(isset($_POST['submit1'])){ 
    if(!empty($_POST['chkbox'])){ 
     $targetpage = $_REQUEST['targetpage']; 
     foreach($_POST['chkbox'] as $selected){ 
      $sql_all = "update `table` set value='123' WHERE `id` = '$selected'"; 
      mysql_query($sql_all) or die(mysql_error()); 
     } 
    } 
?> 

<script> 
    location.href="tables.php?done"; 
</script> 
<?php } ?> 


<?php 
//Delete All 
if(isset($_POST['submit2'])){ 
    if(!empty($_POST['chkbox'])){ 
     foreach($_POST['chkbox'] as $selected){ 

      $sql_all = "DELETE FROM `table` WHERE `id` = '$selected'"; 
      mysql_query($sql_all) or die(mysql_error()); 
     } 
    } 
?> 

<script> 
    location.href="tables.php?done"; 
</script> 
<?php } ?> 

Alles, was Sie tun musste, war mir, dass ich $_POST verwenden sollte. Niemand von Stack Overflow hat mir geholfen.

Verwandte Themen