Перейти к содержимому



РЕШЕНИЯ задач на PHP для начинающих

#81 copypaster

copypaster
  • Пользователь
  • 7 сообщений
  • Репутация: 0
0

Отправлено 16 Апрель 2014 - 13:49

Задача №5(работа с файлами)

Написать счетчик открытия для одной страницы. Количество открытий страницы хранится в txt-файле в виде числа.

[число открытия страницы]После каждого 10 открытия страницы, выводить приветственное сообщение на экран.

 

 

Вот такое насочинял. Решил поупражняться со вставкой кода и создал файл counter.inc

<?php
 $fh=fopen("myconter.txt", "a+");
 $counter=fread($fh, 20);
 fclose($fh);
 $counter++;
 $fh=fopen("myconter.txt", "w");
 fwrite($fh, "$counter");
 fclose($fh);
 ?>

А вот  само тело.

<?php
  include("counter.inc");
 ?>
 <h1>Моя Web-страница</h1>
  <table border=7>
  <tr><td align=center><b>Счетчик</b></td></tr>
  <tr><td>
  <?php printf("%'09s", $counter);?>
  </td></tr>
  </table>
  <?php
  if (is_int($counter/10)){
  echo "<br>Привет!";}; 
  ?>

  • 0

#82 copypaster

copypaster
  • Пользователь
  • 7 сообщений
  • Репутация: 0

Отправлено 19 Апрель 2014 - 10:57

Задача №8(работа с каталогами)

 

 

Написать функцию, которая будет удалять каталог и всё содержимое в нём, т.е. подкаталоги и файлы.
Осуществить рекурсивный вызов этой функции в подкаталогах.
Исходные данные: path - путь удаляемого каталога

 

Так как я очень начинающий, то слово рекурсия вызвала у меня столбняк. Поэтому действовал по принципу узнать как и разобраться. Вообщем решение такое.

<?php
/*Рекурсивная функция удаления каталога с произвольной степенью вложенности*/
function full_del_dir($path)
{
$dir=opendir($path);
while(($file=readdir($dir)))
{
//если функция readdir() вернула файл, удалим его
if(is_file("$path/$file")) unlink("$path/$file");
/*если функция readdir() вернула каталог и он не равен текущему или родительскому, осуществляем рекурсивный вызов full_del_dir() для этого каталога*/
else if (is_dir("$path/$file")and 
$file!="."and
$file!="..")
{
full_del_dir("$path/$file");
}
}
closedir($dir);
rmdir($path);
echo "Каталог успешно удален<br />";
}
$path="D:/xampp/htdocs/Рекорд";
full_del_dir("$path");
?>

Вообщем логически к прийти к этому можно наверное, но вот эта конструкция наверно поддается только знающим.

else if (is_dir("$path/$file")and
$file!="."and
$file!="..")

догадаться про "." и ".." это для монстров.


  • 0

#83 T(h)rasher

T(h)rasher
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 21 Апрель 2014 - 19:30

Задача №5(работа с файлами)

Написать счетчик открытия для одной страницы. Количество открытий страницы хранится в txt-файле в виде числа.

[число открытия страницы]После каждого 10 открытия страницы, выводить приветственное сообщение на экран.
 

<?
$visitcnt = 0;

define("COUNTS_LOG", "CntOpnPage.log");

if(isset($_COOKIE["visitcnt"])){ 
	$visitcnt = $_COOKIE["visitcnt"];
	
	$visitcnt++;
	$g = fopen(COUNTS_LOG, "r+");
	if (is_resource($g)) {
		fputs($g, "[$visitcnt]");
		fclose($g);
	}

}
	
setcookie("visitcnt", $visitcnt, 0x7FFFFFFF);
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
	<title>Количество открытий страницы</title>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>

<h1>Посещения</h1>

<?php

