Проблем php explode, файл

niker

Registered
Как мога да взимам за всеки нов ред думата,
да речем имам:
users.txt
Код:
name1
name2
name3
name4
...
От тука изкам да ми взима само едно, и да го сравнявам с някакъв
селект от датабазата да речем.
Май с foreach...
Ма незнам точно как ще стане
 
$file = "file.txt"; // текстовия файл, от който ще вземеш думите
$end_file = explode("\n", file_get_contents($file));
$query_result = .....//резултата от от заявката към БД
foreach($end_file as $current){
if($current==$query_result){
//do something
} else {
//no matches found
}
Общо взето това е!МОже да се донагласи според нуждите ти :wink:
 
$file = "file.txt"; // текстовия файл, от който ще вземеш думите

$file = file( "file.txt" );

Каква е разликата ?
 
С file() е даже по-добрия вариант, тъй като ще избегнеш употребата на explode(), тъй като file() директно ти създава масив
 
emagi каза:
С file() е даже по-добрия вариант, тъй като ще избегнеш употребата на explode(), тъй като file() директно ти създава масив
Може ли да го напишеш ?
 
$file = file("file.txt"); // текстовия файл, от който ще вземеш думите
$query_result = .....//резултата от от заявката към БД
foreach($file as $current){
if($current==$query_result){
//do something
} else {
//no matches found
}
 
niker каза:
Някакви други идеи ? :idea: :idea:
Ммм, този селект какво по точно връща.
Какво точно искаш да сравниш?

Ако селекта връща даден стринг и просто искаш да провериш дали той съществува в даден ред от файла, то това е лесно:

Код:
<?php
$file = file("file.txt"); // текстовия файл, от който ще вземеш думите
$query_result = .....//резултата от от заявката към БД

if (in_array($query_result, $file))
{
    // ако селекта съществува в даден ред от файла
}
else
{
    // ако не съществува
}
?>
 
Код:
$s=preg_replace('#\r?\n#','',implode(',',file('FileName.txt')));
$rez=mysql_query("SELECT user FROM users WHERE FIND_IN_SET(user,'{$s}')",$db_link) or die('DB Error');
Код:
$query="SELECT EXISTS(SELECT user FROM TableName WHERE FIND_IN_SET({$user},'{$s}')) BLA";
скача като тигър :)
 
Правя един логин,
избира акаунт от датабазата и ако тоя акаунт го има в файла
да го редиректва към админ страницата, ако не към панела
и слага сесии

function login() {
if (isset($_POST["login"])){
$user = $_POST['User'];
$password = $_POST['Password'];
$check = mysql_query(num_rows("SELECT * FROM Users WHERE name='$user' AND password ='$password'"));
if ($check > 0) {
if (tuka iskam da napraq 4ekvaneto ot faila) {
$_SESSION['user'] = $user;
$_SESSION['admin'] = $user;
$_SESSION['pass'] = $pasword;
header('Location: 'admin.php');
}
else {
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pasword;
header('Location: 'user.php');
}
}
}
}
 
Код:
if ($check > 0) {
if (mysql_result(mysql_query("SELECT EXISTS(SELECT name FROM users WHERE FIND_IN_SET(name,'".preg_replace('#\r?\n#','',implode(',',file('FileName.txt')))."'))",$db_link)),0)) {
:)
 
koko5 каза:
Код:
if ($check > 0) {
if (mysql_result(mysql_query("SELECT EXISTS(SELECT name FROM users WHERE FIND_IN_SET(name,'".preg_replace('#\r?\n#','',implode(',',file('FileName.txt')))."'))",$db_link)),0)) {
:)
Така:
name би трябвало да ми е променливата нали ?

$db_link какво е ?

Ти май работиш с някви db access функции,

Дай ми само кода да изкарва от файла квото трябва, аз ще си го налгася :?:
 
В проверката най-добре е да се използва и intval:

Код:
f ($check > 0) {
if (intval(mysql_result(mysql_query("SELECT EXISTS(SELECT name FROM users WHERE FIND_IN_SET(name,'".preg_replace('#\r?\n#','',implode(',',file('FileName.txt')))."'))",$db_link)),0))) {
name e името на колоната, където се записва username b DB -> сменяш я с твоята.
$db_link=mysql_connect("host","user","pass");
mysql_result
mysql_query
FileName.txt смятам е ясно.
Edit: ... SELECT name FROM users ...
name e колоната
users e TableName
 
Ako искаш да сравняваш с конкретен $username, то тогава го добавяш във where:
Код:
if ($check > 0) {
if (intval(mysql_result(mysql_query("SELECT EXISTS(SELECT name FROM users WHERE name='".$username."' AND FIND_IN_SET(name,'".preg_replace('#\r?\n#','',implode(',',file('FileName.txt')))."'))",$db_link)),0))) {
където name е колоната (table column).
 

Back
Горе