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

Форум PHP

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

 

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

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

тема: Извлечение даты из формы: необходимо правильное решение!
 
 автор: Vados   (17.08.2006 в 13:48)   письмо автору
 
 

Всем привет!
Вот столкнулся с такой проблемой и пока не знаю её решения.
У меня есть форма для заполнения, в которой участвует дата, которую нужно указать в след. формате: месяц/день/год. Работа осуществляется с СУБД MS SQL. Так вот скажите, как мне необходимо правильно написать синтаксис, чтобы я смог реализовать возможность передачи значения из переменных в БД.
Вот пример данного кода:

<tr><td><p class=zag2>Дата инст. ПО:</td><td><input size=1 maxlength=2 class=input type=text name=insdate value=`<?php echo $insdate?>`>
<input size=1 maxlength=2 class=input type=text name=insdate value=`<?php echo $insdate?>`>
<input size=3 maxlength=4 class=input type=text name=insdate value=`<?php echo $insdate?>`></td></tr>

У меня в форме три поля: для месяца/дня/года, но переменная со значением то передаётся одна $insdate.Не получится так, что переменная просто передаст последнее значение, то есть в моём случае год?
Как с этим бороться?
Или это решается посредством написания хранимых процедур в СУБД MS SQL?
Заранее спасибо!

   
 
 автор: P@Sol   (17.08.2006 в 14:14)   письмо автору
 
   для: Vados   (17.08.2006 в 13:48)
 

<td><input size=1 maxlength=2 class=input type=text name=month value=`<?=$insdate[0];?>`>
<input size=1 maxlength=2 class=input type=text name=day value=`<?=$insdate[1]; ?>`>
<input size=3 maxlength=4 class=input type=text name=year value=`<?=$insdate[2]; ?>`></td>


перед тем как заносить $insdate=$month."/".$day."/".$year;
а перед выводом $insdate=explode("/",$insdate);

   
 
 автор: ec_stasis   (17.08.2006 в 15:30)   письмо автору
 
   для: Vados   (17.08.2006 в 13:48)
 

Ну правильно, в одна переменная может храниьт только одно значение.
Или обзывай по-разному поля - получишь три разных переменных, или, назови их name="insdate[]" - получишь массив со значениями всех трех полей.

   
 
 автор: Vados   (18.08.2006 в 15:47)   письмо автору
 
   для: ec_stasis   (17.08.2006 в 15:30)
 

Хорошо, но где мне правильно дописать код:

$instdate=($month."/".$day."/".$year);

Так как данная переменная $instdate передается для проверки на вводимость полей!
Вот в таком виде:

if (!$_POST['instdate']) 
  {
  echo "<b class=text>";echo 'Не введена дата установки сервера!';echo "</b>";exit;
  }

Как правильно передать значение массива, чтобы всё работало?
Заранее спасибо!

   
 
 автор: P@Sol   (18.08.2006 в 16:43)   письмо автору
 
   для: Vados   (18.08.2006 в 15:47)
 

в данном случае лучше сделать так:

<?
if (!checkdate($month,$day,$year)) echo "Введена не коректная дата";

   
 
 автор: Vados   (18.08.2006 в 17:02)   письмо автору
 
   для: P@Sol   (18.08.2006 в 16:43)
 

Хорошо, а как же значение month, day, year - передать в БД для записи?

   
 
 автор: Vados   (19.08.2006 в 10:30)   письмо автору
 
   для: Vados   (18.08.2006 в 17:02)
 

Ребята, кто-нибудь помогите! Не могу никак сделать!

   
 
 автор: P@Sol   (19.08.2006 в 11:49)   письмо автору
 
   для: Vados   (19.08.2006 в 10:30)
 

$insdate=$month."/".$day."/".$year и в бд записываешь уже это значение

   
 
 автор: Vados   (19.08.2006 в 14:26)   письмо автору
 
   для: P@Sol   (19.08.2006 в 11:49)
 

Так у меня ничего не выходит, так как после того, как я заполнил необходимые поля, а потом мне необходимо при передаче скрипту который обрабатывает передать эти параметры на проверку заполнений данных в форме. Как это сделать?
Я к примеру вообще проверяю вводимость данных таким образом:

  if (!$_POST['instdate']) 
  {
  echo "<b class=text>";echo 'Не введен номер шкафа!';echo "</b>";
  exit();
  }

Но так у меня ничего не передаётся, то есть не передаётся ни одно значение!
Помогите!
Спасибо!

   
 
 автор: Vados   (22.08.2006 в 16:20)   письмо автору
 
   для: Vados   (19.08.2006 в 14:26)
 

Ребята, всем привет!
Всё же так ничего не получилось, так как я не совсем понимаю, как мне правильно передать параметры массива? До передачи всех параметров - скрипту который обрабатывает значение переменных или сразу после того, как пользователь заполнит три поля: dd/mm/yyyy
Помогите разрулить ситуацию!
Заранее спасибо!

   
 
 автор: motoP@Sol   (22.08.2006 в 17:56)
 
   для: Vados   (22.08.2006 в 16:20)
 

приведите код, как у вас сделано. проще будет беседовать

   
 
 автор: Vados   (22.08.2006 в 18:47)   письмо автору
 
   для: motoP@Sol   (22.08.2006 в 17:56)
 

Хорошо, смотрите, вот код:

<?php
  
// Устанавливаем соединение с базой данных
  
require_once("config.php");
  
$title=$titlepage "Добавление нового сервера";
  
$head="Content-type: text/html; charset=koi8-r \r\n";
  include 
"../header.php";  
  if(!isset(
$action)) $action "addsrv.php";
?>
<html>
<head><link rel='stylesheet' type='text/css' href='../images/style.css'>
<meta http-equiv="content-type" content="text/html; charset=windows-1251"></head>
<table><tr><td>
<p class=boxmenu><a class=menu href="admin.php">Вернуться на главную страницу администрирования</a></p><br>
</td></tr></table>
<table>
<form action=<?php echo $action?> method=post>
<table border="0"> 
<tr><td><p class=zag2>Адрес:</td><td><input size=50 class=input type=text name=adress value='<?php echo $adress?>'></td></tr>
<tr><td><p class=zag2>№ серверной:</td><td><input size=20 class=input type=text name=srvroom value='<?php echo $srvroom?>'></td></tr>
<tr><td><p class=zag2>Шкаф:</td><td><input size=13 class=input type=text name=shell value='<?php echo $shell?>'></td></tr>
<tr><td><p class=zag2>Дата установки:</td><td><input size=1 maxlength=2 class=input type=text name=month value='<?php echo $instdate[0]; ?>'>&nbsp;
<input size=1 maxlength=2 class=input type=text name=day value='<?php echo $instdate[1]; ?>'>&nbsp;
<input size=3 maxlength=4 class=input type=text name=year value='<?php echo $instdate[2]; ?>'></td></tr>

//и так далее.... 

</table>
<table border="0">
<td><input type=submit  method=post value='Сохранить' name="send" accept=></td>&nbsp;<td><input type="reset" value='Сброс'></td>
</table>
</form>
</table>
</html>


А потом, я передаю параметры обработчику, вот код обрабочика:

<?php
  
// Осуществляем соединение с базой данных
  
require_once("config.php");

  
// Проверим - достаточно ли информации для занесения в базу данных
  
if (!$_POST['srv']) 
  {
links("<b class=text>Не введено имя сервера</b>");}
  if (!
$_POST['ip1']) 
  {
links("<b class=text>Не введен IP адрес</b>");}
  if (!
$_POST['mac1']) 
  {
links ("<b class=text>Не введен MAC адрес</b>");}
  if (!
$_POST['dns1']) 
  {
links ("<b class=text>Не введено имя DNS</b>");}
// и так далее.....

  // Заменяем одинарные кавычки
  
$_POST['note'] = str_replace("'","`",$_POST['note']);
  
$_POST['adress'] = str_replace("'","`",$_POST['adress']);
  
$qqq 0;
 
  
// Формируем запрос
$storeProc mssql_init('inventory.dbo.SetData');
mssql_bind($storeProc,"@srv",$_POST['srv'],SQLVARCHAR);
mssql_bind($storeProc,"@ip1",$_POST['ip1'],SQLVARCHAR);
mssql_bind($storeProc,"@mac1",$_POST['mac1'],SQLVARCHAR);
mssql_bind($storeProc,"@dns1",$_POST['dns1'],SQLVARCHAR);
mssql_bind($storeProc,"@ip2",$_POST['ip2'],SQLVARCHAR);
//и так далее......

  
if($result) {
    echo 
"<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=test.php'>
          </HEAD></HTML>"
;
  }
  else echo 
"Ошибка при добавлении сервера";
  function 
links($msg)
  {
    echo 
"<p>".$msg."</p>";
    echo 
"<p><a href=# onClick='history.back()'>Вернуться к правке формы</a></p>";
    echo 
"<p><a href=admin.php>Вернуться на главную страницу администрирования</a></p>";
    exit();
  }
?>

   
 
 автор: P@Sol   (23.08.2006 в 09:49)   письмо автору
 
   для: Vados   (22.08.2006 в 18:47)
 

что то, типа, того:

//файл с формой
<?php 
  
// Устанавливаем соединение с базой данных 
  
require_once("config.php"); 
  
$title=$titlepage "Добавление нового сервера"
  
$head="Content-type: text/html; charset=koi8-r \r\n"
  include 
"../header.php";   
  if(!isset(
$action)) $action "addsrv.php"
$insdate=explode("/",$insdate); //добавить эту строчку
?> 



//обработчик
<?php 
  
// Осуществляем соединение с базой данных 
  
require_once("config.php"); 

  
// Проверим - достаточно ли информации для занесения в базу данных 
  
if (!$_POST['srv'])  
  {
links("<b class=text>Не введено имя сервера</b>");} 
  if (!
$_POST['ip1'])  
  {
links("<b class=text>Не введен IP адрес</b>");} 
  if (!
$_POST['mac1'])  
  {
links ("<b class=text>Не введен MAC адрес</b>");} 
  if (!
$_POST['dns1'])  
  {
links ("<b class=text>Не введено имя DNS</b>");} 
 if (!
checkdate($_POST['$month'],$_POST['$day'],$_POST['$year'])) echo "Введена не коректная дата";  //вроде так

// и так далее..... 

    
  // Формируем запрос 
$storeProc mssql_init('inventory.dbo.SetData'); 
mssql_bind($storeProc,"@srv",$_POST['srv'],SQLVARCHAR); 
mssql_bind($storeProc,"@ip1",$_POST['ip1'],SQLVARCHAR); 
mssql_bind($storeProc,"@mac1",$_POST['mac1'],SQLVARCHAR); 
mssql_bind($storeProc,"@dns1",$_POST['dns1'],SQLVARCHAR); 
mssql_bind($storeProc,"@ip2",$_POST['ip2'],SQLVARCHAR); 
mssql_bind($storeProc,"@ip2",$_POST['$month']."/".$_POST['$day']."/".$_POST['$year'],SQLVARCHAR); //и так ток я не видел таких запросов..второй параметр не знаю какой
//и так далее...... 
?> 

   
Rambler's Top100
вверх

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