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

Форум PHP

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

 

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

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

тема: тест на проф. пригодность
 
 автор: DarkLord   (02.05.2006 в 09:31)   письмо автору
 
 

Проходил я недавно тестирование на вакансию PHP программиста и, естественно, провалил этот тест,
т.к. уровень программирования у меня невысокий. Мне интересно знать мнение профессионалов
где я ошибся и как нужно было сделать правильно.

Итак.
Исходное задание:


Дано:
форма с тремя полями:
"Обращение" - список с двумя элементами: "мистер" и "миссис".
"Имя" - текстовое поле для ввода имени человека
"Возраст" - radiobuttons: "от 0 до 25", "от 25 до 55", от "55 до 100".
 
Необходимо реализовать скрипт, который помещается в одном php файле отображающий данную форму,
принимающий данные от пользователи, обрабатывающий их и выводящий результат на экран. Обработка
заключается в следующем:
Если "возраст" от "0 до 25" и "Обращение" "мистер", то выводится "[Имя] - мальчик". Если "Обращение"
"миссис" - то "[Имя] - девочка"
По аналогии для каждого возраста:
"[Имя] - мужчина\женщина"
"[Имя] - дедушка\бабушка"
 
Написать один запрос к БД (host: local; name: bd_one; login: bg_login; password: bd_pass) на языке SQL,
которая по введенному имени (FirstName) выбрала из двух таблиц:
 
Имя "tbName" поля : Name_id, FirstName, LastName, Phone_id
Имя "tbPhone" поля : Phone_id, PhoneNumber
 
следующие данные: LastName, PhoneNumber. По условиям задачи, не все люди имеют телефон. В случае
отсутствия телефона, вывести LastName, а в поле PhoneNumber - любое значение.
 
В скрипте предусмотреть "защиту от дурака", защиту от ввода без заполнения всех полей и простейшие
методы защиты от "хакеров". Защита может реализовываться как на клиенте, так и на сервере.
Скрипт должен быть написан так, чтобы при выкладываении его на сервер с реально существующей БД, он
заработал бы без дополнительных настроек.

Также укажите, сколько реально времени вы затратили на выполнение
теста.


А дальше то, что я наваял.
Вот файл, который создает таблицы для тестирования и заполняет их данными.


<?php
$server
="local";
$user="bg_login";
$passwd="bd_pass";
$db="bd_one";

if(!
mysql_connect($server,$user,$passwd))
{
    echo 
"ERROR";
    exit;
}

mysql_select_db($db);

// предварительное удаление существующих таблиц
$query="drop table if exists tbName";
if(
$result=mysql_query($query)) echo "<br>Таблица tbName удалена.<br>";
else echo 
"<br><font color=red><b>Ошибка удаления таблицы tbName.</b></font><br>";

$query="drop table if exists tbPhone";
if(
$result=mysql_query($query)) echo "<br>Таблица tbPhone удалена.<br>";
else echo 
"<br><font color=red><b>Ошибка удаления таблицы tbPhone.</b></font><br>";

// создаем таблицы
$query="create table tbName (
Name_id int unsigned not null auto_increment,
FirstName char(30) not null,
LastName char(30) not null,
Phone_id int not null,
primary key (Name_id)
)"
;
if(
$result=mysql_query($query)) echo "<br>Таблица tbName успешно создана.<br>";
else echo 
"<br><font color=red><b>Ошибка создания таблицы tbName.</b></font><br>";

$query="create table tbPhone (
id int unsigned not null auto_increment,
Phone_id int,
PhoneNumber char(15) not null,
primary key (id)
)"
;
if(
$result=mysql_query($query)) echo "<br>Таблица tbPhone успешно создана.<br>";
else echo 
"<br><font color=red><b>Ошибка создания таблицы tbPhone.</b></font><br>";

// загружаем данные
$query="insert into tbName (Name_id, FirstName, LastName, Phone_id) values (null, 'aaa', 'aaaaa', '1'), (null, 'bbb', 'bbbbb', '2'), (null, 'ccc', 'ccccc', '3')";
if(
$result=mysql_query($query)) echo "<br>Начальные данные в таблицу tbName успешно загружены.<br>";
else echo 
"<br><font color=red><b>Ошибка загрузки начальных данных в таблицу tbName.</b></font><br>";

$query="insert into tbPhone (id, Phone_id, PhoneNumber) values (null, '1', '11111'), (null, '2', '22222')";
if(
$result=mysql_query($query)) echo "<br>Начальные данные в таблицу tbPhone успешно загружены.<br>";
else echo 
"<br><font color=red><b>Ошибка загрузки начальных данных в таблицу tbPhone.</b></font><br>";
?>


Код для работы с формой.


<?php
echo "<form action='test.php' method='post'>
Обращение
<select name=field1 size=1>
<option value=1>Мистер</option>
<option value=2>Миссис</option>
</select><br>
Имя
<input type=text name=name><br>
Возраст<br>
<input type=radio name=age value=1> от 0 до 25 <br>
<input type=radio name=age value=2> от 25 до 55 <br>
<input type=radio name=age value=3> от 55 до 100 <br>
<input type=hidden name=flag value=1>
<input type=submit value=применить>
</form><br><br>"
;

if(isset(
$_POST['field1']) and isset($_POST['name']) and isset($_POST['age']))
{
    
$out=$_POST['name'];
    if(
$_POST['age']==1)
    {
        if(
$_POST['field1']==1$out.=" - мальчик";
        if(
$_POST['field1']==2$out.=" - девочка";
    }
    if(
$_POST['age']==2)
    {
    if(
$_POST['field1']==1$out.=" - мужчина";
        if(
$_POST['field1']==2$out.=" - женщина";
    }
    if(
$_POST['age']==3)
    {
    if(
$_POST['field1']==1$out.=" - дедушка";
        if(
$_POST['field1']==2$out.=" - бабушка";
    }
    echo 
"$out";
}
else echo 
"Не заполнены поля ввода данных.";
?>


Код для работы с базой данных.


<?php
$server
="local";
$user="bg_login";
$passwd="bd_pass";
$db="bd_one";

$FirstName="Somebody";

if(!
mysql_connect($server,$user,$passwd))
{
    echo 
"ERROR";
    exit;
}
mysql_select_db($db);
    
$query="select LastName,Phone_id from tbName where FirstName='$FirstName'";
$r1=mysql_query($query);
for(
$i=1;$i<=mysql_num_rows($r1);$i++)
{
    
$f1=mysql_fetch_array($r1);
    echo 
$f1[LastName];
    echo 
" - ";
    
    
$query="select PhoneNumber from tbPhone where Phone_id='$f1[Phone_id]'";
    
$r2=mysql_query($query);
    
$NumPhones=mysql_num_rows($r2);
    if(
$NumPhones)
    for(
$j=1;$j<=$NumPhones;$j++)
    {
        
$f2=mysql_fetch_array($r2);
        echo 
$f2[PhoneNumber];
        echo 
",";
        }
    else echo 
"12345";
    echo 
"<br>";
}
?>

   
 
 автор: Mesm   (03.05.2006 в 20:14)   письмо автору
 
   для: DarkLord   (02.05.2006 в 09:31)
 

Это ты на Белорусскую на собеседование ездил :) ? Я тоже делал это задание только я понял что здесь 2 задачи - первая со скриптом мальчик/мистер/дедушка, а вторая написать sql запрос если интересно как я делал - пиши в аську 2 5 4 2 1 9

   
Rambler's Top100
вверх

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