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

0

У меня есть форма 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 Y H: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", которую я хочу использовать, как я сказал на данный момент, просто получить то, что выбрано для обеспечения ее работоспособности, но это не дает мне никаких результатов, поэтому любая помощь будет очень оценили.

  • 0
    что выводится var_dump($_REQUEST) сразу после проверки isset() ?
  • 0
    После if (isset_REQUEST ['deleteFile'])) это массив (4) {["Search"] => string (6) "Search" ["fileUpload"] => string (0) "" ["deleteFile"] = > string (6) "Delete" ["siteowner"] => string (1) "1"}
Показать ещё 6 комментариев
Теги:
html-table
checkbox

2 ответа

0
Лучший ответ

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

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

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

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

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

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

  • 0
    Прекрасно, это, наконец, получил выход, спасибо.
0

Вы имеете право использовать 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 name contains the substring 'checkbox'
    }
}

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

  • 0
    В $_REQUEST пока нет ничего, на что можно сослаться.
  • 0
    Я вижу, хотя проблемы различий в именах также появились бы после этого. Дай мне взглянуть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню