Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вывести по алфавиту содержимое файла
 
 автор: Alex_Sidneff   (25.09.2006 в 22:48)   письмо автору
 
 

Есть фаил:

<?php
#|AVTORITET|ce9e8dc8a|guest
#|Rus|6f2268bd1|guest
#|111|b59c67bf1|guest
#|rolex|b59c67bf1|guest
#|sef0491|3c1f1428c|guest
#|Roksi|fbade9e36|guest
#|vadim|1225483c9|guest
?>

Вывожу его через скрипт:

<?
$url="data/users/".$name."_cnf.php";
$file=fopen($url, "r");
$data=fread($file, filesize($url));
fclose($file);
$data_massiv=explode("\n",$data);
for($i=0;$i<sizeof($data_massiv);$i++)
{
if(substr($data_massiv[$i], 0, 1)=="#")
{
$temp=explode("|",$data_massiv[$i]);
if($temp[1]=="refresh")
{
$temp[1]="Обновление главного окна (в секундах)";
}
if($temp[1]=="dr")
{
$temp[1]="День Рождения";
}
if($temp[1]=="enter")
{
$temp[1]="Подпись при входе";
}
if($temp[1]=="info")
{
$temp[1]="Дополнительная информация";
}
if($temp[1]=="ignors")
{
$temp[1]="Список игноров";
}
if($temp[1]=="sex")
{
$temp[1]="Пол чатовца";
}
if($temp[1]=="bg")
{
$temp[1]="Подкрашивать сообщения";
}
if($temp[2]=="1")
{
$temp[2]="Да";
}
if($temp[2]=="0")
{
$temp[2]="Нет";
}
if($temp[2]=="m")
{
$temp[2]="Он";
}
if($temp[2]=="w")
{
$temp[2]="Она";
}
if($temp[2]=="u")
{
$temp[2]="Нечто!";
}
if($temp[2]=="")
{
$temp[2]="<font color=#A8B6F7><b>неизвесно</b></font>";
}
if($temp[1]=="foto")
{
$temp[2]="<font color=#A8B6F7><b>Фото!!!</b></font>";
}
echo "<LI><font size=3 ><b>".$temp[1]."</b></font> &nbsp; &nbsp; <b>-</b>&nbsp;&nbsp;<font size=3

color=#336699><b>".$temp[2]."</b></font>";
}
}
?><br>
</td></tr></table>
</body></html>

Получается примерно следующее:

alex_ml_lt имеет статус Гость
qpblpa имеет статус Гость
Ddevil имеет статус Гость
Marfusha имеет статус Гость
Anton2006 имеет статус Гость
belaya_sova имеет статус Гость
AVTORITET имеет статус Гость
Rus имеет статус Гость
111 имеет статус Гость
rolex имеет статус Гость
sef0491 имеет статус Гость
Roksi имеет статус Гость
vadim имеет статус Гость

Вопрос:
как этот фаил (список) выводить по алфавиту?
Если кто знает, подскажите плизз....

   
 
 автор: kasmanaft   (25.09.2006 в 23:12)   письмо автору
 
   для: Alex_Sidneff   (25.09.2006 в 22:48)
 

Можно сделать примерно следующие

$url="data/users/".$name."_cnf.php";
$data_massiv=file($url);
sort($data_massiv);
for($i=0;$i<sizeof($data_massiv);$i++)

   
 
 автор: Alex_Sidneff   (26.09.2006 в 14:01)   письмо автору
 
   для: kasmanaft   (25.09.2006 в 23:12)
 

Блин, опять накосячил... не тот скрипт написал...
Вот правельный!
<?
$url="data/chat_db.php";
$file=fopen($url, "r");
$data=fread($file, filesize($url));
fclose($file);
$data_massiv=explode("\n",$data);
for($i=0;$i<sizeof($data_massiv);$i++)
{
if(substr($data_massiv[$i], 0, 1)=="#")
{
$temp=explode("|",$data_massiv[$i]);
if($temp[3]=="guest")
{
$temp[3]="<font color=#17A818><b>Гость</b></font>";
}
if($temp[3]=="master")
{
$temp[3]="<font color=#CF0F18><b>Админ</b></font>";
}
echo "<LI><font size=3 color=#336699><b><a href=infa.php?name=$temp[1]>".$temp[1]."</a></b></font> имеет статус ".$temp[3]." </ol>";
}
}
?>

   
 
 автор: Alex_Sidneff   (26.09.2006 в 14:08)   письмо автору
 
   для: Alex_Sidneff   (26.09.2006 в 14:01)
 

Но он не выводит по алфавиту....

   
 
 автор: Trianon   (26.09.2006 в 14:13)   письмо автору
 
   для: Alex_Sidneff   (26.09.2006 в 14:01)
 


.....
$data_massiv=explode("\n",$data);
sort($data_massiv);
for($i=0;$i<sizeof($data_massiv);$i++)
.....

   
 
 автор: Alex_Sidneff   (26.09.2006 в 14:36)   письмо автору
 
   для: Trianon   (26.09.2006 в 14:13)
 

Вот спасибо!!! Работает! =)

   
 
 автор: Alex_Sidneff   (26.09.2006 в 14:40)   письмо автору
 
   для: Alex_Sidneff   (26.09.2006 в 14:36)
 

Есть ещё вопрос! А как можно в этом файле, спомощю этого скрипта приделать к каждому имени кнопку с удалением этой строки?
Но, Плюс к этому удаляется не только строка, но ещё и 2 файла?
Это вообще возможно?

   
 
 автор: kasmanaft   (26.09.2006 в 16:21)   письмо автору
 
   для: Alex_Sidneff   (26.09.2006 в 14:40)
 

Неа, не возможно :)
Как удалить конкретную строку из файла?
Удалить файл можно при помощи unlink

   
 
 автор: Alex_Sidneff   (26.09.2006 в 20:24)   письмо автору
 
   для: kasmanaft   (26.09.2006 в 16:21)
 

А если я не знаю порядкового номера строки в файле? А знаю только имя до "палки" - "|"?
Пример:
#|vadim|1225483c9|guest
тоесть знаю только "vadim"

   
 
 автор: kasmanaft   (26.09.2006 в 20:46)   письмо автору
 
   для: Alex_Sidneff   (26.09.2006 в 20:24)
 

Примерно так:

<?
  $name2del 
'Rus';
  
$filename 'file.txt';
  
$file file($filename);
  foreach (
$file as $key => $str)
  {
      list(,
$name) = explode('|'$str);
      if (
$name == $name2del)
          unset(
$file[$key]);
  }
  
$fd fopen($filename"w");
  if(
$fd)
  {
    
fwrite($fd,implode("",$file));
    
fclose($fd);
  }
?>

   
 
 автор: Alex_Sidneff   (26.09.2006 в 21:33)   письмо автору
 
   для: kasmanaft   (26.09.2006 в 20:46)
 

Я извеняюсь... но можно по подробнее...
Дапустим есть список имён и их статус:

alex_ml_lt имеет статус Гость
qpblpa имеет статус Гость
Ddevil имеет статус Гость
Marfusha имеет статус Гость
Anton2006 имеет статус Гость
belaya_sova имеет статус Гость
AVTORITET имеет статус Гость
Rus имеет статус Гость
111 имеет статус Гость
rolex имеет статус Гость
sef0491 имеет статус Гость
Roksi имеет статус Гость
vadim имеет статус Гость

в нутри он выглядит так:

<?php
#|AVTORITET|ce9e8dc8a|guest
#|Rus|6f2268bd1|guest
#|111|b59c67bf1|guest
#|rolex|b59c67bf1|guest
#|sef0491|3c1f1428c|guest
#|Roksi|fbade9e36|guest
#|vadim|1225483c9|guest
?>

Дак как можно после каждой выведенной строки поставить кнопку удалить, и это имя и статус удалится?

   
 
 автор: kasmanaft   (27.09.2006 в 00:12)   письмо автору
 
   для: Alex_Sidneff   (26.09.2006 в 21:33)
 

Имена можно сделать ссылками (или рядом кнопок наставить - не важно ...), через которые методом GET передавать имя, которое нужно удалить из файла ..
примерно так:

<a href='index.php?name=Rus'>Rus</a>

И немного изменить скрипт

<? 
//  $name2del = preg_replace("#[^\w ]#", "", $_GET['name']); 
  
$name2del $_GET['name'];
  
$filename 'file.txt'
  
$file file($filename); 
  * * * * *
?>

Если в имени могут быть только цифры и буквы и пробелы, то лучше его обработать рег. выражением ...

   
 
 автор: Alex_Sidneff   (27.09.2006 в 20:15)   письмо автору
 
   для: kasmanaft   (27.09.2006 в 00:12)
 

Я не понял... а можно весь скрипт? или это сложновато?....

   
 
 автор: kasmanaft   (27.09.2006 в 22:59)   письмо автору
 
   для: Alex_Sidneff   (27.09.2006 в 20:15)
 

Воть ...

<?
$url
="data/chat_db.php";
if (!empty(
$_GET['name']))
{
   
//$name2del = preg_replace("#[^\w ]#", "", $_GET['name']);
   
$name2del $_GET['name'];
   
$file file($url);
   foreach (
$file as $key => $str)
   {
       @list(,
$name) = explode('|'$str);
       if (
$name == $name2del)
           unset(
$file[$key]);
   }
   
$fd fopen($url"w");
   if(
$fd)
   {
     
fwrite($fd,implode("",$file));
     
fclose($fd);
   }
}

if (
filesize($url) > 0)
{
   
$data_massiv=file($url);
   
sort($data_massiv);
   for(
$i=0;$i<sizeof($data_massiv);$i++)
   {
       if(
substr($data_massiv[$i], 01)=="#")
       {
            
$temp=explode("|",$data_massiv[$i]);
            if(
trim($temp[3])=="guest")
            {
                 
$temp[3]="<font color=#17A818><b>Гость</b></font>";
            }
            if(
trim($temp[3])=="master")
            {
                 
$temp[3]="<font color=#CF0F18><b>Админ</b></font>";
            }
            echo 
"<LI><font size=3 color=#336699><b><a href="
.$_SERVER['PHP_SELF']."?name=$temp[1]>".$temp[1]."</a></b></font> имеет статус "
.$temp[3]." <input type=button onClick=document.location.href='ds.php?name=$temp[1]'
 value='Убить 
$temp[1]'></ol>";
       }
   }
}
?>

   
 
 автор: Alex_Sidneff   (28.09.2006 в 02:04)   письмо автору
 
   для: kasmanaft   (27.09.2006 в 22:59)
 

Вот здесь есть маленький ньюансик! Удаляет, когда нажимешь на имя, а не на кнопку убить....

   
 
 автор: kasmanaft   (28.09.2006 в 07:53)   письмо автору
 
   для: Alex_Sidneff   (28.09.2006 в 02:04)
 

ой, сорри :)) ... в торопях не тот "href" изменил ...

echo "<LI><font size=3 color=#336699><b><a href=infa.php?name=$temp[1]>"
.$temp[1]."</a></b></font> имеет статус ".$temp[3].
" <input type=button onClick=document.location.href='"
.$_SERVER['PHP_SELF']."?name=$temp[1]' value='Убить $temp[1]'></ol>";

   
 
 автор: Alex_Sidneff   (28.09.2006 в 21:18)   письмо автору
 
   для: kasmanaft   (28.09.2006 в 07:53)
 

А разве нельзя впихнуть в этот скрипт вот эту функцию к примеру(Для удаления не только строки, но и файла)?:
<?php

foreach ( glob ( "data/users/$name*cnf.*" ) as $filename )
{
$files=filesize($filename);
$filed=date ( "d-m-Y H:i:s" , filemtime ( $filename ));
echo ".$filename.";
echo "<br>".$files."<br>" ;
echo "<br>". $filed . "\n" ;
echo "
<form enctype='multipart/form-data' action='delet.php' method='post'>
<input type='hidden' name='filename' value='$filename'>
<input name='delpict' type='submit' value='Удалить'>
</form>
" ;
}
?>
Если это возможно, то как? Я же видел скрипты, которые удаляли не только строчку в файле...

   
 
 автор: kasmanaft   (28.09.2006 в 21:55)   письмо автору
 
   для: Alex_Sidneff   (28.09.2006 в 21:18)
 

Такую громоздкую функцию использовать не зачем, если нужно просто удалить файл (имя которого известно). Для этого можно использовать ф-ю unlink() ... которой в скобках указать имя файла для удаления (в кавычках)

(а для удаления строки из файла ее никак не применить)

   
 
 автор: Alex_Sidneff   (28.09.2006 в 22:01)   письмо автору
 
   для: kasmanaft   (28.09.2006 в 21:55)
 

Дак а тогда к одной кнопке как то можно приделать? Ведь точно можно!!!

   
 
 автор: Alex_Sidneff   (28.09.2006 в 22:05)   письмо автору
 
   для: Alex_Sidneff   (28.09.2006 в 22:01)
 

Понимаете, при удалении так сказать юзера, нужно удалить ещё 2 файла... вот например



<?php

foreach ( glob ( "data/user/$name*.*" ) as $filename )
{
$files=filesize($filename);
$filed=date ( "d-m-Y H:i:s" , filemtime ( $filename ));
echo ".$filename.";
echo "<b>Размер в байтах:</b><br>".$files."" ;
echo "" . $filed . "\n" ;
echo "
<form enctype='multipart/form-data' action='delet.php' method='post'>
<input type='hidden' name='filename' value='$filename'>
<input name='delpict' type='submit' value='Удалить'>
</form>
" ;
}
?>
как это можно связать? просто очень хочется....

   
 
 автор: kasmanaft   (28.09.2006 в 22:06)   письмо автору
 
   для: Alex_Sidneff   (28.09.2006 в 22:01)
 

Тогда в качестве адреса в кнопке следует передать еще и название файла (имя, номер .. или чего там еще)
document.location.href='".$_SERVER['PHP_SELF']."?name=$temp[1]&filename=XXXX'
Потом в скрипте удалять файл $_GET['filename'] (только нужно бы содержимое переменной проверить, чтобы взломщик не мог удалить того, чего не следовало бы, просто подставив туда имя другого файла)

   
 
 автор: Alex_Sidneff   (28.09.2006 в 22:13)   письмо автору
 
   для: kasmanaft   (28.09.2006 в 22:06)
 

Хм... действительно.... но можно этот фаил и скриптом опять же защитить...
Но дело не в этом...
Я в этом деле совсем новичёк! И я не совсем ещё доконца понимаю в этом! Так сказать учусь сразу на деле! Хотелось бы понять как это прикрепить...
Вот вы поставили кнопку "Убить $name" а как к этой кнопке приделать функцию удаления? Вы можете подсказать?

   
 
 автор: kasmanaft   (28.09.2006 в 22:31)   письмо автору
 
   для: Alex_Sidneff   (28.09.2006 в 22:13)
 

А чего удалять нужно? В смысле как определять имя файла, которого нужно удалить? Оно как-то привязано к имени пользователя, которого "убиваем" ?

   
 
 автор: Alex_Sidneff   (28.09.2006 в 22:48)   письмо автору
 
   для: kasmanaft   (28.09.2006 в 22:31)
 

Так точно! Имя определяется Вот в такой строке:

foreach ( glob ( "data/user/$name*.*" ) as $filename )
тоесть имя файла начинается как $name и продолжает его " * "

   
 
 автор: Alex_Sidneff   (28.09.2006 в 22:57)   письмо автору
 
   для: Alex_Sidneff   (28.09.2006 в 22:48)
 

<?
$url="data/chat_d.php";
if (!empty($_GET['name']))
{
//$name2del = preg_replace("#[^\w ]#", "", $_GET['name']);
$name2del = $_GET['name'];
$file = file($url);
foreach ($file as $key => $str)
{
@list(,$name) = explode('|', $str);
if ($name == $name2del)
unset($file[$key]);
}
$fd = fopen($url, "w");
if($fd)
{
fwrite($fd,implode("",$file));
fclose($fd);
}
}

if (filesize($url) > 0)
{
$data_massiv=file($url);
sort($data_massiv);
for($i=0;$i<sizeof($data_massiv);$i++)
{
if(substr($data_massiv[$i], 0, 1)=="#")
{
$temp=explode("|",$data_massiv[$i]);
if(trim($temp[3])=="guest")
{
$temp[3]="<font color=#17A818><b>Гость</b></font>";
}
if(trim($temp[3])=="master")
{
$temp[3]="<font color=#CF0F18><b>Админ</b></font>";
}
echo "<font size=3 color=#336699><b><a href=infa.php?name=$temp[1]>"
.$temp[1]."</a></b></font> имеет статус ".$temp[3].
"<input type=button onClick=document.location.href='"
.$_SERVER['PHP_SELF']."?name=$temp[1]' value='Убить $temp[1]'><br>";
}
}
}
?>

//Убить
<?php
foreach ( glob ( "data/user/$name*.*" ) as $filename )
{
$files=filesize($filename);
$filed=date ( "d-m-Y H:i:s" , filemtime ( $filename ));
echo ".$filename.";
echo " <form enctype='multipart/form-data' action='delet.php' method='post'>
<input type='hidden' name='filename' value='$filename'>
<input name='delpict' type='submit' value='Удалить'>
</form>" ;
}
?>
Вообщем вот! И это надо как то смешать в одно целое!
Здесь он выводит сначало имена которые удаляются, а потом он выводит файлы, у которых стоит кнопка удалить! и после нажатия на неё, он обращается к следующиму:

<?php
if (isset($delpict) and $delpict=="Удалить") {
echo "Удален файл: ".$filename;
unlink ($filename);
unset($delpict);
exit;
}
?>

Дак может зделать, чтоб он при удалении строки и файла, обращался к другому файлу и прописывал, мол типа Юзер такойто удалён, Фаил такойто удалён!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования