PHP表格,如果声明

时间:2017-03-19 15:05:47

标签: php

寻找任何帮助,我对编码非常陌生并且正在努力寻找帮助。我正在尝试编写一个程序,要求用户输入10位数的ISBN。我需要检查它的所有数字并且是十位数。然后我需要通过将每个数字乘以其末尾的位置来确保其有效的ISBN,得到所有的总数并除以11.我试图一步一步地做,即输入指令,测试,输入下一个当我知道这是最好的方法时,我被告知。我没有得到阵列的数学测试,因为我不知道如何去做,但是,即使我输入十位数,我也被提示输入十个数字。< / p>

<!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>

1 个答案:

答案 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)

您的代码将如下所示(修复了代码中的一些错误):

if (isset($_POST['submit'])) {
    if(empty($_POST['isbn'])){
        echo "Please enter a ten digit number";
    } elseif (strlen($_POST['isbn']) !== 10) {
        echo "Please enter exactly ten digits";
    } elseif (!ctype_digit($_POST['isbn'])) {
        echo "You have nonnumerical characters in your ISBN!";
    } elseif (!isIsbn10($_POST['isbn'])) {
        echo "ISBN is invalid!";
    } else {
        echo "ISBN is VALID!";
    }
}