Saya membaca gambar dari direktori 'gambar' yang berisi beberapa folder dengan gambar. Saya ingin menampilkan setiap gambar dalam div dan dengan kotak centang untuk memutuskan apakah itu fashion atau bukan fashion. Saya menggunakan kode berikut untuk membaca file dari direktori dan menampilkannya di browser. Divnya satu demi satu:
<?php
function listFolderFiles($dir){
$html = '';
// Init the session if it did not start yet
if(session_id() == '') session_start();
$html .= '<ol>';
foreach(new DirectoryIterator($dir) as $folder){
if(!$folder->isDot()){
if($folder->isDir()){
// $html .= '<li>';
$user = $dir . '/' . $folder;
foreach (new DirectoryIterator($user) as $file) {
if($file != '.' && $file != '..'){
$image = $user . '/' . $file;
// Check the pictures URLs in the session
if(isset($_SESSION['pictures']) && is_array($_SESSION['pictures'])){
// Check if this image was already served
if(in_array($image, $_SESSION['pictures'])){
// Skip this image
continue;
}
} else {
// Create the session variable
$_SESSION['pictures'] = array();
}
// Add this image URL to the session
$_SESSION['pictures'][] = $image;
// Build the form
//echo $image, "</br>";
$html .= '
<style>
form{
font-size: 150%;
font-family: "Courier New", Monospace;
display: inline-block;
align: middle;
text-align: center;
font-weight: bold;
}
</style>
<form class = "form" action="' . action($image) . '" method="post">
<div>
<img src="' . $image . '" alt="" />
</div>
<label for="C1">FASHION</label>
<input id="fashion" type="radio" name="fashion" id="C1" value="fashion" />
<label for="C2"> NON FASHION </label>
<input id="nfashion" type="radio" name="nfashion" id="C2" value="nfashion" />
<input type="submit" value="submit" />
</form>';
// Show one image at a time
// Break the loop
break 2;
}
}
// $html .= '</li>';
}
}
}
$html .= '</ol>';
return $html;
}
//##### Action function
function action($img){
$myfile = fopen("annotation.txt", "a");
if (isset($_POST['fashion'])) {
fwrite($myfile, $img." -- fashion\n");
// echo '<br />' . 'fashion image';
}
else{
fwrite($myfile, $img." -- nonFashion\n");
// echo '<br />' . ' The submit button was pressed<br />';
}
}
echo listFolderFiles('images//');
?>
Ketika saya membuat panggilan tindakan($gambar) dari dalam tag formulir, saya perhatikan, bahwa nilai default kirim diurai ke fungsi, sehingga menyimpan nama gambar dengan nilai default dan nilai yang dipilih untuk yang pertama gambar itu diurai ke gambar kedua, nilai yang dipilih dari gambar kedua disimpan ke file dengan gambar ketiga dan seterusnya. Ketika saya melakukan panggilan di tag kirim masukan samping, ia mulai menyimpan ke file dari gambar kedua dengan nilai yang pertama dan seterusnya. Saya tidak dapat menyimpan ke file korespondensi yang benar antara gambar dan nilai yang dipilih. Di mana saya harus memanggil fungsi tindakan agar dapat melakukannya dengan benar?
EDIT: Saat saya melakukan panggilan di dalam formulir, fungsi tindakan dipanggil segera sebelum pengguna menekan tombol kirim. Bagaimana saya bisa memanggil fungsi saya dengan tepat ketika formulir dikirimkan? Saya mencoba menggunakan if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') {}
:
if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') {
action($image);
}
Saya menambahkan kode di atas sebelum tag html, namun, saya mendapatkan hasil yang sama seperti jika saya meletakkan fungsi tindakan di dalam tag kirim masukan. Adakah yang tahu cara mengurai gambar yang tepat untuk menulis nilai?