简体   繁体   中英

PHP form not processing

Hi there's a live version of the code below (taken from a tutorial) at my website below http://www.prupt.com/edit_subject.php

The page has a form that allows you to edit the subjects in the navigation bar down the left hand side. For example, you could click on "About Widget Corp" and the name "About Widget Corp" will appear in the subject text field, at which point your supposed to be able to edit it (ie change its name if you like) then click "edit subject" and it will update the new name in the navigation down the left hand side.

That's what it's supposed to do, according to the tutorial. However, if I try to edit one of the names, and then click "edit subject" it doesn't change anything. I'm guessing it's not updating the database and thereafter not outputting the correct/new data to the navigation bar

Do you see anything in the code below which would explain why it's not updating the navigation bar once I click "edit subject"?

<?php
//1.Create a database connection
$connection = mysql_connect("98.130.0.87", "username", "password");
if (!$connection) {
    die("Database connection failed: " . mysql_error());
}
$db_select = mysql_select_db("C263430_testorwallo" ,$connection);
if (!$db_select) {
    die("Database selection failed: " . mysql_error());
}

?>

<?php require_once("includes/functions.php"); ?>

<?php 
if (intval($_GET['subj']) == 0) {
    redirect_to("content.php");
}
if (isset($_POST['submit'])) {
    $errors = array();

    $required_fields = array('menu_name', 'position', 'visible');
    foreach($required_fields as $fieldname) {
    if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)) {
        $errors[] = $fieldname;
        }
}

$fields_with_lengths = array('menu_name' => 30);
foreach($fields_with_lengths as $fieldname => $maxlength ) {
    if (strlen(trim(mysql_prep($_POST[$fieldname]))) > $maxlength) {
    $errors[] = $fieldname; }
    }

    if (empty($errors)){
    //Perform Update

    $id = mysql_prep($_GET['subj']);
    $menu_name = mysql_prep($_POST['menu_name']);
    $position = mysql_prep($_POST['position']);
    $visible = mysql_prep($_POST['visible']);

    $query = "UPDATE subjects SET
              menu_name = '{$menu_name}',
              position = {$position},
              visible = {$visible}
              WHERE id = {$id}";

              $result = mysql_query($query, $connection);
              if (mysql_affected_rows() == 1) {
              //Success
              } else {
              //Failed
              }

    } else {
     // Errors occurred
    }

    } //end:  (isset($_POST['submit']))

?>
<?php find_selected_page();?>
<?php include("includes/header.php"); ?>




<table id="structure">
            <tr>
                <td id="navigation">
                <?php echo navigation($sel_subject, $sel_page); ?>
                </td>
                <td id="page">
                    <h2>Edit Subject <?php echo $sel_subject ['menu_name'];?></h2>
                    <form action="edit_subject.php?subj=<?php echo urlencode($sel_subject['id']);?>" method="post">
                    <p>Subject name: <input type="text" name="menu_name" value="<?php echo $sel_subject['menu_name']; ?>" id="menu_name" /></p>
                    <p>Position:
                    <select name="position">
                    <?php 
                    $subject_set = get_all_subjects(); 
                    $subject_count = mysql_num_rows($subject_set);
                    //$subject_count +1 because we are adding a subject
                    for($count=1; $count <= $subject_count+1; $count++) {
                    echo "<option value=\"{$count}\"";
                    if ($sel_subject['position'] == $count) {
                    echo " selected";
                    }
                    echo ">{$count}</option>";
                    }
                    ?>

                    </select>
                    </p>
                    <p>Visible:
                    <input type="radio" name="visible" value="0"<?php 
                    if ($sel_subject['visible'] == 0) { echo " checked";}
                    ?>/>No
                    &nbsp;
                    <input type="radio" name="visible" value="1"<?php
                    if ($sel_subject['visible'] == 1) { echo " checked"; }

                    ?>/> Yes
                    </p>
                    <input type="submit" name"submit" value="Edit Subject"/>
                    </form>                 
                    <br/>
                    <a href="content.php">Cancel</a>
                        </td>
            </tr>
            </table>
<?php include("includes/footer.php"); ?>
<?php
//5. Close connection
mysql_close($connection);
?>

Ok, saw the page code and it's likely that (see comment above).

<input type="submit" name"submit" value="Edit Subject"/>

You forgot the = sign, correct it to name="submit" . That's why it doesn't see the form as submitted (if $_POST['submit']...)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM