|
|
|
| подскажите плиз
как из файла вытащить нужную инфу допустим по id
вот запись в файле
1|www.site.ru|название|
2|xxxx|xxxxxx|
3|xxxx|xxxxxx
|
где 1,2,3 - номер $id
www.site.ru- $url
название - $text | |
|
|
|
|
|
|
|
для: gurza
(31.08.2005 в 19:47)
| | Для начала следует прочитать файл при помощи функции file(), которая вернёт массив, каждый элемент которого будет содержать одну строку файла. Затем каждую строку следует разбить функцией explode() по симовлу | и сформировать новый массив, в качестве ключа которого будет id
<?php
$arr = file("text.txt");
// В цикле обходим массив $arr
froeach($arr as $line)
{
$temp = explode('|',$line);
// Формируем новый массив
$arr[$temp[0]]['url'] = $temp[1];
$arr[$temp[0]]['name'] = $temp[2];
}
// Обращаемся к 4 строке файла
echo $arr[4]['name'];
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(31.08.2005 в 23:24)
| | а как вытащить все что соответствует $id1 | |
|
|
|
|
|
|
|
для: gurza
(01.09.2005 в 22:12)
| | $id1 и $id - это одно и тоже? | |
|
|
|
|
|
|
|
для: cheops
(01.09.2005 в 22:13)
| | извиняюсь $id = 1
просто пытаюсь использовать файлы вместо БД
с БД знаю как делать запросы а с файлами столкнулся первый раз
вот мне надо вывести листинг по $id | |
|
|
|
|
|
|
|
для: gurza
(01.09.2005 в 23:10)
| | Если объём файла не большой, то можно воспользоваться старым кодом
<?php
$id = 1;
$arr = file("text.txt");
// В цикле обходим массив $arr
froeach($arr as $line)
{
$temp = explode('|',$line);
// Формируем новый массив
$arr[$temp[0]]['url'] = $temp[1];
$arr[$temp[0]]['name'] = $temp[2];
}
// Обращаемся к $id строке файла
echo $arr[$id]['name'];
?>
|
Если полностью сканировать весь файл, ради одного значения слишком накладно, то можно остановить цикл, как только будет найдено значение
<?php
$id = 1;
$arr = file("text.txt");
// В цикле обходим массив $arr
froeach($arr as $line)
{
$temp = explode('|',$line);
if($temp[0] == $id)
{
echo $temp[1]."<br>";
echo $temp[2]."<br>";
break; // Выходим из цикла
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.09.2005 в 12:34)
| | спасибо
токо не froeach а foreach | |
|
|
|
|
|
|
|
для: gurza
(02.09.2005 в 14:28)
| | подскажите плиз
как мне подсчитать общее кол-во записей в файле с одинаковым $id | |
|
|
|
|
|
|
|
для: gurza
(06.09.2005 в 23:50)
| | Не очень понятно, какой вопрос имеется ввиду:
1) В файле несколько записей с одинаковым id - нужно подсчтить их число?
2) Для каждого id существует несколько файлов - нужно подсчитать их число? | |
|
|
|
|
|
|
|
для: cheops
(07.09.2005 в 00:46)
| | 1) В файле несколько записей с одинаковым id - нужно подсчтить их число?
вот это надо | |
|
|
|
|
|
|
|
для: gurza
(07.09.2005 в 00:52)
| | Это можно осуществить при помощи следующего скрипта
<?php
$id = 1;
$text = file_get_contents("text.txt");
$text = preg_match_all("#$id\|#i", $text, $out);
echo count($out[0]);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.09.2005 в 02:36)
| | большое спасибо | |
|
|
|
|
|
|
|
для: gurza
(07.09.2005 в 14:02)
| |
<?
$arr = file("txt/news.txt");
// В цикле обходим массив $arr
foreach($arr as $line)
{
$temp = explode('|',$line);
$id = $temp[0];
$text = file_get_contents("txt/coment.txt");
$text = preg_match_all("#$id\|#i", $text, $out);
$count = count($out[0]);
echo "<table width='96%' border=0>";
echo "<tr><td><center><b>$temp[1]</b></center><br>$temp[2]<br><br><div align='right'><a href='index.php?id=coment&idn=$temp[0]'>Комментарии</a> ($count)</td></tr>";
echo "</table>";
}
?>
|
этот скрипт выводит новости из файла но последняя новость выводится
последней ,а надо выводить её первой.
как это можно сделать???? | |
|
|
|
|
|
|
|
для: gurza
(07.09.2005 в 14:37)
| | Воспользуйтесь вместо цикла foreach циклом for, идущий в обратном порядке, предварительно посчитав кол-во новостей, они как я понимаю равны кол-ву массивов. | |
|
|
|
|
|
|
|
для: Football
(07.09.2005 в 14:58)
| | а примерчик плиз | |
|
|
|
|
|
|
|
для: gurza
(07.09.2005 в 15:29)
| | Т.е. используйте что-то вроде
<?
$arr = file("txt/news.txt");
// В цикле обходим массив $arr
for($i = count($arr) - 1; $i >= 0; $i++)
{
$temp = explode('|',$arr[0]);
$id = $temp[0];
$text = file_get_contents("txt/coment.txt");
$text = preg_match_all("#$id\|#i", $text, $out);
$count = count($out[0]);
echo "<table width='96%' border=0>";
echo "<tr><td><center><b>$temp[1]</b></center><br>$temp[2]<br><br><div align='right'><a href='index.php?id=coment&idn=$temp[0]'>Комментарии</a> ($count)</td></tr>";
echo "</table>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.09.2005 в 20:22)
| | этот скрипт подвешивает комп
когда открываю страницу загрузка ЦПУ 100% | |
|
|
|
|
|
|
|
для: gurza
(07.09.2005 в 20:45)
| | А ну да так и должно быть при бесконечном цикле... исправьте пожалуйста строку
<?php
for($i = count($arr) - 1; $i >= 0; $i++)
?>
|
следующим образом
<?php
for($i = count($arr) - 1; $i >= 0; $i--)
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.09.2005 в 02:09)
| |
$arr = file("txt/news.txt");
// В цикле обходим массив $arr
for($i = count($arr) - 1; $i >= 0; $i--)
{
$temp = explode('|',$arr[0]);
$id = $temp[0];
$text = file_get_contents("txt/coment.txt");
$text = preg_match_all("#$id\|#i", $text, $out);
$count = count($out[0]);
echo "<table width='96%' border=0>";
echo "<tr><td><center><b>$temp[1]</b></center><br>$temp[2]<br><br><div align='right'><a href='index.php?id=coment&idn=$temp[0]'>Комментарии</a> ($count)</td></tr>";
echo "</table>";
}
|
теперь выводит первую новость 2 раза | |
|
|
|
|
|
|
|
для: gurza
(08.09.2005 в 12:58)
| | Замените строку
<?php
$temp = explode('|',$arr[0]);
?>
|
на
<?php
$temp = explode('|',$arr[$i]);
?>
|
| |
|
|
|