PHP форма не обрабатывается - PullRequest
0 голосов
/ 21 февраля 2011

Привет, есть живая версия кода ниже (взято из учебника) на моем сайте ниже http://www.prupt.com/edit_subject.php

На странице есть форма, позволяющая редактировать объекты на панели навигации внизу слева. Например, вы можете нажать «About Widget Corp», и в текстовом поле темы появится название «About Widget Corp», после чего вы должны иметь возможность редактировать его (т.е. изменить его имя, если хотите), затем нажать "изменить тему", и он будет обновлять новое имя в навигации вниз по левой стороне.

Это то, что он должен делать, согласно учебнику. Однако, если я пытаюсь отредактировать одно из имен, а затем нажимаю «изменить тему», это ничего не меняет. Я предполагаю, что это не обновляет базу данных и после этого не выводит правильные / новые данные на панель навигации

Видите ли вы что-нибудь в приведенном ниже коде, которое объясняет, почему не обновляется панель навигации после того, как я нажимаю "изменить тему"?

<?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);
?>

1 Ответ

5 голосов
/ 21 февраля 2011

Хорошо, видел код страницы, и вполне вероятно, что это (см. Комментарий выше).

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

Вы забыли знак =, исправьте его до name="submit". Вот почему он не видит форму как отправленную (если $ _POST ['submit'] ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...