Создайте значение и просмотрите на другой странице PHP - PullRequest
0 голосов
/ 08 апреля 2020

Я получаю значения из динамической формы c (create. php) на эту страницу (gen. php). то, что я хочу сделать, это генерировать значения $ gresult для заданного количества суммы, и если значение уже в базе данных, генерировать снова и просмотреть сгенерированные значения в create. php.

процесс - это получение $ binnumber из базы данных в соответствии с раскрывающимся списком формы> создание случайного числа $ randomnumber> объединение двух значений $ binandrand> запуск его через luhn al go в luhn. php> получение проверки значение $ gresult. объединить $ binandrand и $ gresult> отображать значения при создании. php (в таблице).

Я понимаю, что для этого мне нужно добавить dowhile l oop, но я застрял на том, как его добавить. Было бы здорово помочь в этом.

 <?php
    include 'server.php';


    if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST) && isset($_POST['action'])) {
    $binnumber = mysqli_real_escape_string($connection, $_REQUEST['modelname']);
    $randomnumber = mt_rand(100000,999999);
    $binandrand = $binnumber.$randomnumber;


        include_once 'Luhn.php';
        $luhn = new Luhn();
        if ($_POST['action'] == "calculate" && isset($_POST['gnumber'])) {
            $gnumber = $binandrand;
            $gresult = $luhn->calculate($gnumber);

        }  else {
                $vresult = "Number is invalid";
            }



    echo "<br/>";
    echo "test";
    echo "<br/>";
    echo $binnumber;
    echo "<br/>";
    echo $randomnumber;
    echo "<br/>";
    echo $binandrand;
    echo "<br/>";
    echo $gresult;
    }
    ?>

ниже - функция Luhn (). который я нашел на inte rnet

<?php
/**
 * Luhn algorithm (a.k.a. modulus 10) is a simple formula used to validate variety of identification numbers.
 * It is not intended to be a cyrptographically secure hash function, it was designed to protect against accidental errors.
 * See http://en.wikipedia.org/wiki/Luhn_algorithm
 * 
 * @author Rolands Kusiņš
 * @version 0.2
 * @license GPL
 */

class Luhn {
    private $sumTable = array(array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), array(0, 2, 4, 6, 8, 1, 3, 5, 7, 9));

    /**
     * Calculate check digit according to Luhn's algorithm
     * New method (suggested by H.Johnson), see http://www.phpclasses.org/discuss/package/8471/thread/1/
     * 
     * @param string $number
     * @return integer
     */
    public function calculate($number)
    {
        $length = strlen($number);
        $sum = 0;
        $flip = 1;
        // Sum digits (last one is check digit, which is not in parameter)
        for($i = $length-1; $i >= 0; --$i) $sum += $this->sumTable[$flip++ & 0x1][$number[$i]];
        // Multiply by 9
        $sum *= 9;
        // Last digit of sum is check digit
        return (int)substr($sum, -1, 1);
    }

    /**
     * Calculate check digit according to Luhn's algorithm
     * This is an old method, tests show that this is little bit slower than new one
     * 
     * @param string $number
     * @return integer
     */
    public function calculateOld($number) {
        $length = strlen($number);
        $sum = 0;
        $p = $length % 2;
        // Sum digits, where every second digit from right is doubled (last one is check digit, which is not in parameter)
        for($i = $length-1; $i >= 0; --$i) {
            $digit = $number[$i];
            // Every second digit is doubled
            if ($i % 2 != $p) {
                $digit *= 2;
                // If doubled value is 10 or more (for example 13), then add to sum each digit (i.e. 1 and 3)
                if($digit > 9){
                    $sum += $digit[0];
                    $sum += $digit[1];
                } else{
                    $sum += $digit;
                }
            } else{
                $sum += $digit;
            }
        }
        // Multiply by 9
        $sum *= 9;
        // Last one is check digit
        return (int)substr($sum, -1, 1);
    }

    /**
     * Validate number against check digit
     * 
     * @param string $number
     * @param integer $digit
     * @return boolean
     */
    public function validate($number,$digit){
        $calculated = $this->calculate($number);
        if($digit == $calculated) return true;
        else return false;
    }
}
?>

----- Обновление -----

Мне удается создать некоторое время l oop, но теперь мне нужно получить сгенерированные значения для создания. php в html таблице.

<?php
include 'server.php';
//Get all brand data
    $query = $connection->query("SELECT * FROM brand ORDER BY brandname ASC");
    $query1 = $connection->query("select * from model");

    //Count total number of rows
    $rowCount = $query->num_rows;

if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST) && isset($_POST['action'])) {
$binnumber = mysqli_real_escape_string($connection, $_REQUEST['modelname']);
$noemi = $_REQUEST['nofoemei'];
//$randomnumber = mt_rand(100000,999999);
//$binandrand = $binnumber.$randomnumber;
//$imeinumber = $binandrand.$gresult;


    include_once 'Luhn.php';



    if ($_POST['action'] == "calculate" && isset($_POST['gnumber'])) {

        //=======================
        $x1 =0;
        //0 1       3
    while ($x1 < $noemi) {
  //echo "The number is:================= $x1 <br>";
 $randomnumber = mt_rand(10,99);
         $binandrand = $binnumber.$randomnumber;
         $gnumber = $binandrand;
         $luhn = new Luhn();
         $gresult = $luhn->calculate($gnumber);
        $tt = $binandrand.$gresult;

        $imei_check_query = "SELECT * FROM imeinumbers WHERE imeinumber='$tt' LIMIT 1";
        $result = mysqli_query($connection, $imei_check_query);

        if ($result->num_rows > 0){
         echo "  result   <br>";


        }else{

         echo $tt;
         echo "<br/>";
         ++$x1;
        }

            }

        //==================
        /*
        for ($x = 0; $x < $noemi; $x++) {

         $randomnumber = mt_rand(10,99);
         $binandrand = $binnumber.$randomnumber;
         $gnumber = $binandrand;
         $luhn = new Luhn();
         $gresult = $luhn->calculate($gnumber);
        $tt = $binandrand.$gresult;

        $imei_check_query = "SELECT * FROM imeinumbers WHERE imeinumber='$tt' LIMIT 1";
        $result = mysqli_query($connection, $imei_check_query);

        if ($result->num_rows > 0){
         echo "  result   <br>";

          //++$x1;
        }else{
         echo "NO result   <br>";
        }

         //$binandrandX = $binnumber.$randomnumber;
          echo "The number is+++++++++++++++++++++++ $x <br>";
        }
        */

        //$imei_avail = mysqli_fetch_assoc($result);
            //if($imei_avail){
            //  if($imei_avail['imeinumber']===$imeinumber){
            //      
            //  }
            //}

    }  else {
            $vresult = "Number is invalid";
        }



echo "<br/>";
echo "tttttttt".$noemi;
echo "<br/>";
echo $binnumber;
echo "<br/>";
echo $randomnumber;
echo "<br/>";
echo $binandrand;
echo "<br/>";
echo $gresult;
echo "<br/>";
//echo $imeinumber;
echo "<br/>";
//echo $nofoemei;
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...