PHP 第一次单击按钮时页面未加载生成的值?
PHP page not loading generated value on first button click?
我有一个页面 php 应用程序生成一个 8 位数字,用户输入一个值,页面生成另一个值,两个值都被插入到 mysql db 中并显示生成的值单击一个按钮的输入框。正在插入,但生成的值第一次没有显示在输入框中,我也试过会话它也没有帮助。
这是我的 php 代码,
<?php
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>
<body>
<div>
<?php
if(isset($_POST['luckyButton']) && $_POST['myLuckyNumber'] != ""){
//sleep(20);
$myLuckyNum = $_POST['myLuckyNumber'];
$resultmyLuckyNum = mysql_query("SELECT * FROM lucky where luckyNum='$myLuckyNum'") or die(mysql_error());
if (mysql_num_rows($resultmyLuckyNum) > 0) {
while ($rowmyLuckyNum = mysql_fetch_array($resultmyLuckyNum)) {
$generatedNumber = $rowmyLuckyNum["generatedNum"];
}
}else{
$gen = getGen();
$resultGenNum = mysql_query("INSERT INTO lucky (slno, luckyNum, generatedNum) VALUES ( NULL, '$myLuckyNum', '$gen')");
if (mysql_num_rows($resultGenNum) > 0) {
$generatedNumber = $gen;
}
}
}
?>
<form action="" method="post">
<input type="text"class="inputs" name="myLuckyNumber" onClick="this.select();" placeholder="Enter You Lucky Number" value="<?php echo $myLuckyNum; ?>" />
<input type="submit" class="css_button" name="luckyButton" value="Check"/>
</form>
</div>
<br><br><br>
<?php
if($generatedNumber != ""){
echo '<input type="text" name="myLuckyNumber" onClick="this.select();" id="generatedNumber" readonly="true" value="' . $generatedNumber . '" />';
}
echo '<p id="errText"> ' . $err . ' </p>';
function random_string($length) {
$key = '';
$keys = array_merge(range(0, 9));
for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}
return $key;
}
function getGen(){
$gen1 = random_string(8);
$result = mysql_query("SELECT * FROM lucky where generatedNum='$gen1'") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_array($result)) {
if($row["generatedNum"] == $gen1){
getGen();
}
}
}else{
//echo $gen1;
return($gen1);
}
}
?>
</body>
</html>
我的桌子,.
CREATE TABLE `lucky` (
`slno` int(11) NOT NULL,
`luckyNum` text NOT NULL,
`generatedNum` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
而不是使用 if ( $generatedNumber != "" )
,也许你应该尝试 if ( isset( $generatedNumber ) )
。
如果 $generatedNumber
不存在(如果脚本中没有任何内容 post 则它不存在),那么比较将失败(事实上,您可能会得到一个PHP 错误)。
当然,这会导致我们遇到下一个问题 - 如果脚本中没有任何内容 post,您就不会生成数字。所以当然,如果你不生成一个数字,就没有数字可以显示。因此,您应该以始终生成随机数的方式构建代码 - 无论是否收到 post 变量。
您使用 mysql_num_rows
的方式有误。当您 运行 插入查询时,它不会 return 行,它 return 是真还是假(布尔值)。当它 return 为真时,您将得到 1
(如 $resultGenNum
)。
改用这个:
if ($resultGenNum === 1){
$generatedNumber = $gen;
}
您的代码的问题是 mysql_num_rows
将 return 0
或 1
,像
一样使用它
if($resultGenNum === 1){
$generatedNumber = $gen;
}
我有一个页面 php 应用程序生成一个 8 位数字,用户输入一个值,页面生成另一个值,两个值都被插入到 mysql db 中并显示生成的值单击一个按钮的输入框。正在插入,但生成的值第一次没有显示在输入框中,我也试过会话它也没有帮助。
这是我的 php 代码,
<?php
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>
<body>
<div>
<?php
if(isset($_POST['luckyButton']) && $_POST['myLuckyNumber'] != ""){
//sleep(20);
$myLuckyNum = $_POST['myLuckyNumber'];
$resultmyLuckyNum = mysql_query("SELECT * FROM lucky where luckyNum='$myLuckyNum'") or die(mysql_error());
if (mysql_num_rows($resultmyLuckyNum) > 0) {
while ($rowmyLuckyNum = mysql_fetch_array($resultmyLuckyNum)) {
$generatedNumber = $rowmyLuckyNum["generatedNum"];
}
}else{
$gen = getGen();
$resultGenNum = mysql_query("INSERT INTO lucky (slno, luckyNum, generatedNum) VALUES ( NULL, '$myLuckyNum', '$gen')");
if (mysql_num_rows($resultGenNum) > 0) {
$generatedNumber = $gen;
}
}
}
?>
<form action="" method="post">
<input type="text"class="inputs" name="myLuckyNumber" onClick="this.select();" placeholder="Enter You Lucky Number" value="<?php echo $myLuckyNum; ?>" />
<input type="submit" class="css_button" name="luckyButton" value="Check"/>
</form>
</div>
<br><br><br>
<?php
if($generatedNumber != ""){
echo '<input type="text" name="myLuckyNumber" onClick="this.select();" id="generatedNumber" readonly="true" value="' . $generatedNumber . '" />';
}
echo '<p id="errText"> ' . $err . ' </p>';
function random_string($length) {
$key = '';
$keys = array_merge(range(0, 9));
for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}
return $key;
}
function getGen(){
$gen1 = random_string(8);
$result = mysql_query("SELECT * FROM lucky where generatedNum='$gen1'") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_array($result)) {
if($row["generatedNum"] == $gen1){
getGen();
}
}
}else{
//echo $gen1;
return($gen1);
}
}
?>
</body>
</html>
我的桌子,.
CREATE TABLE `lucky` (
`slno` int(11) NOT NULL,
`luckyNum` text NOT NULL,
`generatedNum` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
而不是使用 if ( $generatedNumber != "" )
,也许你应该尝试 if ( isset( $generatedNumber ) )
。
如果 $generatedNumber
不存在(如果脚本中没有任何内容 post 则它不存在),那么比较将失败(事实上,您可能会得到一个PHP 错误)。
当然,这会导致我们遇到下一个问题 - 如果脚本中没有任何内容 post,您就不会生成数字。所以当然,如果你不生成一个数字,就没有数字可以显示。因此,您应该以始终生成随机数的方式构建代码 - 无论是否收到 post 变量。
您使用 mysql_num_rows
的方式有误。当您 运行 插入查询时,它不会 return 行,它 return 是真还是假(布尔值)。当它 return 为真时,您将得到 1
(如 $resultGenNum
)。
改用这个:
if ($resultGenNum === 1){
$generatedNumber = $gen;
}
您的代码的问题是 mysql_num_rows
将 return 0
或 1
,像
if($resultGenNum === 1){
$generatedNumber = $gen;
}