if (file_exists(COUNTS_LOG)){
	if (sizeof(COUNTS_LOG) != 0){
		if($visitcnt % 10 == 0) {
			echo "<p>Добро пожаловать!<br/>";
			echo "<p>Вы пришли $visitcnt раз<br/>";
		}
	}
}
?>

</body>
</html>


  • 0

#84 T(h)rasher

T(h)rasher
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 23 Апрель 2014 - 14:11

 

Всем доброго времени суток. Разобрался как сделать вывод.

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









<?
session_start();
define("CATALOG_LOG", "catalog.log");

if($_SERVER['REQUEST_METHOD']=="POST"){
	if (
		isset($_POST["send"]) && !empty($_POST["send"]) && 
		isset($_POST["title"]) && !empty($_POST["title"]) && 
		isset($_POST["authname"]) && !empty($_POST["authname"]) &&	
		isset($_POST["publishers"]) && !empty($_POST["publishers"]) &&	
		isset($_POST["instatus"]) && !empty($_POST["instatus"])
		)
	{
		$bname = trim(strip_tags($_POST["title"]));
		$aname = trim(strip_tags($_POST["authname"]));
		$pname = trim(strip_tags($_POST["publishers"]));
		$st = trim(strip_tags($_POST["instatus"]));
		
		if (is_numeric($bname)) $_SESSION['error'] = '<strong><em>Название книги введено не корректно.</em></strong><br/>';
		if (is_numeric($aname)) $_SESSION['error'] = '<strong><em>Наименование автора введено не корректно.</em></strong><br/>';
		if (is_numeric($pname)) $_SESSION['error'] = '<strong><em>Наименование издательства введено не корректно.</em></strong><br/>';
		if (!is_numeric($st)) $_SESSION['error'] = '<strong><em>Состояние введено не корректно.</em></strong><br/>';
		
		$bkinfo = '';
			
		if (is_string($bname) && is_string($aname) && is_string($pname) && is_numeric($st)){
		
			$bkinfo = $bname. ' | ' .$aname. ' | ' .$pname. ' | ' .$st."\r\n";
		}
		
		$g = fopen(CATALOG_LOG, "a");
		if (is_resource($g)){
			if (strlen($bkinfo)!=0){
				fputs($g,$bkinfo);
				fclose($g);
			}
			
		}else{
			echo "<strong>Файл поврежден или не доступен.</strong>";
		}
		header("Location: ".$_SERVER["PHP_SELF"]);
		exit;
	}else{
		$_SESSION['error'] = "<strong>Данные из формы не поступили, либо поступили не в полном объеме.</strong>";
	}
	
}

	
?>

<?php
if (isset($_SESSION['error'])) echo $_SESSION['error'];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
	<title>Работа с файлами</title>
	<style>
		.fld{
			width: 200px;
		}
	</style>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>

<h1>Заполните форму</h1>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<table>
	
		
			<tr> 
				<td >
					Название книги: <input class='fld' type="text" name="title" /><br /><br />
				</td>
			</tr>
			
			<tr>
				<td>
					Имя автора: <input class='fld' style='margin-left: 30px' type="text" name="authname" /><br /><br />
				</td>
				
				<td align='center'>
					Выберите книги, которые вы хотите просмотреть: <br/>
					<select size="1" name="outstatus"> 
						<option value=""></option>
						<option value="yes">Опубликованные</option>
						<option value="not">Не опубликованные</option>
						<option value="all">Все книги</option>
					</select>
					
					<input style='margin-left: 40px' type="submit" name='out' value="Вывести книги" />
				</td>
								
			</tr>
			
			<tr>
				<td>
					Издательство: <input class='fld' style='margin-left: 15px' type="text" name="publishers" /><br /><br />
				</td>
				
				
			</tr>
			
			<tr>
				<td rowspan='4'>
					Состояние книги ( опубликована [1] или не опубликована [0] ): <input class='fld' type="text" name="instatus" /><br />
				</td>
			</tr>
				
	<table width='670px'>				
		<tr>
			<td align='center'>
				<input type="submit" name='send' value="Отправить информацию о книге" />
			</td>
		</tr>	
	</table>			
		
	
</table>


<h2 align='center'>Каталог книг</h2>

<?
function FileToAr($fl){

			if (file_exists($fl)){
				if (sizeof($fl) != 0){
					$books = file($fl);
					$books = str_replace("\r\n", "", $books);
					$keys = array('title', 'author', 'publishers', 'status');
					if(is_array($books)){
			
						for ($i = 0, $cnt = count($books); $i < $cnt; $i++){
							$Res[$i] = explode("|", $books[$i]); 
							$Res[$i] = array_combine($keys, $Res[$i]); 
						}
				
						for ($j = 0, $cnt = count($Res); $j < $cnt; $j++){
							if ($Res[$j]['status'] == '1'){
								$Res[$j]['status'] = 'Опубликовано';
							}else{
								$Res[$j]['status'] = 'Не опубликовано';
							}	
						}

					}					
				}
			}

	
return $Res;
}

function state($f){

	if($_SERVER['REQUEST_METHOD']=="POST"){
		
		if	(
			isset($_POST["outstatus"]) && !empty($_POST["outstatus"]) && 
			isset($_POST["out"]) && !empty($_POST["out"])  
			)
		{
		
			switch($_POST["outstatus"]){
			
				 case 'yes':
					
					$Res = FileToAr($f);
					
					echo "<hr/><pre>";
					
					echo "<h3>Опубликованные книги</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							if ($Res[$books]['status'] == 'Опубликовано'){
								echo "[$books][$key] = [$val]\r\n";
							}
						}
						echo "<br/>";
					}
					echo "</pre>";
				break;
				
				case 'not':
					
					$Res = FileToAr($f);
					echo "<hr/><pre>";
					
					echo "<h3>Не опубликованные книги</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							if ($Res[$books]['status'] == 'Не опубликовано'){
								echo "[$books][$key] = [$val]\r\n";
							}
						}
						echo "<br/>";
					}
					echo "</pre>";
				break;
				
				case 'all':
					
					$Res = FileToAr($f);
					echo "<hr/><pre>";
					
					echo "<h3>Весь книжный каталог</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							echo "[$books][$key] = [$val]\r\n";
						}
						echo "<br/>";
					}
					echo "</pre>";
			}
							
		}
	}	
}


state('catalog.log');
?>

</body>
</html>

<?
session_unset();
session_destroy();
?>

 

Нашел в своем решении несколько косяков - в частности, добавление новой книги и вывод тех или иных книг осуществлялись с помощью поста в одной форме, что создавало ошибку. В итоге каждая вторая книга в файл не добавлялась, т.к. поле вывода книг (оубликованные/не опубликованные/все книги) остается пустым при добавление новой книги, поскольку добавление - это добавление, а вывод - это вывод. Поскольку эти действия разные и кнопок, соответственно, тоже две, сделал две формы - одну для добавления новой книги с помощью поста и одну для вывода книг (с помощью гета). 



<?
session_start();
define("CATALOG_LOG", "catalog.log");

if($_SERVER['REQUEST_METHOD']=="POST"){
	if (
		isset($_POST["send"]) && !empty($_POST["send"]) && 
		isset($_POST["title"]) && !empty($_POST["title"]) && 
		isset($_POST["authname"]) && !empty($_POST["authname"]) &&	
		isset($_POST["publishers"]) && !empty($_POST["publishers"]) &&	
		isset($_POST["instatus"]) && !empty($_POST["instatus"])
		)
	{
		$bname = trim(strip_tags($_POST["title"]));
		$aname = trim(strip_tags($_POST["authname"]));
		$pname = trim(strip_tags($_POST["publishers"]));
		$st = trim(strip_tags($_POST["instatus"]));
		
		if (is_numeric($bname)) $_SESSION['error'] = '<strong><em>Название книги введено не корректно.</em></strong><br/>';
		if (is_numeric($aname)) $_SESSION['error'] = '<strong><em>Наименование автора введено не корректно.</em></strong><br/>';
		if (is_numeric($pname)) $_SESSION['error'] = '<strong><em>Наименование издательства введено не корректно.</em></strong><br/>';
		if (!is_numeric($st) || strlen($st) > 1) $_SESSION['error'] = '<strong><em>Состояние введено не корректно.</em></strong><br/>';
		
		if (strlen($st) > 1){
			$_SESSION['error'] = '<strong><em>Не корректное состояние.</em></strong><br/>';
			goto ext;
		}
			
		
		$bkinfo = '';
			
		if (is_string($bname) && is_string($aname) && is_string($pname) && is_numeric($st)){
		
			$bkinfo = $bname. ' | ' .$aname. ' | ' .$pname. ' | ' .$st."\r\n";
		}
		
			$g = fopen(CATALOG_LOG, "a+");
			$search = '';
			if (is_resource($g)){
				if (strlen($bkinfo) != 0 && sizeof($g) != 0){
			
					while(!feof($g)) $search.= fgets($g, 1024);
						if (strpos($search, $bname) == true && strpos($search, $aname) == true && strpos($search, $pname) == true && strpos($search, $st) == true){
							$_SESSION['same'] = '<strong><em>Такая книга уже есть в каталоге.</em></strong><br/>';
							goto ext;
						}
					
					fputs($g,$bkinfo);
					$_SESSION['mes'] = '<strong><em>Ваша книга добавлена в каталог.</em></strong><br/>';
					fclose($g);
				
				}else{
					if (strlen($bkinfo) != 0 && sizeof($g) == 0){
					
						fputs($g,$bkinfo);
						$_SESSION['mes'] = '<strong><em>Ваша книга добавлена в каталог.</em></strong><br/>';
						fclose($g);
					}
				}
			
			}else{
				echo "<strong>Файл поврежден или не доступен.</strong>";
			}
				
		//header("Location: ".$_SERVER["PHP_SELF"]);
		exit;
	}else{
		$_SESSION['error'] = "<strong>Данные из формы не поступили, либо поступили не в полном объеме.</strong>";
	}
}
?>

<?
ext:
if (isset($_SESSION['same'])) echo $_SESSION['same'];
if (isset($_SESSION['mes'])) echo $_SESSION['mes'];
if (isset($_SESSION['error'])) echo $_SESSION['error'];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
	<title>Работа с файлами</title>
	<style>
		.fld{
			width: 200px;
		}
		
		.formslctr{
			display: inline-block;
		}
	</style>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>

<h1>Заполните форму</h1>

<form class='formslctr' method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<table>
			<tr> 
				<td >
					Название книги: <input class='fld' type="text" name="title" /><br /><br />
				</td>
			</tr>
			
			<tr>
				<td>
					Имя автора: <input class='fld' style='margin-left: 30px' type="text" name="authname" /><br /><br />
				</td>
								
			</tr>
			
			<tr>
				<td>
					Издательство: <input class='fld' style='margin-left: 15px' type="text" name="publishers" /><br /><br />
				</td>
				
				
			</tr>
			
			<tr>
				<td rowspan='4'>
					Состояние книги ( опубликована [1] или не опубликована [0] ): <input class='fld' type="text" name="instatus" /><br />
				</td>
			</tr>
				
	<table width='670px'>				
		<tr>
			<td>
				<input type="submit" name='send' value="Отправить информацию о книге" />
			</td>
		</tr>	
	</table>			

</table>
</form>


<form class='formslctr' method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
	<tr>
		<td align='center'>
					Выберите книги, которые вы хотите просмотреть: <br/>
					<select size="1" name="outstatus"> 
						<option value=""></option>
						<option value="yes">Опубликованные</option>
						<option value="not">Не опубликованные</option>
						<option value="all">Все книги</option>
					</select>
					
					<input style='margin-left: 40px' type="submit" name='out' value="Вывести книги" />
		</td>
	</tr>
</table>
</form>


<h2 align='center'>Каталог книг</h2>

<?
function FileToAr($fl){

			if (file_exists($fl)){
				if (sizeof($fl) != 0){
					$books = file($fl);
					$books = str_replace("\r\n", "", $books);
					$keys = array('title', 'author', 'publishers', 'status');
					if(is_array($books)){
			
						for ($i = 0, $cnt = count($books); $i < $cnt; $i++){
							$Res[$i] = explode("|", $books[$i]); 
							$Res[$i] = array_combine($keys, $Res[$i]); 
						}
				
						for ($j = 0, $cnt = count($Res); $j < $cnt; $j++){
							if ($Res[$j]['status'] == '1') $Res[$j]['status'] = 'Опубликовано';
														
							if ($Res[$j]['status'] == '0') $Res[$j]['status'] = 'Не опубликовано';
								
						}

					}					
				}
			}
return $Res;
}

function state($f){

	if($_SERVER['REQUEST_METHOD']=="GET"){
		
		if	(
			isset($_GET["outstatus"]) && !empty($_GET["outstatus"]) && 
			isset($_GET["out"]) && !empty($_GET["out"])  
			)
		{
		
			switch($_GET["outstatus"]){
			
				 case 'yes':
					
					$Res = FileToAr($f);
					
					echo "<hr/><pre>";
					
					echo "<h3>Опубликованные книги</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							if ($Res[$books]['status'] == 'Опубликовано'){
								echo "[$books][$key] = [$val]\r\n";
							}
						}
						echo "<br/>";
					}
					echo "</pre>";
				break;
				
				case 'not':
					
					$Res = FileToAr($f);
					echo "<hr/><pre>";
					
					echo "<h3>Не опубликованные книги</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							if ($Res[$books]['status'] == 'Не опубликовано'){
								echo "[$books][$key] = [$val]\r\n";
							}
						}
						echo "<br/>";
					}
					echo "</pre>";
				break;
				
				case 'all':
					
					$Res = FileToAr($f);
					echo "<hr/><pre>";
					
					echo "<h3>Весь книжный каталог</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							echo "[$books][$key] = [$val]\r\n";
						}
						echo "<br/>";
					}
					echo "</pre>";
			}
							
		}
		
	}	
		
}
state('catalog.log');


?>

</body>
</html>

<?
session_unset();
session_destroy();
?>


Сообщение отредактировал T(h)rasher: 23 Апрель 2014 - 15:56

  • 0

#85 copypaster

copypaster
  • Пользователь
  • 7 сообщений
  • Репутация: 0

Отправлено 28 Апрель 2014 - 11:32

Задача №10 ("до события осталось...", работа с датой)

Имеется дата в формате дд.мм.гггг (например 31.12.2009). Надо написать скрипт который будет вычислять сколько осталось дней, месяцев, лет до этой даты. И вывести в формате "До события остался 1 год 5 месяцев и 25 дней". (при желании можно вывести часы и минуты).

 

Вот такое я состряпал:

<?php

echo "Сегодня: ".date("d F Y"); 
echo "<br>До ".date("d F Y", mktime(0,0,0,6,28,2028))." осталось: ";
$start=mktime (0,0,0,6,28,2028)."<br>";
$end=mktime (0,0,0,date("n"),date("d"),date("Y"))."<br>";
  $raz=($start-$end);
  $year4=(int)($raz/126230400);//подсчитываем количество 4-хлетий, 126230400 - количество секунд в 4-хлетии, т.е. с учетом високосного дня.
  $years=($raz%126230400);
  $year=(int)($years/31536000);
  $months=($years%31536000);
  $month=(int)($months/2628000);
  $days=($months%2628000);
  $day=(int)($days/86400);
echo $year+4*$year4." лет ".$month." месяцев и ".$day." дней";
?>

Есть один недочет. Пока не знаю как разрулить проблему с количеством дней в месяце. Т.е. при моем коде разница между 28 июня и 28 апреля будет 2 месяца и 1 день, т.к. код просчитывает по 30 дней в месяце. А про февраль вообще думать боюсь :blink: .


Задача №14 ("поиск с подсветкой", регулярные выражения)

Дан текст и "слово", выделить красным слова в тексте которые содержат в себе "слово".

Например: Дано слово "мастер" и текст "MasterWebs - Форум веб-мастеров"

 

Несложно, но знакомство с различными функциями полезно.

 <?php
 $str="MasterWebs - Форум веб-мастеров. Дело мастера боится!";
 $rep="<font color=#ff0000>мастер</font>"; 
 $st=str_replace("мастер","$rep",$str);
 echo $st;
?>

Сообщение отредактировал copypaster: 28 Апрель 2014 - 11:32

  • 0

#86 copypaster

copypaster
  • Пользователь
  • 7 сообщений
  • Репутация: 0

Отправлено 02 Май 2014 - 12:18

Задача №11 ("строка из букв строки", работа со строками)

 

 

Даны 2 слова, определить можно ли из 1ого слова составить 2ое, при условии что каждую букву из строки 1 можно использовать только один раз.

 

Во всех предыдущих решениях не смог разобраться как выполняется условие "что каждую букву из строки 1 можно использовать только один раз." Поломал немного мозги и слепил такое.  Функция  strtolower позволяет сравнивать символы без учета регистра (только с кириллицей работать у меня не захотела). Результат запроса по моему коду положительный.

<?php
 $str1=strtolower("Stream");
 $str2=strtolower("tEam");
  $chr1=count_chars($str1, 0);
  $chr2=count_chars($str2, 0);
     for ($i=0; $i<count($chr1); $i++){
    $rez=$chr1[$i]-$chr2[$i];
  if ($rez<0){    
    echo "Слово составить не удается";
    break;   
  }
  elseif (count($chr1)-$i==1){  
  echo "Слово составить можно";
  }
  };                       
  ?>

Сообщение отредактировал copypaster: 02 Май 2014 - 12:19

  • 0

#87 Alex123

Alex123
  • Неактивированные
  • 1 сообщений
  • Репутация: 0

Отправлено 18 Сентябрь 2014 - 10:46

Задача №10 ("до события осталось...", работа с датой)
 


Имеется дата в формате дд.мм.гггг (например 31.12.2009). Надо написать скрипт который будет вычислять сколько осталось дней, месяцев, лет до этой даты. И вывести в формате "До события остался 1 год 5 месяцев и 25 дней". (при желании можно вывести часы и минуты).

наверно можно сделать и проще, но это моя первая задача вообще.
 

header("Refresh: 1");// обновление в сек.
$year = 31556952; // 365,2425 среднее кол-во суток в году по григорианскому календарю в секундах 
$month = 2629746; // кол-во сек в 1мес.  1мес (30,436875 суток) = 1год (сек) /12
$day = 86400; // кол-во сек в 1сутках
$hour = 3600; // кол-во сек в 1часе
$minute = 60; // кол-во сек в 1минуте
 
$time = time();
$time_end = mktime(15, 45, 30, 10, 18, 2024); // Событие: час, мин, сек, мес, день, год
 
$time_diff = $time_end - $time; // $time_diff присвоили разницу между заданной датой и реальным временем
 
