我正在 aaa.php 檔案中處理一個表單,其中的複選框在“name”參數中使用方括號:
<form method="get" action="bbb.php"> <input type="checkbox" id="eleve_element_18" name="eleve_element_18[]" value="1"> </form>
表單位於aaa.php檔案中,並使用GET方法。
提交時,aaa.php檔案會跳到bbb.php文件,該文件顯示提交的資料以供使用者檢查,然後是否返回aaa.php檔案修改資料或將其保存在資料庫。在最後一種情況下,ccc.php 檔案保存資料。
為了完成這項工作,我使用GET方法將URL中aaa.php提交的所有de資料寫入bbb.php檔案中。因此,bbb.php 中的 PHP 命令列會檢索 URL 中顯示的數據,並將 aaa.php 提交的資料寫入到 ccc.php 檔案的鏈接,以便 ccc.php 檔案可以將資料插入資料庫中.
問題在於 GET 方法使 Web 瀏覽器重寫方括號 [],如下所述:表單提交時對表單 GET 鍵方括號進行編碼。因此:
• bbb.php 檔案在儲存資料之前無法顯示複選框值;
• 如果我使用 POST 方法,bbb.php 檔案會顯示複選框值,但我無法存取已提交的數據,無法將 URL 重寫到 ccc.php 檔案。
這是程式碼:
• aaa.php
//This part of the code writes the checkboxes lines $listeelementssignifiants = $dbco->query('SELECT * from referentiels'); while ($referentiel=$listeelementssignifiants->fetch()) { echo '<input type="checkbox" id="eleve_element_' . $eleves['numero_eleve'] . '" name="eleve_element_' . $eleves['numero_eleve'] . '[]" value="' . $referentiel['numero'] . '"><label class="elementsignifiant" for="eleve_element_' . $eleves['numero_eleve'] . '">' . $referentiel['element'] . '</label><br>'; }
• bbb.php
#//These lines retrieve the URL written by the GET method and build a new URL to ccc.php if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') $url = "https://"; else $url = "http://"; $url .= $_SERVER['HTTP_HOST'] . str_replace("bbb.php", "ccc.php", $_SERVER['REQUEST_URI']); //Bouton Valider echo '<button type="button" onclick="location.href=\'' . $url . '\'" class="valider">Valider</button>';
使用 GET 方法,結果 URL 為:
https://domainname/bbb.php?...&matiere_18=ulis&numero_eleve=18&objectifs_18=dfsdfs&activites_18=sdfsdgfdgdfgd&aesh_18=fgdfgdfgd&commentaires_18=fghdfhqdhdghd&eleve_element_18%5B%5D=1&eleve_element_18%5B%5D=47&eleve_element_18%5B%5D=73
在這種情況下是否可以保留方括號並使用 GET 方法?
感謝您的回答和評論!
根據您的建議,這是我發現問題的方法:
• aaa.php 包含表單,現在使用 POST 方法提交資料;
• bbb.php 讀取$_POST 中的資料並顯示結果。 bbb.php中有兩處程式碼修改:
► 將 $_GET 改為 $_POST;
► 新增會話變數來儲存 $_POST 資料:
• ccc.php 讀取會話變量,就像它是 $_POST 一樣。而不是:
我寫道:
現在 ccc.php 像以前一樣將資料儲存在資料庫中!
感謝您的幫忙!