Как создать Location Number

Wladim

Новичок
Здравствуйте.
Помогите разобраться с проблемой.
Есть таблица в MySQL : date
Структура таблицы `date`

CREATE TABLE IF NOT EXISTS `date` (
`id` mediumint(11) NOT NULL AUTO_INCREMENT,
`data` date NOT NULL,
`loc_num` varchar(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=301 ;

--
-- Дамп данных таблицы `date`
--

INSERT INTO `date` (`id`, `data`, `loc_num`) VALUES
(1, '2011-04-09', '20120327000001'),
(2, '2011-04-09', '20120327000001');
При регистрации пользователя он заполняет стандартную форму и файл-обработчик должен создать Location Number (используя вспомогательные файлы options.php И functions.php) из "data" и "id":
PHP:
<?php
if (isset ($_GET['ID'])) {$id = $_GET['id'];}
if (!isset ($id)) {$id = 1;}
if (!preg_match("|^[\d]+$|", $id)) 
	 {
       exit ("<p>Неверный формат запроса! Проверьте URL!</p>");
       }
       // Подсоединяем файл соединения с БД
         include './blocks/db.php';
	      if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
	      if (!isset($cat)) {$cat = 1;}
         // ПОДКЛЮЧИТЬ ВСПОМОГАТЕЛЬНЫЕ ФАЙЛЫ options.php И functions.php для создания Location Number
	   include './libs/options.php';
           include './libs/functions.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Результат регистрации</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="98%" border="0" align="center" class="main_border">
 <!--Подключаем шапку сайта-->
 <tr><td align="center">
  <?php include './blocks/header.php'; ?>
 </td></tr>
 <tr><td>
  <table width="100%" border="0">
   <tr>      
   <!--Подключаем левый блок сайта-->  
    <?php include './blocks/lefttd.php'; ?>  
        <td width="709" valign="top" bgcolor="#ffffff">  
        <!--Подключаем центральный блок сайта-->         
        <p>
        <h3 align="center">Результат</h3>
        </p>
<?php
// СОЗДАНИЕ Location Number
 $zapros1="SELECT `id` FROM `date` WHERE `id` = '$id'";
  $result1=mysql_query($zapros1);
   if (!$result1) die('Invalid query: '.mysql_error());
    $id = mysql_result($result1, 0);
    // set_zero_avto - из functions.php, $DLIN_KEY - из options.php
     $data = date("Ymd");
     $id = set_zero_avto($id,$DLIN_KEY); // Дополнить цифру нулями слева
       $loc_num = $data.$id;
       // ЗАНЕСТИ Location Number В БАЗУ
       // Если существуют переменные
        if (isset($loc_num))
         {
         // то можно модифицировать(UPDATE) информацию в БД. 
          $result1 = mysql_query ("UPDATE `date` SET `loc_num` = '$loc_num' WHERE `id` = '$id'");
           if ($result1 == 'true')
            {
             echo "<p>Ваша заявка отправлена</p>";
            }
           else 
           {
            echo "<p>Вы не зарегистрировались - найди ошибку.</p>";
           }
         } 
         else 
          {
           echo "<p>Вы ввели не всю инфомацию";
          }
          // Записываем в базу 
           mysql_query("INSERT INTO `date` (`data`, `loc_num`) VALUES ('$data', '$loc_num')", $db);}
Вспомогательные файлы:
Файл options.php
PHP:
<?PHP
$SERVER="localhost";
$USER="wladifom";
$PASSWD="123456789";
$DB="service";

$DLIN_KEY = 6;
?>
Файл functions.php
PHP:
<?PHP
function set_zero_avto($wrem1,$wrem2) // Дополнить цифру нулями слева
{
 $len_wrem = strlen($wrem1);
 for($i=$len_wrem; $i<$wrem2; $i++)
 {
  $wrem1 = "0".$wrem1;
 }
 return $wrem1;
}
?>
Проблема в следующем: сколько бы раз не регистрировался пользователь - loc_num всегда получается с "id" = 1 (как видно из дампа данных таблицы `date`). А должно бы вместо 20120327000001 при "id" = 2 быть 20120327000002
 

zerkms

TDD infected
Команда форума
Какое значение переменной $id при каждой из регистраций?

PHP:
var_dump($id);
 

zerkms

TDD infected
Команда форума
zerkms, при каждой из регистраций значение переменной $id постоянно одно и то же: 1
И какие мысли насчёт этого? Если значение одно и то же, то проблему нужно искать в том коде, который это значение создаёт, а не который это значение (уже полученное НЕПРАВИЛЬНО) использует.
 

Wladim

Новичок
Как я понял, проблема в строке
PHP:
$zapros1="SELECT `id` FROM `date` WHERE `id` = '$id'";
а именно - в привязке SELECT `id` к реальной id которая присваивается при регистрации. А как эту ситуацию поправить - не знаю.
 

zerkms

TDD infected
Команда форума
Wladim
Нет, проблема не в этой строке. Вы же сами выше сказали, что в $id данные УЖЕ НЕПРАВИЛЬНЫЕ. Уберите из кода ВООБЩЕ ВСЕ ЗАПРОСЫ, и исправляйте id.
Как только научитесь генерировать ПРАВИЛЬНЫЙ $id - верните запросы.

Неужели это нелогично для вас?
 

Vin-Diesel

Новичок
Как я понял, проблема в строке
PHP:
$zapros1="SELECT `id` FROM `date` WHERE `id` = '$id'";
а именно - в привязке SELECT `id` к реальной id которая присваивается при регистрации. А как эту ситуацию поправить - не знаю.
я же написал, мне просто этот кусок кода понравился, к вашей проблеме он никакого отношения не имеет.
а код этот:
PHP:
$zapros1="SELECT `id` FROM `date` WHERE `id` = '$id'";
  $result1=mysql_query($zapros1);
   if (!$result1) die('Invalid query: '.mysql_error());
    $id = mysql_result($result1, 0);
по заданному $id получает такой же $id.
Зачем спрашивается?:)
 

Wladim

Новичок
Поменял код
PHP:
// СОЗДАНИЕ Location Number
 $zapros1="SELECT `id` FROM `date` WHERE `loga` = '$loga' AND `passw` = '$passw'";
  $result1=mysql_query($zapros1);
   if (!$result1) die('Invalid query: '.mysql_error());
    $id = mysql_result($result1, 0);
и теперь ошибка:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 11 in X:\home\service\www\add_avtor.php on line 178
 

A1x

Новичок
я так понял вы пытаетесь приспособить чей то готовый код (к тому же плохого качества)
причем реально не очень хорошо понимая что вы делаете

может лучше начать с прочтения чего то вроде http://phpclub.ru/detail/article/phpintro,
четко сформулировать свою задачу и попробовать решить ее самостоятельно?
 
Сверху