-
php классы
Доброво времени суток . хотел вот задать один вопросик, глупый до ужоса , объясните плиз , уже несколько дней читаю мануалы ,Всеравно не понимаю((
есть два поля ввода, хчу сделать -если в полях ничего не вводили то FirstName.SecondName если же ввели то выводим введнное. обработка в там же
если правильно понял делаем через классы
<form action="" method="get">
<input name="FirstName" type="text" size="40">
<input name="SecondName" type="text" size="40">
<input type="submit" value="Отправить!">
</form>
<?php
class sampl
{
var $FirstName=5;
var $SecondName =8 ;
};
function summa($FirstName,$SecondName)
{
return echo $this->$FirstName.$this->$$SecondName // я правльно понял что если не задано то мы возмем значение SecondName и занчения FirstName которые в var (e)
}
echo $FirstName.var $SecondName ; // выводим при ввденых значения полей
?>
только вот оно шибки выдает и не получается жедаемого результата.
Буду длагодарен за любую помощь
-
-
Тебе здесь пока классы не нужны. Когда к ним доберёшься — читай/учи сразу про пятый пхп.
Все переменные, которые приходят из форм или адресной строки (определённые после знака вопроса) определены в суперглобальном массиве $_REQUEST.
Например, если у тебя адрес вида: [url]http://example.com/my.php?first_name=foo[/url]
тогда в скрипте ты можешь получить переменную first_name так:
if (isset($_REQUEST['first_name']) {
$first_name = $_REQUEST['first_name']; // по-хорошему здесь нужно сделать валидацию
} else {
$first_name = 'No name'; // значение по умолчанию
}
Так же имей в виду, что данные могут быть оправлены GET-ом и POST-ом, а так же могут быть получены из COOKIE — для всех этих «массивов» тоже есть эквиваленты (и они же объеденены в массиве $_REQUEST).
-
Чёто я не понял разделения логики.... При данном коде есть 2 варианта, или проверять JS на месте, или проверять PHP но только после REQUEST, тоесть после отправки формы на сервак.... если форма ушла на сервак, то обращаемся к её елементам $_POST['FirstName'](ну или $_GET, в зависимости от того что стоит в method="" при описании самой формы).
-
Главный совет уже прозвучал. Нужно начать с простого и не пытаться использовать ООП просто ради того чтобы использовать. Сначала изучить общие концепции пхп (обработка запросов, сессии, файловая система), а потом уже почитать про ООП и про реализацию в пхп
-
Спасибки , приму к сведенью
-
[QUOTE=Djeksan;5267503]...
function summa ($FirstName,$SecondName)
{
return echo $this->$FirstName.$this->$$SecondName // я правльно понял что если не задано то мы возмем значение SecondName и занчения FirstName которые в var (e)
}
echo $FirstName.var $SecondName ; // выводим при ввденых значения полей
?>
только вот оно шибки выдает и не получается жедаемого результата. .....
[/QUOTE]
Думаю что [B]$this->$FirstName[/B] неправильный вариан обращения к методу класса, нужно [B]$this->FirstName.[/B] Притом в разделе объявлений переменных лучше задать [CODE]protected FirstName;[/CODE] это будет лучше при дальнейшем использовании класса.
Для проверки ввода данных можно использовать JavaScript.
[PHP]
<script language="javascript">
function correct_form_data() {
var firstname = document.form1.firstname.value.length;
if(firstname==0) {
alert("Заполните поле firstname");
firstname = prompt("Укажите firstname");
} else
parent.location = "page.php&userfirstname="+firstname;
}
</script>
[/PHP]
Ну а в разметке задать:
[HTML]
<form name="form1">
<input type="text" name="firstname">
</form>
<a href="javascript:void(0)" onClick="correct_form_data()">Отправить</a>
[/HTML]
Все указаное выше - это как вариант, каждый может использовать свой подход.
Твой код в немного исправленном виде
[PHP]
class sampl
{
function summa($FirstName="Вася",$SecondName="Пупкин")
{
return $FirstName." ".$SecondName;
}
};
$sum = new sampl();
echo $sum->summa(); // тут значения по дефолту Вася Пупкин
echo $sum->summa("Василий","Иванович"); // здесь мы уже задаем
?>
[/PHP]
-
Большое спасибки Mихаил за исчерпывающий ответ
-