$year_wait = floor($time_diff / $year); //  высчитали полное кол-во годов
$month_wait = floor(($time_diff - $year * $year_wait) / $month); // высчитали по остатку (без годов) полное кол-во месяцев
$day_wait = floor(($time_diff - $year * $year_wait - $month * $month_wait) / $day);
// высчитали по остатку (без мес) полное кол-во суток, и т.д.
$hour_wait = floor(($time_diff - $year * $year_wait - $month * $month_wait - $day * $day_wait) / $hour); 
$minute_wait = floor(($time_diff - $year * $year_wait - $month * $month_wait - $day * $day_wait - $hour * $hour_wait) / $minute);
$seconds_wait = $time_diff - $year * $year_wait - $month * $month_wait - $day * $day_wait - $hour * $hour_wait - $minute * $minute_wait;
 
echo "До события осталось: ", $year_wait, "г, ", $month_wait,"мес, ", $day_wait, "дн, ", $hour_wait, "ч, ", $minute_wait, "мин, ", $seconds_wait, "с.";
?>

  • 0

#88 1cloud

1cloud
  • Пользователь
  • 1 сообщений
  • Репутация: 0

Отправлено 08 Апрель 2016 - 22:05

На решение 4й задачи я потратил 2 недели. Тихо и не спеша)

Задача №4(работа с файлами) Цитата Имеется файл с содержимым (книга|автор|издательство|состояние) например: PHP 5 объектно-ориентированное программирование|Шишов Алексей|БХВ|1 MySQL: неподъемная книга разработчика|Шишов Алексей|БХВ|0 Справочник всего Г в России|Пупкин Вася|Пупкин и к0|1 Книга для домохозяек|Хозяйка Лидия|Домхоз|1 Телевидение в каждой коморке|Телестанция СССР|КВС+|0 Нужно написать 3 функции. 1) Функция, считывающая из файла построчно данные и разбила их на многомерный массив вида: array( array(title => [книга], author => [автор], print => [издательство], status => [состояние]), array(title => [книга], author => [автор], print => [издательство], status => [состояние]), array(title => [книга], author => [автор], print => [издательство], status => [состояние]), ); Выходные данные: массив книг. 2) Функция, обрабатывающая массив книг и возвращающая книги с запрошенным состоянием. Поле состояния отвечает за публикацию, опубликована книга или нет. 3) Функция, выводящая список книг в удобочитаемой форме.
 
<?php

fopen ("a.txt", "r"); 	//открыл файл
$file = file("a.txt");  //сделал строки файла элементами массива
print_r($file); 		//Проверка
echo '<br />';


for ($i = 0; $i < (count($file)); $i++) {	//Цикл воспринимает отдельно каждый элемент массива
	$book[$i] = explode('|', $file[$i]);		//Каждая строка массива base разбивается на элементы между |, которые становятся 
	$library[] = $book[$i]; 						//отдельными элементами массивов books[$i], которые входят в массив $library.
	echo '<br />';
	print_r($library[$i]);
}

sort ($library);
echo '<hr />';
print_r($library); 							//проверка
echo '<hr />';

$realised = 1;

function Realised($bo, $is) {
	foreach ($bo as $value) {
		for ($i = 0; $i < (count($bo)); $i++) {
			if ($bo[$i][3] == $is) echo $bo[$i][0]." is realised!<br />";
			else echo $bo[$i][0]." is NOT realised!<br />";

		}
	break;
	}
}

function publication($bo, $is) {
	foreach ($bo as $value) {
		for ($c = 0; $c < (count($bo)); $c++) {

			if ($bo[$c][3] == $is) echo "<br />Книга \"".$bo[$c][0]."\", которая была написана ".$bo[$c][1]." под издательством \"".$bo[$c][2]."\" уже в продаже!!!";
			else echo "<br />Книга \"".$bo[$c][0]."\", которая была написана ".$bo[$c][1]." под издательством \"".$bo[$c][2]."\" появится в продаже немного позже."; 
		}
	break;
	}
}

Realised($library, $realised);
publication($library, $realised);
?>

Да, это мой говнокод.  Я буду благодарен за конструктивные унижения.


  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru