понедельник, 23 декабря 2013 г.

Обработка отдельных данных формы на РНР

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

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

Обратите внимание на особенность РНР: для того, чтобы корректно сравнить две строковые переменные,  например $s1="Енот " и  $s3=$file_array1[$n];, нужно завести другие переменные таким образом  $s2=$s1[0];  и  $s4=$s3[0];  и сравнить $s2 и $s4. Они сравниваются правильно. Исходные переменные - нет.



<?php
// Читаем файл, в котором находятся данные о посетителях, зафиксированных ранее
//эти данные  заносятся в массив $file_array, затем к нему добавляем строку  $dop о
// новом посетителе
//и отдельно читаем и храним  данные о домашнем животном.
$file = "data1087.txt";
$fh = fopen($file, "r");
$file_array = file($file);
$dop=$_REQUEST["first_name"]." ".$_REQUEST["last_name"];
// новые данные подписываем в конец массива
 $file_array[]=$dop;
fclose($fh);

$file1 = "data1088.txt";
$fh1 = fopen($file1, "r+");
$file_array1 = file($file1);
// к выбранному только что типу домашнего животного прибавляем пробел
// для единообразия, т.к.пробел потом автоматически появляется при чтении из файла
$dop1=$_REQUEST["kurs"]." ";
 $file_array1[]=$dop1;
fclose($fh1);

// Печатаем информацию: Имя посетителя и выбранное домашнее животное
//  с помощью цикла foreach
// и заодно их считаем с помощью  переменной $n
// и отдельно в  $e считаем выбравших енота
echo "Выбрали зверей:";
echo  " <br>"; $n=0; $e=0;
// следующие операторы необходимы для сравнения
$s1="Енот "; $s2=$s1[0];
foreach ($file_array as $value)
 {
// следующие операторы необходимы для сравнения
    $s3=$file_array1[$n]; $s4=$s3[0];
    echo " $n ",$value,"  ",$file_array1[$n],"!<br>";
// только так корректно сравниваются строковые переменные
   if ($s2 = = $s4) $e++;
   $n++;
}

echo  " <br>Число енотов=",$e;
// Записываем в конец 1-го файла информацию о последнем посетителе и в конец 2-го
// -о животном
$fh = fopen($file, "a+");
$success= fwrite($fh, $dop);
$success= fwrite($fh, "\r"); $success= fwrite($fh, "\n");
fclose($fh);
$fh1 = fopen($file1, "a+");
$success= fwrite($fh1, $dop1);
$success= fwrite($fh1, "\r");
$success= fwrite($fh1, "\n");
 fclose($fh1);

?>

Комментариев нет:

Отправить комментарий