In this activity you'll take the user's input from the form and use it to update information in a database.
form.php
<?php include('database.php'); include('header.php'); include('menu.php'); // get list of heroes $query = "SELECT * FROM heroes"; $args = array(); $hrslt = $pdo->prepare($query); $hrslt->execute($args); // get list of movies $query = "SELECT movie FROM appearances GROUP BY movie"; $args = array(); $mrslt = $pdo->prepare($query); $mrslt->execute($args); ?> <main> <form name="add_hero" action="process_form.php" method="post"> <fieldset> <legend>Add Hero</legend> <ul> <li> <label>Alias:</label> <input type="text" name="alias" size="30" maxlength="50" hint="Iron Man"> </li> <li> <label>Identity:</label> <input type="text" name="identity" size="30" maxlength="50" hint="Tony Stark"> </li> <li> <label>Side:</label> <ul> <li><input type="radio" name="side" value="Hero" checked> Hero</li> <li><input type="radio" name="side" value="Villain"> Villain</li> </ul> </li> <li> <label>First Appearance:</label> <input type="number" name="year"> </li> <li> <label>Source of Power:</label> <select name="power"> <option value="skill">Skill</option> <option value="bio">Biological</option> <option value="magic">Magic</option> <option value="tech">Technology</option> <option value="mutant">Mutant</option> </select> </li> </ul> <input type="submit" name="submit" value="Add Hero"> </fieldset> </form> <form name="add_appearances" action="process_form.php" method="post"> <fieldset> <legend>Add Appearances</legend> <ul> <li> <label>Hero</label> <select name="hero"> <?php // display list of heroes while($row = $hrslt->fetch()) { ?> <option value="<?php echo $row['alias']; ?>"><?php echo $row['alias']; ?></option> <?php } ?> </select> </li> <li> <label>Movie</label> <ul> <?php // display list of movies while($row = $mrslt->fetch()) { ?> <li><input type="checkbox" name="movie[]" value="<?php echo $row['movie']; ?>" id=""> <?php echo $row['movie']; ?></li> <?php } ?> <li><input type="checkbox" name="movie[]" value="new" id=""> <input type="text" name="new_movie"></li> </ul> </li> </ul> <input type="submit" name="submit" value="Add Appearance"> </fieldset> </form> </main> <?php include('footer.php'); ?>
process_form.php
<?php include('header.php'); include('menu.php'); include('database.php'); // check which form switch ($_POST['submit']) { case 'Add Hero': $query = "INSERT INTO `heroes` (`alias`, `identity`, `hero_villain`, `first_appeared`, `power`) VALUES (?,?,?,?,?)"; $args = array($_POST['alias'], $_POST['identity'], $_POST['side'], $_POST['year'], $_POST['power']); $rslt = $pdo->prepare($query); if ($rslt->execute($args)) { $message = "{$_POST['alias']} was inserted successfully."; } else { $message = "There was a problem inserting {$_POST['alias']}"; } break; case 'Add Appearance': $args = array(); foreach($_POST['movie'] as $movie) { if ($movie == 'new') { array_push($args, $_POST['hero'], $_POST['new_movie']); } else { error_log($movie); // check if it exists already $mquery = "SELECT * FROM appearances WHERE alias=? AND movie=?"; $margs = array($_POST['hero'], $movie); $rslt = $pdo->prepare($mquery); $rslt->execute($margs); if (!$row = $rslt->fetch()) { array_push($args, $_POST['hero'], $movie); } } } error_log(print_r($args, 1)); $movies = count($args)/2; if ($movies > 0) { $values = str_repeat('(?,?), ', $movies-1) . '(?,?)'; $query = "INSERT INTO appearances (alias, movie) VALUES $values"; error_log("MURRAY: $query " . print_r($args, 1)); $rslt = $pdo->prepare($query); if ($rslt->execute($args)) { $message = "$movies appearances were inserted successfully."; } else { $message = "There was a problem inserting $movies appearances."; } } else { $checked = count($_POST['movie']); $message = "All $checked appearances are already in the database."; } break; default: break; } ?> <main> <p><?php echo $message; ?></p> </main> <?php include('footer.php'); ?>
<input type="submit" name="submit" value="Add / Update Hero">
// check which form switch ($_POST['submit']) { case 'Add / Update Hero':
UPDATE `heroes` SET `hero_villain` = 'Villain', `power` = 'Technology' WHERE `heroes`.`alias` = 'Captain America'
// check whether hero already exists $hquery = "SELECT * FROM heroes WHERE alias=?"; $hargs = array($_POST['alias']); $hrslt = $pdo->prepare($hquery); $hrslt->execute($hargs); if($row = $hrslt->fetch()) { // the hero exists } else { }
else
block.case 'Add Hero': // check whether hero already exists $hquery = "SELECT * FROM heroes WHERE alias=?"; $hargs = array($_POST['alias']); $hrslt = $pdo->prepare($hquery); $hrslt->execute($hargs); if($row = $hrslt->fetch()) { // the hero exists } else { $query = "INSERT INTO `heroes` (`alias`, `identity`, `hero_villain`, `first_appeared`, `power`) VALUES (?,?,?,?,?)"; $args = array($_POST['alias'], $_POST['identity'], $_POST['side'], $_POST['year'], $_POST['power']); $rslt = $pdo->prepare($query); if ($rslt->execute($args)) { $message = "{$_POST['alias']} was inserted successfully."; } else { $message = "There was a problem inserting {$_POST['alias']}"; } } break;
$query = "UPDATE heroes SET identity=?, hero_villain=?, first_appeared=?, power=? WHERE alias=?"; $args = array($_POST['identity'], $_POST['side'], $_POST['year'], $_POST['power'], $_POST['alias']); $rslt = $pdo->prepare($query); $rslt->execute($args);
if($rslt->execute($args)) { $message = "{$_POST['alias']} was updated successfully."; } else { $message = "There was a problem updating {$_POST['alias']}."; }