2015-01-05 7 views
0

У меня есть одностраничное приложение php для создания 8-значного числа, пользователь вводит значение, а страница генерирует другое значение, оба значения вставляются в mysql db и отображают сгенерированное значение в поле ввода одним нажатием кнопки. Вставка происходит, но сгенерированное значение не отображается в ящике ввода в первый раз, я также пробовал сеанс, не помогая тоже.PHP-страница не загружается сгенерированное значение при первом нажатии кнопки?

вот мой 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; 
+0

использования, если (Исеть ($ generatedNumber) && $ generatedNumber! = "") {echo ' ';} –

ответ

1

Проблема с кодом, что mysql_num_rows будет возвращать 0 или 1, использовать его как

if($resultGenNum === 1){ 
     $generatedNumber = $gen; 
} 
0

Вместо использования if ($generatedNumber != ""), возможно, вы должны попробовать что-то вроде if (isset($generatedNumber)).

Если $generatedNumber не существует (это не так, если в сценарий ничего не было отправлено), сравнение не будет выполнено (на самом деле вы, вероятно, получаете ошибку PHP).

Конечно, это приводит нас к следующей проблеме - если в сценарий ничего не отправлено, вы не генерируете число. Так что, конечно, если вы не сгенерируете число, число не отображается. Таким образом, вы должны структурировать свой код таким образом, чтобы случайное число всегда создавалось независимо от того, была ли получена переменная post или нет.

1

Вы используете mysql_num_rows неправильным способом. Когда вы запускаете запрос на вставку, он не возвращает строки, он возвращает true или false (Boolean). Когда он вернется, вы получите 1 (как $resultGenNum). использование вместо этого:

if ($resultGenNum === 1){ 
     $generatedNumber = $gen; 
} 
+0

Спасибо, брату .. :) его работа сейчас. –

+0

Спасибо @Ravan – Manish

Смежные вопросы