Четене на текстов файл и сравняване в база данни

  • Автор Автор Hous
  • Начална дата Начална дата

Hous

Registered
Имам една база данни със имена на хора и сега ми дадоха един текстов файл като трябва да ги "отсея" и трябва да го направя автоматизирано, тоест чета ред файл от текстовия файл и го сравнявам с базата данни, и съответноз а да ги филтрирам ще сложа едно exists/ пред реда на съществуващия ред в текстовия файл

Намерих код които да чете редовете но нещо не се получава:
Код:
$handle = @fopen("faila.txt", "r"); 
$values='';
while (!feof($handle)) // Loop til end of file.
{
$buffer = fgets($handle, 4096); // Read a line.
//mysql check goes here
//if mysql returns existing record write "exists/" at the begining of that same line
}
1.не мога да разбера кое точно държи текущия ред за да го изпратя за проверка в mysql заявка...
2.как да изпиша в началото на съществуващия ред думата exists\
за да мога после да си ги отделя?

Някой да помогне?
 
1. $buffer ти е реда текст.

2. Можеш да го направиш с http://bg2.php.net/manual/en/function.file.php, което чете файла като array. Използвай FILE_IGNORE_NEW_LINES :)
 
това става лесно и аз съм имал подобни проблеми...

Ето моето решение:

1. отваряш си файла както си намериш за добре ..
Код:
$file = file_get_contents('file.txt');
2. правиш 1 арей със всички имена(в случай че са на нов ред всяко, ако не са - ползвай Preg_match )
- Сега тука може да ползваш няколко вариянта .. да си поиграеш малко и да добавиш след всяко име някаква накролена черта или символ по който ще ги разделяш с еьплоде ако не стане с реда отдоло ..
Код:
$array = explode("\n", $file);

.. или по следния начин:
Код:
$array = preg_split ('/$\r|\n?^/m', $file);
// variqnt 2:
 // $array = preg_split ('/$\r?^/m', $file);

// variqnt 3:
   // $array = preg_split ('/$\n?^/m', $file);

ии след като имаш арея .. много лесно може да сравниш всичко .. ред по ред

Код:
 for each($array AS $name)
 {
    $r = mysql_numrows(mysql_qury("SELECT `name` FROM `tablica` WHERE `name`='$name'"));
   if($r == 1)
     { 
          /// i sega ako ima suvpadenie ..  zapazwash vuv now fail
              $fo =  fopen("suvpadeniq.txt", "a+");
                fwrite($fo, $name. "\n");
                 fclose($fo);
     }
 }

ии това беше .. не е трудно .. отсяването става бързо .. :) Дано ти помогне тоя пример :)
 

Back
Горе