Anda di halaman 1dari 16

Tugas Pemograman Web

Ke 3

Ketua:
Jemal Rashidi 155150200111147

Anggota:
Abie Naufal Hidayat 155150200111162
Fiqih Yanfirdaus Afandi 155150207111091
Kevin Dion Andre Pradana 155150200111151
Muhammad Ibrahim Fayadl 155150207111090

Source code:
1 <?php
2 @mkdir(getcwd()."/images", 0700, TRUE);
3
4 if (file_exists("database.pemweb") == false) {
5 $file = fopen("database.pemweb", "w");
6 fclose($file);
7 }
8 ?>
9
10 <?php
11 function getDatabase() {
12 $database = file_get_contents("database.pemweb");
13 $database = str_replace("\n", "", $database);
14
15 if ($database != "") {
16 $database = explode(";", $database);
17 $lines = [];
18
19 foreach ($database as $line) {
20 if ($line == "") {
21 continue;
22 }
23
24 array_push($lines, explode("#", $line));
25 }
26
27 $database = $lines;
28 }
29
30 return $database;
31 }
32
33 function setDatabase(&$database) {
34 if ($database != "") {
35 foreach ($database as &$lines) {
36 if ($lines == "") {
37 continue;
38 } else {
39 $buffer = implode("#", $lines);
40 $buffer .= ";\n";
41 }
42
43 $lines = $buffer;
44 }
45
46 $buffer = implode("", $database);
47 $database = $buffer;
48 }
49
50 $file = fopen("database.pemweb", "w");
51 fwrite($file, $database);
52 fclose($file);
53 }
54
55 $database = getDatabase();
56 ?>
57
58 <!DOCTYPE html>
59 <html>
60 <head>
61 <title>Tugas 3 Pemrograman Web</title>
62 </head>
63 <body>
64 <fieldset>
65 <legend>( T )<i>itle</i></legend>
66 <div align="center">Tugas 3 Pemrograman Web</div>
67 </fieldset>
68
69 <br> <!-- ------------------------------------------- -->
70
71 <?php
72 $data_info_str = "";
73
74 if (isset($_POST["submit_data"])) {
75 $nama = $_POST['nama'];
76 $email = $_POST['email'];
77 $hp = $_POST['hp'];
78 $foto = isset($_FILES['foto'])
79 ? $_FILES['foto']["name"]
80 : "";
81
82 if ($nama == "" ||
83 $email == "" ||
84 $hp == "" ||
85 $foto == "") {
86 $data_info_str = "
87 <br>
88 <fieldset>
89 <legend>( i )<i>nformation</i></legend>
90 Jika ingin menambah data semua kolom harus terisi.
91 </fieldset>
92 ";
93 } else {
94 if ($database == "") {
95 $database
96 = array(
97 array($nama, $email, $hp, $nama.".jpg")
98 );
99 } else {
100 array_push($database,
101 array($nama,
102 $email,
103 $hp,
104 $nama.".jpg"));
105 }
106
107 move_uploaded_file($_FILES['foto']['tmp_name'], "images/".$nama.".jpg");
108
109 setDatabase($database);
110 }
111 }
112 ?>
113
114 <fieldset>
115 <legend>( I )<i>nput</i></legend>
116 <form action=""
117 method="post"
118 enctype="multipart/form-data"><table>
119 <tr>
120 <td>Nama</td>
121 <td colspan="2">:
122 <input type="text"
123 name="nama"
124 pattern="[a-zA-Z0-9]+"
125 placeholder="alphabetical text">
126 </td>
127 </tr>
128 <tr>
129 <td>Email</td>
130 <td colspan="2">:
131 <input type="email"
132 name="email"
133 placeholder="text">
134 </td>
135 </tr>
136 <tr>
137 <td>HP</td>
138 <td colspan="2">:
139 <input type="text"
140 name="hp"
141 pattern="[0-9]+"
142 placeholder="numerical text">
143 </td>
144 </tr>
145 <tr>
146 <td>Foto</td>
147 <td colspan="2">:
148 <input type="file"
149 name="foto"
150 accept="image/jpeg">
151 </td>
152 </tr>
153 <tr>
154 <td colspan="2"></td>
155 <td>
156 <div align="right">
157 <input type="submit"
158 name="submit_data"
159 value="Submit"></div>
160 </td>
161 </tr>
162 </table></form>
163
164 <?php
165 echo($data_info_str);
166 ?>
167
168 </fieldset>
169
170 <br> <!-- ------------------------------------------- -->
171
172 <?php
173 $edit_info_str = "";
174
175 if (isset($_POST["submit_edit"])) {
176 $nomor = $_POST['nomor_edit'];
177 $nama = $_POST['nama_edit'];
178 $email = $_POST['email_edit'];
179 $hp = $_POST['hp_edit'];
180 $foto = isset($_FILES['foto_edit'])
181 ? $_FILES['foto_edit']["name"]
182 : "";
183
184 if ($nomor == "" && (
185 $nama == "" &&
186 $email == "" &&
187 $hp == "" &&
188 $foto == ""
189 )
190 ) {
191 $edit_info_str = "
192 <br>
193 <fieldset>
194 <legend>( i )<i>nformation</i></legend>
195 Jika ingin mengedit data kolom nomor dan data yang ingin diubah harus
terisi.
196 </fieldset>
197 ";
198 } else {
199 $database = getDatabase();
200
201 if ($database != "") {
202 $n = 0;
203 $newline = array($nama, $email, $hp, $foto);
204
205 foreach ($database as &$lines) {
206 if ($n == $nomor - 1) {
207 $lines[0] = $newline[0] == "" ? $lines[0] : $newline[0];
208 $lines[1] = $newline[1] == "" ? $lines[1] : $newline[1];
209 $lines[2] = $newline[2] == "" ? $lines[2] : $newline[2];
210 $lines[3] = $newline[3] == "" ? $lines[3] : $newline[3];
211
212 setDatabase($database);
213
214 if ($foto != "") {
215 move_uploaded_file($_FILES['foto_edit']['tmp_name'],
"images/".$nama.".jpg");
216 }
217 break;
218 }
219
220 $n++;
221 }
222 }
223 }
224 }
225 ?>
226
227 <fieldset>
228 <legend>( E )<i>dit</i></legend>
229 <form action=""
230 method="post"
231 enctype="multipart/form-data"><table>
232 <tr>
233 <td>Nomor</td>
234 <td colspan="2">:
235 <input type="text"
236 name="nomor_edit"
237 pattern="[0-9]+"
238 placeholder="numerical text">
239 </td>
240 </tr>
241 <tr>
242 <td colspan="3">
243 <hr>
244 </td>
245 </tr>
246 <tr>
247 <td>Nama</td>
248 <td colspan="2">:
249 <input type="text"
250 name="nama_edit"
251 pattern="[a-zA-Z0-9]+"
252 placeholder="alphabetical text">
253 </td>
254 </tr>
255 <tr>
256 <td>Email</td>
257 <td colspan="2">:
258 <input type="email"
259 name="email_edit"
260 placeholder="text">
261 </td>
262 </tr>
263 <tr>
264 <td>HP</td>
265 <td colspan="2">:
266 <input type="text"
267 name="hp_edit"
268 pattern="[0-9]+"
269 placeholder="numerical text">
270 </td>
271 </tr>
272 <tr>
273 <td>Foto</td>
274 <td colspan="2">:
275 <input type="file"
276 name="foto_edit"
277 accept="image/jpeg">
278 </td>
279 </tr>
280 <tr>
281 <td colspan="2"></td>
282 <td>
283 <div align="right">
284 <input type="submit"
285 name="submit_edit"
286 value="Submit"></div>
287 </td>
288 </tr>
289 </table></form>
290
291 <?php
292 echo($edit_info_str);
293 ?>
294
295 </fieldset>
296
297 <br> <!-- ------------------------------------------- -->
298
299 <?php
300 $delete_info_str = "";
301
302 if (isset($_POST["submit_hapus"])) {
303 if (isset($_POST["jenisHapus"])) {
304 if ($_POST["jenisHapus"] == "batch") {
305 $file = fopen("database.pemweb", "w");
306 fclose($file);
307 } else
308 if ($_POST["jenisHapus"] == "single") {
309 if ($_POST["query"] == "") {
310 $delete_info_str = "
311 <br>
312 <fieldset>
313 <legend>( i )<i>nformation</i></legend>
314 Jika ingin menghapus salah satu data query harus terisi.
315 </fieldset>
316 ";
317 } else {
318 $database = getDatabase();
319
320 if ($database != "") {
321 $n = 0;
322 $index = -1;
323 $select_type = $_POST["select_hapus"];
324 $query = $_POST["query"];
325
326 foreach ($database as &$lines) {
327 if ($select_type == "nama") {
328 $index = 0;
329 } else
330 if ($select_type == "email") {
331 $index = 1;
332 } else
333 if ($select_type == "hp") {
334 $index = 2;
335 } else
336 if ($select_type == "nomor") {
337 if ($n == $query - 1) {
338 $lines = "";
339 setDatabase($database);
340 break;
341 }
342
343 $n++;
344 }
345
346 if ($index >= 0) {
347 if ($lines[$index] == $query) {
348 $lines = "";
349 setDatabase($database);
350 break;
351 }
352 }
353 }
354 }
355 }
356 }
357 }
358 }
359 ?>
360
361 <fieldset>
362 <legend>( D )<i>elete</i></legend>
363 <form action="" method="post"><table>
364 <tr>
365 <td>
366 Data yang akan dihapus:
367 </td>
368 </tr>
369 <tr>
370 <td>
371 <input type="radio"
372 name="jenisHapus"
373 value="single"
374 checked
375 onclick="deleteTypeSingle()"> Satu data
376 <input type="radio"
377 name="jenisHapus"
378 value="batch"
379 onclick="deleteTypeBatch()"> Seluruh data
380 </td>
381 </tr>
382 <tr>
383 <td>Hapus berdasarkan: </td>
384 </tr>
385 <tr>
386 <td><select name="select_hapus" class="hapus_query">
387 <option value="nomor">Nomor</option>
388 <option value="nama">Nama</option>
389 <option value="email">Email</option>
390 <option value="hp">HP</option>
391 </select>
392
393 <input type="text"
394 name="query"
395 placeholder="query"
396 class="hapus_query">
397
398 <input type="submit"
399 name="submit_hapus"
400 value="Submit"></td>
401 </tr>
402 </table></form>
403
404 <?php
405 echo($delete_info_str);
406 ?>
407
408 </fieldset>
409
410 <script type="text/javascript">
411 function deleteTypeSingle() {
412 var input
413 = document
414 .getElementsByClassName("hapus_query");
415
416 for (i = 0; i < input.length; i++) {
417 input[i].disabled = false;
418 }
419 }
420
421 function deleteTypeBatch() {
422 var input
423 = document
424 .getElementsByClassName("hapus_query");
425
426 for (i = 0; i < input.length; i++) {
427 input[i].disabled = true;
428 }
429 }
430 </script>
431
432 <br> <!-- ------------------------------------------- -->
433
434 <fieldset>
435 <legend>( L )<i>ist</i></legend>
436 <table id="listtable">
437 <tr>
438 <td>No</td>
439 <td>Nama</td>
440 <td>Email</td>
441 <td>HP</td>
442 <td>Foto</td>
443 </tr>
444 <?php
445 $database = getDatabase();
446
447 if ($database == "") {
448 echo("
449 <tr>
450 <td>-</td>
451 <td>-</td>
452 <td>-</td>
453 <td>-</td>
454 <td>-</td>
455 </tr>
456 ");
457 } else {
458 $n = 1;
459 foreach ($database as $lines) {
460 echo("<tr><td>".$n."</td>");
461 $n++;
462 for ($i = 0;
463 $i < count($lines);
464 $i++) {
465 if ($i == 0 || $i == 2) {
466 echo("<td>".$lines[$i]."</td>\n");
467 } else if ($i == 1) {
echo("<td><a href=mailto:".$lines[$i]."
468 target=\"_blank\">".$lines[$i]."</a></td>\n");
469 }
else if ($i == 3) {
470 echo("<td><a href=images/".$lines[$i]."
471 target=\"_blank\">".$lines[$i]."</a></td>\n");
472 }
}
473 echo("</tr>");
474 }
475 }
476 ?>
477 </table>
478 </fieldset>
479
480 <br> <!-- ------------------------------------------- -->
481
482 <fieldset>
483 <legend>( C )<i>reated by</i></legend>
484 Abie, Fayad, Fiqih, Jemal, Kevin
485 </fieldset>
486
487 <br> <!-- ------------------------------------------- -->
488 </body>
489 </html>
490
491 <!-- -------------------------------------------------- -->
492
493 <style type="text/css">
494 body {
495 font-family: "Consolas";
496 font-size: 87.5%;
497 display: flex;
498 flex-wrap: wrap;
499 }
500
501 p {
502 text-align: center;
503 font-size: 75%;
504 }
505
506 fieldset {
507 margin: 4px;
508 }
509
510 #listtable,
511 #listtable td {
512 border-collapse: collapse;
513 border: 1px solid black;
514 padding: 8px;
515 }
516 </style>
517
Penjelasan source code:
Baris Penjelasan

