【问题标题】:PHP combining two URL query string using two GET methodsPHP 使用两个 GET 方法组合两个 URL 查询字符串
【发布时间】:2012-10-03 14:46:40
【问题描述】:

我有两种带有 GET 方法的表单。当我提交第一个表单时,我得到了这个 URL

http://127.0.0.1/astronomy/student_enrollment.php?class_name_data=1&classNameGetDetails=

当我提交也有 GET 方法的第二个表单时。我的网址变成了这个

http://127.0.0.1/astronomy/student_enrollment.php?class_name_for_enrollment=Planet&sy_for_enrollment=2012-2013&sy_for_enrollment=45&number_of_student_enrolled=&time_schedule_student=Monday+to+Friday+8%3A00-9%3A00&generateFields=Generate

第一个查询字符串被删除并替换为第二个查询字符串

我希望我的网址看起来像这样

http://127.0.0.1/astronomy/student_enrollment.php?class_name_data=1&classNameGetDetails=&class_name_for_enrollment=Planet&sy_for_enrollment=2012-2013&sy_for_enrollment=45&number_of_student_enrolled=&time_schedule_student=Monday+to+Friday+8%3A00-9%3A00&generateFields=Generate

这两个查询字符串将与& 分隔符组合,而不是?。我该怎么做?

这是我的代码

<div class="enrollmentContent">
    <div class="classNameChoices">
    <label>Choose Class Name</label>
    <form action="" method="get">

        <select name="class_name_data">
            <?php
            $table = "classes";
            $data = array(
            'teacher_id' => $session_id
            );
            $class_name_query = show_filtered_rows($table, $data);
            while($rows = mysql_fetch_array($class_name_query)){
                $id = $rows['id'];
                $class_name = $rows['class_name'];
            ?>
            <option value="<?php echo $id; ?>"><?php echo $class_name; ?></option>
            <?php
            }
            ?>
        </select>
        <input type="submit" name="classNameGetDetails" value="" />
    </form>
    </div>
    <?php
        if(isset($_GET['classNameGetDetails'])){
            $data2 = array(
            'id' => $_GET['class_name_data'],
            'teacher_id' => $session_id
            );
            $class_name_data_query = show_filtered_rows($table, $data2);
            $rows_class = mysql_fetch_array($class_name_data_query);
    ?>
    <div class="classDetailsByClassName">
    <form action="" method="get">
        <input type="hidden" value="<?php echo $rows_class['class_name']; ?>" name="class_name_for_enrollment" />
        <input type="hidden" value="<?php echo $rows_class['school_year_from']."-".$rows_class['school_year_to']; ?>" name="sy_for_enrollment" />
        <input type="hidden" value="<?php echo $rows_class['enrollees']; ?>" name="sy_for_enrollment" />
        <label>Class Name <span><?php echo $rows_class['class_name']; ?></span></label>
        <label>SY <span><?php echo $rows_class['school_year_from']."-".$rows_class['school_year_to']; ?></span></label>
        <label>Maximum No. of Enrollees <span><?php echo $rows_class['enrollees']; ?></span></label>
        <div class="registerDetails">
            <div>
                <label>Number of students to enroll</label>
                <div><input type="number" name="number_of_student_enrolled" value=""/></div>
            </div>
            <div>
                <label>Schedule</label>
                <div>
                    <select name='time_schedule_student'>
                        <option value="Monday to Friday 8:00-9:00">Monday to Friday 8:00-9:00</option>
                        <option value="Monday to Friday 10:00-11:00">Monday to Friday 10:00-11:00</option>
                        <option value="Monday to Friday 1:00-2:00">Monday to Friday 1:00-2:00</option>
                        <option value="Monday to Friday 2:00-3:00">Monday to Friday 2:00-3:00</option>
                        <option value="Monday to Friday 9:00-10:00">Monday to Friday 9:00-10:00</option>
                        <option value="Monday to Friday 3:00-4:00">Monday to Friday 3:00-4:00</option>
                    </select>
                </div>
            </div>
            <div><input type="submit" name="generateFields" value="Generate" /></div>
        </div>
    </form>
    </div>
    <div class="enrollmentFields">
        <?php
        if(isset($_GET['generateFields'])){
            echo $_GET['class_name_for_enrollment'];
        }
        ?>

    </div>
    <?php
    }
    ?>
</div>

和我的功能

function show_filtered_rows($table, $data){
    foreach($data as $fields=>$field_data){
        $show_data[] = "`".$fields."` = '".$field_data."'";
    }
    return mysql_query("SELECT * FROM `$table` WHERE ".implode(" AND ",$show_data));
}

【问题讨论】:

    标签: php url get query-string


    【解决方案1】:

    只需将第一个表单的值作为隐藏值添加到第二个表单中。

    <input type="hidden" name="class_name_data" value="<?php echo $_GET['class_name_data']; ?>" />
    <input type="hidden" name="classNameGetDetails" value="<?php echo $_GET['classNameGetDetails']; ?>" />
    

    这是添加了上述 2 行的完整代码。 PHP 函数没有变化。

    <div class="enrollmentContent">
        <div class="classNameChoices">
        <label>Choose Class Name</label>
        <form action="" method="get">
    
            <select name="class_name_data">
                <?php
                $table = "classes";
                $data = array(
                'teacher_id' => $session_id
                );
                $class_name_query = show_filtered_rows($table, $data);
                while($rows = mysql_fetch_array($class_name_query)){
                    $id = $rows['id'];
                    $class_name = $rows['class_name'];
                ?>
                <option value="<?php echo $id; ?>"><?php echo $class_name; ?></option>
                <?php
                }
                ?>
            </select>
            <input type="submit" name="classNameGetDetails" value="" />
        </form>
        </div>
        <?php
            if(isset($_GET['classNameGetDetails'])){
                $data2 = array(
                'id' => $_GET['class_name_data'],
                'teacher_id' => $session_id
                );
                $class_name_data_query = show_filtered_rows($table, $data2);
                $rows_class = mysql_fetch_array($class_name_data_query);
        ?>
        <div class="classDetailsByClassName">
        <form action="" method="get">
            <input type="hidden" name="class_name_data" value="<?php echo $_GET['class_name_data']; ?>" />
            <input type="hidden" name="classNameGetDetails" value="<?php echo $_GET['classNameGetDetails']; ?>" />
            <input type="hidden" value="<?php echo $rows_class['class_name']; ?>" name="class_name_for_enrollment" />
            <input type="hidden" value="<?php echo $rows_class['school_year_from']."-".$rows_class['school_year_to']; ?>" name="sy_for_enrollment" />
            <input type="hidden" value="<?php echo $rows_class['enrollees']; ?>" name="sy_for_enrollment" />
            <label>Class Name <span><?php echo $rows_class['class_name']; ?></span></label>
            <label>SY <span><?php echo $rows_class['school_year_from']."-".$rows_class['school_year_to']; ?></span></label>
            <label>Maximum No. of Enrollees <span><?php echo $rows_class['enrollees']; ?></span></label>
            <div class="registerDetails">
                <div>
                    <label>Number of students to enroll</label>
                    <div><input type="number" name="number_of_student_enrolled" value=""/></div>
                </div>
                <div>
                    <label>Schedule</label>
                    <div>
                        <select name='time_schedule_student'>
                            <option value="Monday to Friday 8:00-9:00">Monday to Friday 8:00-9:00</option>
                            <option value="Monday to Friday 10:00-11:00">Monday to Friday 10:00-11:00</option>
                            <option value="Monday to Friday 1:00-2:00">Monday to Friday 1:00-2:00</option>
                            <option value="Monday to Friday 2:00-3:00">Monday to Friday 2:00-3:00</option>
                            <option value="Monday to Friday 9:00-10:00">Monday to Friday 9:00-10:00</option>
                            <option value="Monday to Friday 3:00-4:00">Monday to Friday 3:00-4:00</option>
                        </select>
                    </div>
                </div>
                <div><input type="submit" name="generateFields" value="Generate" /></div>
            </div>
        </form>
        </div>
        <div class="enrollmentFields">
            <?php
            if(isset($_GET['generateFields'])){
                echo $_GET['class_name_for_enrollment'];
            }
            ?>
    
        </div>
        <?php
        }
        ?>
    </div>
    

    【讨论】:

      【解决方案2】:

      您需要为隐藏输入设置值。

      <input type="hidden" name="class_name_data" value="<?php echo $_GET['class_name_data']" />
      

      并输入您的第二个表格。

      【讨论】:

        猜你喜欢
        • 2020-04-06
        • 1970-01-01
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 2017-06-29
        相关资源
        最近更新 更多