PHP получает выбранные строки таблицы из флажков

У меня есть форма PHP, где создается таблица всех файлов в папке на сервере, и каждой созданной строке присваивается флажок, который будет использоваться для определения того, какие файлы должны быть удалены или разделены и т. Д. Каждой строке дано имя checkbox[$rownumber] чтобы различать каждый, а затем, когда нажимается кнопка, на данный момент, чтобы я мог заставить его работать, он просто печатает выбранные строки, но я не могу заставить это работать.

Первоначально, поскольку строки создаются в таблице с сервера, это код, который правильно создает их, как я хочу

 <?php if(isset($_REQUEST['deleteFile'])) {var_dump($_REQUEST); if(isset($_POST['checkbox'])) { print_r($_POST); } } ?> <form name="mainHomescreen" action="MainHomescreen.php" method="POST"> <nav> <input type="text" name="Search" value="Search" style = "color:#888;" onFocus="inputFocus(this)" onBlur="inputBlur(this)"/> </nav> <sidebar> <input type="button" value="Create Folder" onClick="createFolder()"/> <input type="button" value="Download Selected Files/Folders" onClick=" "/> <input type="button" value="Encrypt Selected" onClick="encrypt()"/><br> <input type="button" value="Share Selected" onClick="shareFolder()"/> <!-- upload a file --> <div id="fileUpload"> <div id="uploadPopup"> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" id="uploadForm" method="post" name="uploadForm" enctype="multipart/form-data"> Select file to upload: <input name="fileUpload" type="file" /><br /> <input type="submit" value="Upload File" name="submitFile"/> </form> </div> </div> <input type="button" name="upload" value="Upload File" onClick="showUpload()"/> <input type="submit" value="Delete" name="deleteFile"/> <input type="button" value="Rename" onClick=" "/><br> <input type="button" value="Password Protect Folder/ File" onClick=" "/><br><br> </sidebar> <article> <span class="error"><?php echo $error;?></span> <table id="detailView" style="width:100%"> <!-- php to create table --> <?php //open file names $dir = opendir("/home/a1962403/public_html/files"); $filearray = array(array(array())); echo '<table cellpadding="10" cellspacing="0" style="width:100%">'; echo ' <tr> <th> </th> <th>File</th> <th>Date</th> <th>Size</th> </tr> '; $rownumber = 0; //List files in directory while (($file = readdir($dir)) !== false) { //gets the file date, string needed decoding otherwise throws error. $date = @filemtime($file); $date = date("F d YH:i:s.", filemtime(utf8_decode("/home/a1962403/public_html/files/$file"))); $size = filesize("/home/a1962403/public_html/files/$file") . ' bytes'; $rownumber = $rownumber + 1; //prints a table row echo '<tr class="bottomline">'; echo "<td><input type='checkbox' name='checkbox[$rownumber]' value='[$rownumber]' </td>"; echo "<td>$file</td>"; echo "<td>$date</td>"; echo "<td>$size</td>"; echo '</tr>'; } echo '</table>'; closedir($dir); ?> </article> </form> </body> </html> 

Из-за этого у меня есть кнопка отправки, называемая «deleteFile», которую я хочу использовать, как я сказал на данный момент, просто получить то, что выбрано для обеспечения ее работоспособности, но на самом деле это не дает мне никаких результатов, поэтому любая помощь будет очень оценили.

Может возникнуть проблема с форматированием строк

echo "<td><input type='checkbox' name='checkbox[$rownumber]' value='[$rownumber]' </td>";

Измените его на:

  echo "<td><input type='checkbox' name='checkbox[" . $rownumber . "]' value='". $rownumber . "' </td>"; 

И поскольку ваш номер от 0 до вы также можете использовать checkbox[] в качестве имени.

Это помогло бы этой форме жить.

Вы имеете право использовать isset при определении того, установлен флажок или нет, но вы используете разные имена:

 isset($_POST['checkbox']) 

вернет true, если

 <input type="checkbox" name="checkbox" /> 

проверено.

Вы должны ссылаться на опубликованные входы, используя их имена в массиве $_POST .


В этом случае вам нужно установить checkbox[$rownumber] , который, как представляется, тривиальный, требует, чтобы вы знали номера строк при публикации:

PHP-код

 if (isset($_POST["checkbox[$rownumber]"])) { // This checkbox is checked } 

Если вы не знаете точных имен ввода, вы можете выполнить итерацию через массив $_POST :

PHP-код

 foreach ($_POST as $input_name => $input_value) { if (strpos($input_name, 'checkbox') !== false) { // This input's name contains the substring 'checkbox' } } 

Обратите внимание на строгое сравнение типов в strpos.