2017-03-19 99 views
-1

尋找任何幫助,我對編碼非常陌生,並且正在苦苦掙扎。我正試圖編寫一個程序,要求用戶輸入10位數的ISBN。我需要檢查它的所有數字和十位數字。那麼我需要確保它的一個有效的ISBN通過將每個數字乘以它的位置從最後,獲得所有的總和除11。我試圖做到一步一步,即輸入指令,測試,然後輸入,測試等,因爲我知道這是最好的方法。我還沒有達到陣列的數學測試,因爲我不知道如何去做,但是,即使我輸入十位數字,我也會被提示輸入十位數字。PHP表單,如果語句

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <h4>Enter a ten digit number</h4> 
     <?php 
      if(empty($_POST['isbn'])){ 
       echo "Please enter a ten digit number"; 
      } elseif (strlen($_POST['submit'] !==10)){ 
       echo "Please enter exactly ten digits"; 
      } else { 
       echo "You have entered the correct number of digits"; 
       $array = str_split($_POST['submit']); 
      } 
     ?> 
     <form action="Qu2.php" method="post"> 
     ISBN: <input type="number" name="isbn"> 
     <input type="submit" name="submit" value="Go"> 
     </form> 

    </body> 
</html> 
+0

你輸入的名字是'isbn',不'submit'。你需要關閉'strlen'。國際標準圖書通常也是用連字符連接,所以你可能需要10-13個字符。 – chris85

+0

'elseif(strlen($ _ POST ['submit']!== 10)'你在這裏使用了錯誤的數組,檢查isbn,而不是提交 –

+0

並且在錯誤的數組上分裂 –

回答

0

您可以使用ctype_digit()檢查字符串中的所有字符是否都是數字。

要檢查給定的字符串是否爲有效的ISBN-10,可以使用以下函數。

function isIsbn10($isbn) { 
    $check = 0; 

    for ($i = 0; $i < 10; $i++) { 
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ loops through all numbers in the "ISBN" 
     $check += (int)$isbn[$i] * (10 - $i); 
//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ multiplies the number with the position from the last character 
    } 

    return (0 === ($check % 11)) ? true : false; 
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ checks if total is divisible by 11 
} 

var_dump(isIsbn10("0198526636")); // bool(true) 

您的代碼看起來像這樣(修正了一些錯誤,在你的代碼):

​​