Dalam tugas sekolah, saya membangun situs untuk museum luar angkasa fiksi di kota saya menggunakan PHP. Ini memiliki sistem Inklusi Data dan Konsultasi Data, tetapi saya memiliki masalah dengan konsultasi yang ingin saya ketahui cara mengatasinya: bagaimana cara menghapus baris terakhir dari file?
Inklusi Data
Di area terlarang situs, saya memiliki formulir HTML5 dengan 5 bidang (nama, alamat, nomor telepon, jenis kelamin dan pameran yang dikunjungi) yang mengirimkan data dengan metode POST ke fungsi di PHP yang menuliskannya pada file txt tertentu dengan menggunakan perintah fwrite
:
fwrite ($pointer, "$name | $addres | $telephone | $sex | $exhibitions " .PHP_EOL);
Seperti yang Anda lihat, ia menulis dalam file txt data yang dimasukkan pada formulir, ditambah jeda baris. Pointer adalah variabel yang digunakan oleh fopen
untuk membuka file yang saya perlukan agar berfungsi. Contoh keluaran:
Márcio Aguiar | Jalan Belmiro Braga | 1234-5678 | M | Planet Tata Surya
Joana Tobias | Jalan Santos Dummont | 8765-4321 | F | Lubang Hitam, Satelit
Konsultasi Data
Lalu ada sistem konsultasi. Ini memiliki loop yang berjalan hingga file berakhir. Di dalam loop ini ada variabel bernama $buffer
yang mendapatkan satu baris file txt setiap kali. Kemudian explode
d membuat array bernama $lines[$counter]
. Untuk mencetaknya dengan baik, saya menggunakan array_combine
di mana saya menggabungkan nama bidang pada array lain ($keys
) dengan nilai yang ditulis dalam $lines[$counter]
, dan mengatribusikannya ke $combined[$counter]
. Kemudian loop berakhir dan saya menggunakan print_r
di dalam <pre></pre>
untuk melihat data yang ditulis dalam $combined
, sambil mempertahankan spasi dan jeda yang akan diabaikan oleh HTML. Ini kodenya:
$keys = array ("Name", "Address", "Telephone", "Sex", "Visited exhibition");
for ($counter=0;!feof($reader);$counter++){
$buffer = fgets($reader);
$lines[$counter] = explode(" | ", $buffer);
$combined[$counter] = array_combine($keys, $lines[$counter]);
}
echo "<pre>";
print_r($combined);
echo "</pre>";
Contoh keluaran:
Array ( [0] => Array ( [Name] => Márcio Aguiar [Address] => Belmiro Braga Street [Telephone] => 1234-5678 [Sex] => M [Visited exhibitions] => Planets of Solar System ) [1] => Array ( [Name] => Joana Tobias [Address] => Santos Dummont Avenue [Telephone] => 8765-4321 [Sex] => F [Visited exhibitions] => Black Holes, Satellites ) [2] => )
Di sini Anda dapat melihat bahwa 2
Array dibuat kosong. Hal ini disebabkan karena baris terakhir hanya berisi satu baris saja yang disisipkan oleh form di atas. Saya perlu menghapus jeda baris terakhir ini, dan hanya yang itu, tetapi tidak tahu caranya. Saya ingin tahu! Ketidaktahuan menyebabkan munculnya kesalahan ketika eksekusi tiba di array_combine
, karena kedua array harus memiliki jumlah elemen yang sama, dan 2
kosong. Ini kesalahannya:
Peringatan: array_combine(): Kedua parameter harus memiliki jumlah elemen yang sama di E:\Aluno\Documents\Wamp\www\trab_1\area_restrita\consulta.php on line 60