2016-09-27 4 views
1

Я изучаю PHP и начинаю небольшой проект с некоторой обработкой файлов, проверкой базы данных на номера (чтобы это было просто). Я имею в виду, когда вы вводите число и нажмите кнопку отправки, php будет искать текстовый файл, чтобы получить имя по номеру.Ищите, если количество цифр, число которых имеет значение> 1

Текстовый файл выглядит следующим образом:
1 Sandra
2 Piet
3 Фрэнсис
и т.д ...

Код:

<?php 
    // Type your code here 
    $val = $row = NULL; 


    if (isset($_POST["submit"])) { 
     $myFile = fopen("testData.txt","r"); 
     $number = $_POST["input"]; 
     $cntNumber = strlen($number); 



     while (!feof($myFile)){ 
      $val = fgetc($myFile); 

      if (is_numeric($val)) { 
       if ($cntNumber > 1) { 
        // Point where I Don't know what to do 
       } elseif ($val == $number) { 
        $row = fgets($myFile); 
       } 

      } 
     } 
    } 

    ?> 

    <div style="width: 232px; height: 100px; border: 1px solid gray; margin-bottom: 5px;"> 
     <?php 
      echo $row . "<br>";  
     ?> 
    </div> 
    <form action="index.php" method="post"> 
     <input name="input" placeholder="Number" type="text"> 
     <input name="submit" value="Search" type="submit"> 
    </form> 

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

Заранее спасибо

+0

Действительно, вы должны использовать базу данных. –

+0

Надеюсь, я скоро приеду, но пока я буду придерживаться текстового файла – FlyingUnderpants

ответ

2

Я не знаю, хотите ли вы использовать f -file функции, но проще решение:

if (isset($_POST["submit"])) { 
    $myFile = file("testData.txt"); 
    // print_r $myFile and see that this is array of lines 

    $number = $_POST["input"]; 
    // iterate over your lines: 
    foreach ($myFile as $line) { 
     // as each line contains two values divided by a space, 
     // you can explode the line into two parts 
     $parts = explode(' ', $line); 
     // print_r($parts) to see result 

     // next check first part which is number: 
     if ($parts[0] == $number) { 
      echo 'Found!'; 
      break; // exit loop as your value is found 
     } 
    } 
} 

Если вы хотите использовать f -file функции, то код может :

$fh = fopen("testData.txt", "r"); 
while(!feof($fh)) { 
    $str = fgets($fh, 1024); 
    $parts = explode(' ', $str); 
    // print_r($parts) to see result 
    if ($parts[0] == $number) { 
     echo 'Found!' . $str; 
     break; // exit loop as your value is found 
    } 
} 

Но я настоятельно рекомендую использовать базы данных в качестве хранилищ.

+0

Спасибо alot @u_mulder! Я получаю то, что вы говорите, и я надеюсь, что скоро доберусь до баз данных. Но одно в то время;) – FlyingUnderpants

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