1

同じページに投稿する人がいるページがあります。データベースの INSERT が成功した後、そのページを新しいデータで更新したいと考えています。

コードを追加してみましょう。

default.php

<?php
session_start();
require("dbconfig.php");
include("head.php");

//if user is not signed in, redirect to login page
if (!isset($_SESSION['sess_user']) ) {
   header ("Location: login.php");
   exit;
 }

?>

<body>

<div id="menu">
  <?php
     include("menu.php"); //include the menu
  ?>

</div>
<div id="page_content">
   <?php 
    include ($p); //Include selection from menu.php
   ?>
</div>
?>

dbconfig.php

<?php 
DEFINE ('DB_USER', 'someuser');  
DEFINE ('DB_PASSWORD', 'somepassword');  
DEFINE ('DB_HOST', 'localhost');  
DEFINE ('DB_NAME', 'somedatabase'); 

$connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or 
die('Connection to the specified database couldn\'t be established');  
mysql_select_db(DB_NAME)  or 
die ('Specified database couldn\'t be selected');

function db_escape ($post)
{
if (is_string($post) ) {
    if (get_magic_quotes_gpc() ) {
        $post = stripslashes($post);
    }
    return mysql_real_escape_string ($post);
}
foreach ($post as $key => $val) {
    $post [$key] = db_escape($val);
}
return $post;
}
?>

ページ/都市.php

<?php 
//if not signed in correctly, redirect to login page
session_start();
if (!isset($_SESSION['sess_user']) ) {
    header ("Location: login.php");
    exit;
}
?>
<h2>Available cities</h2>
<?php
//List all available cities from database
$cities_query = "SELECT city_name FROM city_selection";
$cities_result = mysql_query($cities_query);

    while ($row = mysql_fetch_assoc($cities_result)) {
        echo $row['city_name'] . "<br />";
        }
?>
<?php
//Add new city to list
if(isset($_POST['submit'])){

    $city_name = $_POST['city_name'];
    $query="INSERT into city_selection (city_name) values ('$city_name')";
    $result = mysql_query($query);
}
 ?>
<hr>
<h2>Add new city</h2>
<form method="post" action="default.php?p=settings_cities">
Namn: <input type="text" name="city_name">
<input type="submit" name="submit" value="Add city">
</form>

このコードはきれいではないかもしれませんが、機能します。データベースに新しいレコードが正常に追加されましたが、投稿後に page/cities.php を ny レコードで更新したいと考えています。これは可能ですか?

これが私の初めてのphpページであることを付け加えさせてください。私は数冊の本しか読んだことがないので、下手なプログラマーだからといって私を非難しないでください :)

4

4 に答える 4

6

はい、挿入部分を選択部分の上に移動するだけです。

ページ/都市.php

<?php 
//if not signed in correctly, redirect to login page
session_start();
if (!isset($_SESSION['sess_user']) ) {
    header ("Location: login.php");
    exit;
}
//Add new city to list
if(isset($_POST['submit'])){

    $city_name = $_POST['city_name'];
    $query="INSERT into city_selection (city_name) values ('$city_name')";
    $result = mysql_query($query);
}
?>
<h2>Available cities</h2>
<?php
//List all available cities from database
$cities_query = "SELECT city_name FROM city_selection";
$cities_result = mysql_query($cities_query);

    while ($row = mysql_fetch_assoc($cities_result)) {
        echo $row['city_name'] . "<br />";
        }
?>

<hr>
<h2>Add new city</h2>
<form method="post" action="default.php?p=settings_cities">
Namn: <input type="text" name="city_name">
<input type="submit" name="submit" value="Add city">
</form>
于 2012-05-18T08:38:57.047 に答える
1

You can also refresh a page with javascript :

<script type="text/javascript">
    document.location = "URL"
</script>
于 2012-05-18T08:44:32.857 に答える
1

Post-Redirect-Getパターンを読み、レコードを保存した後にブラウザーを同じページにリダイレクトします。リダイレクトは、PHP のheader関数を介して行う必要があります。

コードが機能するようになったので、誰かが F5 キーを押してリフレッシュすると、同じ値が再び挿入されます... PRG はこの問題を回避します。

于 2012-05-18T08:52:25.447 に答える
0

するだけ

if(isset($_POST['submit'])){
  //yada yada

選択を行う前に

于 2012-05-18T08:40:41.913 に答える