Source Code for /public/05-accepting-input/fruits-and-filters.php
<?php
function get_fruits() {
$jpgs = glob('../img/fruit/*.jpg');
$webps = glob('../img/fruit/*.webp');
$files = array_merge( $jpgs, $webps );
sort( $files );
return $files;
}
function get_filters() {
return [
'filter: grayscale(100%)',
'filter: blur(2px)',
'filter: brightness(1.5)',
'filter: contrast(1.5)',
'filter: hue-rotate(90deg)',
'filter: invert(1)',
'filter: sepia(1)',
'transform: rotateZ(90deg);',
'transform: skewX(-15deg);',
];
}
function user_requested_a_fruit_and_filter() {
if( ! isset( $_POST['fruit_id'] ) ) return false;
if( ! isset( $_POST['filter_id'] ) ) return false;
return true;
}
function show_a_filtered_fruit() {
$fruit_id = intval( $_POST['fruit_id'] );
$filter_id = intval( $_POST['filter_id'] );
$fruit = get_fruits()[ $fruit_id ];
$filter = get_filters()[ $filter_id ];
?>
<img src="<?php echo $fruit; ?>"
width="200"
height="200"
style="border: 1px solid black; <?php echo $filter; ?>;">
<?php
}
?>
<h1>Fruity Filters</h1>
<?php if( user_requested_a_fruit_and_filter() ) { ?>
<h2>
Here's your filtered fruit:
</p>
<?php show_a_filtered_fruit(); ?>
<?php } ?>
<h2>
<?php if( user_requested_a_fruit_and_filter() ) { ?>
Filter another fruit!
<?php } else { ?>
Filter a fruit!
<?php } ?>
</h2>
<form method="post" action="fruits-and-filters.php">
<p>
<label for="fruit">Fruit:</label>
<select id="fruit" name="fruit_id">
<?php foreach( get_fruits() as $id => $fruit ) { ?>
<option value="<?php echo $id; ?>">
<?php echo basename( $fruit ); ?>
</option>
<?php } ?>
</select>
</p>
<p>
<label for="filter">Filter:</label>
<select id="filter" name="filter_id">
<?php foreach( get_filters() as $id => $filter ) { ?>
<option value="<?php echo $id; ?>">
<?php echo $filter; ?>
</option>
<?php } ?>
</select>
</p>
<button type="submit">Submit</button>
</form>