1- 8 Membuat folder images dan file database jika belum ada.

10-56 Deklarasi fungsi mengambil dan menyimpan database serta mengambil database ke
memori untuk diproses pada variabel $database.

64-67 Deklarasi blok judul halaman pada body.

71-112 Mengatur tingkah laku proses blok input. Jika input ada yang tidak terisi data tidak akan
tersimpan di database, tetapi jika sebaliknya maka data akan disimpan ke database.

114-168 Deklarasi blok input.

172-225 Mengatur tingkah laku proses blok edit. Jika input nomor dan data ada yang tidak terisi
data tidak akan tersimpan di database, tetapi jika sebaliknya maka data akan disimpan ke
database.

227-295 Deklarasi blok edit.

229-359 Mengatur tingkah laku proses blok delete. Penghapusan data pada database bisa secara
keseluruhan atau salah satu data. Penghapusan salah satu data dapat dipilih dengan
nomor, nama, email atau hp.

361-408 Deklarasi blok delete.

410-430 Mengatur tingkah laku jenis penghapusan. Jika jenis penghapusan adalah satu data maka
query pencarian data akan aktif, sedangkan jika jenis penghapusan adalah keseluruhan
query pencarian data akan tidak aktif.

434-479 Deklarasi daftar data pada database.

483-486 Deklarasi blok anggota kelompok.

494-517 Deklarasi script CSS.


Screenshot:
Input data

Data tersimpan
Jika tidak sesuai akan ada pemberitahuan

Sebelum di edit
Ketika disubmit

Menambah data baru


Memilih cara menghapus data yang akan ditentukan

Memlihi nomor 1
Data terhapus

Seluruh data menghapus


Seluruh data terhapus

Anda mungkin juga menyukai