
14. Читання з файлів
Дуже часто потрібно виводити не весь файл повністю, а тільки частину даних, щоб використовувати їх, наприклад, на сторінці РНР. У РНР є декілька функцій, що дозволяють це зробити. Вибір такої функції залежить від даних, які потрібно прочитати.
Щоб прочитати рядок з відкритого файлу, можна скористатися функцією fread ():
string fread(int fp,int length);
Ця функція читає рядок довжиною до length символів з файлу з дескриптором fp:
if (!$file=fopen("text.txt", "r")) {
echo("Неможливо відкрити файл "); // Якщо fopen Про повертає Про
// неможливо відкрити файл } else {
$text = fread($file, 10); // Прочитати перші 10 символів
fclose($file); }
Якщо кінець файлу досягнутий раніше заданої довжини length, повертається текст до цього місця.
Функція fgetc() використовується для читання з файлу одного символу:
string fgetc(int fp);
Вона має один параметр – це дескриптор відкритого файлу. Значення, що повертається, є рядком з одного символу, прочитаним з файлу, або false (порожній рядок), якщо досягнутий кінець файлу. Наступний код читає перший символ файлу:
<?php
if (!$file=fopen("text.txt", "r")) {
echo("Неможливо відкрити файл "); // Якщо fopen() повертає 0
// неможливо відкритифайл } else {
$char = (fgetc($file)); // Прочитати перший символ
//у поточній позиції
fclose($file); } ?>
Для читання вмісту файлу також можна використовувати функцію filе(), яка повертає вміст файлу у вигляді масиву. Кожен рядок файлу буде представлений одним елементом масиву (перший рядок буде нульовим елементом):
array file (string filename);
Зверніть увагу, що file() приймає як аргумент рядок з ім'ям файлу, а не цілочисельний дескриптор файлу. Наступний код бере кожен рядок текстового файлу і виводить його в броузер як абзац у форматі HTML, укладаючи текст в теги <Р> . .. </Р>:
$arrText = file("text.txt"); for ($i=0; $i<count($arrText); $i++) {
echo("<P>$arrText[$i]</P>");
Завдання
1. Створити PHP-скрипт, який повертає користувачу HTML-сторінку із
введеними в Web-форму даними.
2. Додати в створений в п.1 PHP-скрипт перевірку отриманих даних і
виведення повідомлення про помилку, якщо один з обов‘язкових параметрів не
заповнений.
3. Додати функцію запису отриманих даних в змінні сесії.
4. Додати функцію запису отриманих даних в окремий файл.
5. Розробити модель бази даних і за допомогою програми PhpMyAdmin
створити базу даних MYSQL.
6. Додати функцію запису отриманих даних в базу даних.
Виконання завдання
Завдання 1
Рис 1.1 Запис тексту до стрічки
Рис 1.2. Відправленний запит попереднього тексту
Рис. 1.3. Повернення данних
Код:
<html>
<head>
</head>
<body>
<DIV align=center>
<P align=left><INPUT onclick=history.back(-1) type=button value=" BACK (возвращает на предыдущую страницу с веденными в Web-форму даными)"></P></DIV>
</body>
</html>
Завдання 2
Рис. 2.1. Запит на перевірочне слово. Запит невдалий.
Рис. 2.2. Запит на перевірочне слово. Запит вдалий.
Код:
Index.Php:
Складіть слово:
<br/> kersysCha
<form action="proverka.php" method="POST">
<input type="text" name="NAME">
<input type="submit">
</form>
proverka.php:
<?php
if($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["NAME"]))
{
$name = $_POST["NAME"];
if($name != "Cherkassy") echo "Error";
else echo "Ok";
}
Завдання 3
Рис 3.1. Запис данних
Рис 3.2. Збережені данні
Код:
<?php
if ($_POST['content'])
{
$file=fopen('content.txt','w');
fputs($file,$_POST['content']);
fclose($file);
echo 'Данные записаны в файл!';
}
else
{
echo '
<form method="post" action="index.php">
<textarea rows="0" cols="18" name="content">
'.file_get_contents('content.txt').'
</textarea>
<input type="submit" value="Сохранить">
</form>';
}?>
Завдання 4
Рис. 4.1. Запит до збереження зображення до БД.
Рис 4.2. БД
Код:
Введення картинки до БД: index.php: <form enctype="multipart/form-data" method="post" action="putimage.php">
Изображение: <input type="file" name="image" />
<input type="submit" value="Загрузить" />
</form>
putimage.php:
<?php
if( !empty( $_FILES['image']['name'] ) ) {
if ( $_FILES['image']['error'] == 0 ) {
if( substr($_FILES['image']['type'], 0, 5)=='image' ) {
$image = file_get_contents( $_FILES['image']['tmp_name'] );
$image = mysql_escape_string( $image );
$query="INSERT INTO `images` VALUES(NULL, '".$image."')";
mysql_query( $query );
}
}
}
?>
image.php: <?php
if ( isset( $_GET['id'] ) ) {
$id = (int)$_GET['id'];
if ( $id > 0 ) {
$query = "SELECT `content` FROM `images` WHERE `id`=".$id;
$res = mysql_query($query);
if ( mysql_num_rows( $res ) == 1 ) {
$image = mysql_fetch_array($res);
header("Content-type: image/*");
echo $image['content'];
}
}
}
?>
Виведення картинки на сторінку: <html>
<head>
</head>
<body>
<img src="image.php?id=1" alt="" />
</body>
</html>
Висновок: Ми навчились обробляти параметри запиту за допомогою PHP-
скрипта та записувати дані в базу даних MYSQL, в змінні сесії, в окремий файл.