簡體   English   中英

在頁面之間傳遞數據?

[英]Passing data between pages?

我忘記了如何正確地做到這一點。 我基本上想要一個PHP頁面將數據發送到數據庫(submitscore.php),另一個從數據庫中獲取它們並將它們顯示在表格中(showscore.php):

submitscore.php:

if(isset($_POST['score']) && isset($_POST['playername']))
{
    $scorefromflash = mysql_real_escape_string($_POST['score']);
    $namefromflash = mysql_real_escape_string($_POST['playername']);


    $con = mysql_connect("servername","username","password");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("testdb", $con);

    $sql = "INSERT INTO test (Name, Score) VALUES ('$namefromflash', '$scorefromflash')";

    header("./showscore.php");

    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }

    mysql_close($con); 
}
?>

showscore.php

<?php

$con = mysql_connect("server","username","password");
if (!$con)
{
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("testdb", $con);

echo ("Name: ".$namefromflash);
echo ("Score: ".$scorefromflash);

$result = mysql_query("SELECT * FROM test ORDER BY Score DESC");

echo "<table border='1'>
<tr>
<th>Name</th>
<th>Score</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Name'] . "</td>";
  echo "<td>" . $row['Score'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

if (!mysql_query($sql,$con))
{
  die('Error: ' . mysql_error());
}

mysql_close($con); 

?>

我問,因為這樣做會給出錯誤Notice: Undefined index: scoreNotice: Undefined index: playername submitscore.php頁面上的submitscore.php

它沒有將任何記錄插入數據庫,也沒有顯示表格。

謝謝。

你的codes容易受到sql injection你應該在將值插入數據庫之前使用mysql_real_escape_string函數。

你不需要

$scorefromflash = $_POST['score'];
$namefromflash = $_POST['playername'];

在節目分數頁面...

這是代碼,對我有用:

submitscore.php:

<?php
if(isset($_REQUEST['score']) && isset($_REQUEST['playername']))
{
    $con = mysql_connect("host","user","password");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("database", $con);    
    $scorefromflash = mysql_real_escape_string($_REQUEST['score']);
    $namefromflash = mysql_real_escape_string($_REQUEST['playername']);

    $sql = "INSERT INTO test (Name, Score)
           VALUES ('$namefromflash', '$scorefromflash')";

    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }

    mysql_close($con);

    header("Location: showscore.php");
}
?>

showscore.php

<?php
$con = mysql_connect("host","user","password");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("database", $con);

$result = mysql_query("SELECT * FROM test ORDER BY Score DESC");
if (!$result)
{
    die('Error: ' . mysql_error());
}

echo "<table border='1'>
<tr>
<th>Name</th>
<th>Score</th>
</tr>";

while($row = mysql_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['Name'] . "</td>";
    echo "<td>" . $row['Score'] . "</td>";
    echo "</tr>";
}
echo "</table>";

mysql_close($con);
?>

插入數據后,它會將您重定向到頁面,其中顯示包含所有數據的表格。 更改數據庫憑據。 這是我用於測試的GET請求:

http://domain/submitscore.php?score=1&playername=2

我想你正試圖設置一個標題,用$_POST['score'] and $_POST['playername']將頁面重新加載到showscore.php

在submitscore.php中試試這個:

header("location: ./showscore.php?player=$namefromflash&score=$scorefromflash");

並在showscore.php內使用:

$scorefromflash = $_REQUEST['score'];
$namefromflash = $_REQUEST['playername'];

第一:你的代碼不是保存。 使用類似mysql_escape_string東西

這不是一個真正的錯誤。 它(就像它說的那樣)是一個通知。 您不使用isset函數來檢查是否設置了變量。 這個變量有可能沒有值,因為之前的頁面沒有發送它。

如果你使用而不是

$scorefromflash = $_POST['score'];

用這個:

$scorefromflash = isset($_POST['score'])?$_POST['score']:null

然后這個通知就會消失。 還有其他$_POST

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM