как установить лимит на сообщения

leon2009

Здравствуйте! как установить лимит на вывод сообщений, вернее: 10 сообщений есть, если добавляться еще одно, то старое удаляется №9 а другое появляется.

PHP:
  1. <?php
  2. $filename = ‘messages.dat’;
  3. $delitmer = «<|-|>»;
  4. $marka_limit = 40;
  5. $model_limit = 80;
  6. $tel_limit = 30;
  7. $production_limit = 801;
  8.  
  9. if (isset($_POST))
  10. {
  11.     if (isset($_POST[‘marka’]) & isset($_POST[‘model’])  & isset($_POST[‘production’]) & isset($_POST[‘tel’]))
  12.     {
  13.       if (((strlen($_POST[‘marka’])>0) & (strlen($_POST[‘marka’])<=$marka_limit)) &
  14.             ((strlen($_POST[‘model’])>0) & (strlen($_POST[‘model’])<=$model_limit)) &
  15.     ((strlen($_POST[‘production’])>0) & (strlen($_POST[‘production’])<=$production_limit)) &
  16.     ((strlen($_POST[‘tel’])>0) & (strlen($_POST[‘tel’])<=$tel_limit)))
  17.             {
  18.     $marka = str_replace(«rn«, «<br>», htmlspecialchars($_POST[‘marka’]));
  19.     $model = str_replace(«rn«, «<br>», htmlspecialchars($_POST[‘model’]));
  20.     $production = str_replace(«rn«, «<br>», htmlspecialchars($_POST[‘production’]));
  21.     $tel = str_replace(«rn«, «<br>», htmlspecialchars($_POST[‘tel’]));  
  22.     $arr = array($marka, $model, $production, $tel, date(«d.m.Y»));
  23.     $new_message = implode($delitmer, $arr) . «rn«;
  24.     $messages_arr = @file($filename);
  25.     $messages_str = $new_message;
  26.     $messages_str .= trim(implode(«», $messages_arr));
  27.  
  28.                 $fp = fopen($filename, «w+»);
  29.                 fwrite($fp, $messages_str);
  30.                 fclose($fp);
  31.     echo «<META HTTP-EQUIV=«Refresh« CONTENT=«2; URL=index.php«;
  32.     echo ‘<center><a href=»index.php»><font color=#000000 size=+1>Запрос принят!</font></a></center>’;
  33.  
  34.             }
  35.             else
  36.             {
  37.                 echo «Ошибка!!!<br>Не все данные введенны, либо в одном из полей формы слишком символов.»;
  38.             }
  39.     }
  40. }
  41. ?>
PHP:
  1. <?php
  2. $filename = «messages.dat»;
  3. $delitmer = «<|-|>»;
  4. $shablon =
  5. <table width=»100%» border=»2″>
  6. <tr>
  7. <td width=»20%» align=»center» bgcolor=»#ffffff»><font color=»#000000″ size=-1><b><u>%marka%</u></b></font></td>
  8. <td width=»20%» align=»center» bgcolor=»#ffffff»><font color=»#000000″ size=-1><b><a href=»mailto:%model%»>%model%</a></b></font></td>
  9. <td width=»40%» align=»center» bgcolor=»#ffffff»><font color=»#000000″ size=-1><b>222</b></font></td>
  10. </tr>
  11. <tr>
  12. <td colspan=»3″>%production%</td>
  13. </tr>
  14. </table>
  15. ;
  16.  
  17. $data = @file($filename);
  18. sort($data);
  19. for(reset($data); $key = key($data); next($data)) {
  20.     echo «marka[$key] = «.$data[$key].«n«;
  21. }
  22. foreach($data as $val)
  23. {
  24.   list($marka, $model, $production) = explode($delitmer, trim($val));
  25.   $tmp_message = str_replace(«%marka%», $marka, $shablon);
  26.   $tmp_message = str_replace(«%model%», $model, $tmp_message);
  27.   $tmp_message = str_replace(«%production%», $production, $tmp_message);
  28.   echo $tmp_message;
  29. }
  30. ?>

и храняшка

PHP:
  1. namw<|-|>name@mail.ru<|-|>ttttttttttttttttttttttttttt<|-|>55555555<|-|>27.05.2021
  2. 111111<|-|>2222222<|-|>444444444444444<|-|>333333333<|-|>27.05.2021
  3. wwwwwwwwwwww<|-|>eeeee<|-|>dddddddddddd<|-|>eeeeeee<|-|>27.05.2021
 

Drunkenmunky

Вывести «базу» в массив с помощью file()
Отсортировать по дате, посчитать, лишнее удалить, новое добавить.
Сохранить «базу» на место.

 

leon2009

можно примерчик? тока не по дате :rolleyes: может по номеру 1..10…:oops:

 

Drunkenmunky

Можно.
Дайте массив и добавляемые в него данные.

 

leon2009

массив:

HTML:
  1. q1q1q1q<|-|>q1q1q1q1<|-|>q1q1q1q1q1q1q1q1<|-|>1111<|-|>03.06.2021
  2. 101010<|-|>101010<|-|>101010101010<|-|>101010<|-|>03.06.2021
  3. 999999<|-|>99999999999999999999999999<|-|>99999999999999999999999<|-|>99999999999999<|-|>03.06.2021
  4. 888888888888888<|-|>888888888888<|-|>888888888888888888888888888888888<|-|>8888888888888<|-|>03.06.2021
  5. 77<|-|>7777777777<|-|>777777777777777777777777<|-|>77777777777777<|-|>03.06.2021
  6. 666<|-|>6666666666666666666<|-|>66666666666666666<|-|>666666666666666<|-|>03.06.2021

я сделал так: но не уверен что правильно :(, хотя работает:

PHP:
  1. <?php
  2. $filename = «messages.dat»;
  3. $delitmer = «<|-|>»;
  4. $marka_limit = 40;
  5. $model_limit = 80;
  6. $tel_limit = 30;
  7. $production_limit = 801;
  8.  
  9. if (isset($_POST))
  10. {
  11.     if (isset($_POST[‘name_forum’]) & isset($_POST[’email_forum’])  & isset($_POST[‘mess’]) & isset($_POST[‘tel_forum’]))
  12.     {
  13.       if (((strlen($_POST[‘name_forum’])>0) & (strlen($_POST[‘name_forum’])<=$marka_limit)) &
  14.             ((strlen($_POST[’email_forum’])>0) & (strlen($_POST[’email_forum’])<=$model_limit)) &
  15.     ((strlen($_POST[‘mess’])>0) & (strlen($_POST[‘mess’])<=$production_limit)) &
  16.     ((strlen($_POST[‘tel_forum’])>0) & (strlen($_POST[‘tel_forum’])<=$tel_limit)))
  17.             {
  18.     $marka = str_replace(«rn«, «<br>», htmlspecialchars($_POST[‘name_forum’]));
  19.     $model = str_replace(«rn«, «<br>», htmlspecialchars($_POST[’email_forum’]));
  20.     $production = str_replace(«rn«, «<br>», htmlspecialchars($_POST[‘mess’]));
  21.     $tel = str_replace(«rn«, «<br>», htmlspecialchars($_POST[‘tel_forum’]));  
  22.     $arr = array($marka, $model, $production, $tel, date(«d.m.Y»));
  23.     $new_message = implode($delitmer, $arr) . «rn«;
  24.     $messages_arr = @file($filename);
  25.     $messages_str = $new_message;
  26.     $messages_str .= trim(implode(«», $messages_arr));
  27.     $fp = fopen($filename, «w+»);
  28.                 fwrite($fp, $messages_str);
  29. //delete_street
  30. $delete = array(6,7,8,9,10,11); // номера строк, которые удаляем
  31. $file = file($filename, FILE_IGNORE_NEW_LINES);
  32. while(list($line, $data) = each($file))
  33. {
  34.     if(in_array($line, $delete))
  35.         unset($file[$line]);
  36. }
  37. $file = array_filter($file);
  38. file_put_contents($filename, implode(«n«, $file), LOCK_EX);
  39. unset($file);
  40. //fin_delete_street
  41.                 fclose($fp);              
  42.     echo «<META HTTP-EQUIV=«Refresh« CONTENT=«2; URL=support«;
  43.     echo ‘<center><a href=support class=»link3″>Запрос принят!</font></center>’;
  44.  
  45.             }
  46.             else
  47.             {
  48.                 echo «<center><p class=«link3«>Ошибка!!!<br>Не все данные введенны, либо в одном из полей формы слишком символов.</p></center>»;
  49.             }
  50.     }
  51. }
  52. ?>
 

Drunkenmunky

Ну, нет предела совершенству.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *