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

Форум MySQL

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

 

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

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

тема: Скрипт "Каталог"
 
 автор: Vova   (27.09.2005 в 15:39)
 
 

У Вас есит скрипт - "Каталог", там где добавляются квартиры - риэлторские услуги. Некоторых поля таблицы product - допустим square_j имеют формат tinyint(4). Соответственно, можно вставлять только цифры. Я изменил в mysql формат поля square_j на tinytext, чтобы можно было бы добавлять тект, но ничего не изменилось. В случае добавления текста скрипт пишет - "Ошибка добавления продукции" из файла addprod.php, в случае добавления цифр всё проходит нормально, хотя формат поля, как я уже говорил, изменил. Т.к sql запрос не отработался. В чём может быть причина? Вроде всё посмотрел по файлам скрипта, ничего не нашёл на ограничение добавление текста для square_j.

   
 
 автор: napTu3aH   (27.09.2005 в 16:20)   письмо автору
 
   для: Vova   (27.09.2005 в 15:39)
 

> Я изменил в
>mysql формат поля square_j на tinytext, чтобы можно было бы
>добавлять тект, но ничего не изменилось.
А как вы изменяли тип поля на текстовый?
ALTER TABLE $table CHANGE 'square_i' 'square_i' TINYTEXT 

но этот запрос у меня срабатывает только если в поле нет записей

   
 
 автор: Vova   (27.09.2005 в 16:47)
 
   для: napTu3aH   (27.09.2005 в 16:20)
 

Изменил я его с помощью phpMyAdmin.
Там есть такая кнопочка "изменить". :)
Нажимаешь на неё и меняешь поле как угодно.

Также пробовал менять когда закачивал дамп в базу. В ручную прописывал вместо
'square_j' smallint(6) NOT NULL default '0',


'square_j' tinytext NOT NULL,


Но также не хочет выполнять запрос, если вставляю текст. А с цифрами всё в порядке проходит. Значит всё дело всё же в формате поля? Может phpMyAdmin как-то глючно меняет или в чём может быть дело?

   
 
 автор: napTu3aH   (27.09.2005 в 16:59)   письмо автору
 
   для: Vova   (27.09.2005 в 16:47)
 

скорее всего перед заносом в БД пхп проверяет вводимые пользователем данные, и если это не число выдает ошибку. У меня нет под рукой "каталога" напишите кусочек кода с формой которая принимает square_j и кусочек с вводом square_j в БД

   
 
 автор: Anton   (27.09.2005 в 17:27)
 
   для: napTu3aH   (27.09.2005 в 16:59)
 

Это форма, куда вводятся данные

<form action=<?php echo $action?> method=post>
<table>
...
<tr><td><p class=zag2>пл(Ж)</td><td><input size=61 class=input type=text name=square_j value='<?php echo $square_j?>'></td></tr>
....
</table>
</form>

А это полный текст файла addprod.php


// Осуществляем соединение с базой данных
  require_once("../config.php");
  // Проверим - достаточно ли информации для занесения в базу данных
  if(!isset($_POST['address'])) links($_POST['id_catalog'], "Отсутствует адрес");
  if(!isset($_POST['square_o'])) links($_POST['id_catalog'], "Не введена площадь(O)");
  if(!isset($_POST['square_j'])) links($_POST['id_catalog'], "Не введена площадь(Ж)");
  if(!isset($_POST['square_k'])) links($_POST['id_catalog'], "Не введена площадь(К)");
  if(!isset($_POST['floorhouse'])) links($_POST['id_catalog'], "Не введена этажность дома");
  if(!isset($_POST['price'])) links($_POST['id_catalog'], "Не введена общая цена");
  if(!isset($_POST['pricemeter'])) links($_POST['id_catalog'], "Не введена цена квадратного метра");
  if(!isset($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция продукта");
  // Выясняем скрыта товарная позиция или нет
  if($_POST['hide'] == "on") $showhide = 'show';
  else $showhide = 'hide';
  // Заменяем одинарные кавычки
  $_POST['note'] = str_replace("'","'",$_POST['note']);
  $_POST['address'] = str_replace("'","'",$_POST['address']);
  
  // Формируем запрос
  $query = "INSERT INTO product VALUES (
            NULL,
            '".$_POST['note']."',
            '".$_POST['district']."',
            '".$_POST['address']."',
            ".$_POST['square_o'].",
            ".$_POST['square_j'].",
            ".$_POST['square_k'].",
            ".$_POST['rooms'].",
            ".$_POST['floor'].",
            ".$_POST['floorhouse'].",
            '".$_POST['material']."',
            '".$_POST['su']."',
            '".$_POST['balcony']."',
            ".$_POST['price'].",
            ".$_POST['pricemeter'].",
            '".$_POST['currency']."',
            '$showhide',
            ".$_POST['pos'].",
            ".$_POST['id_catalog'].")";
  if(mysql_query($query)) {
    echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
          </HEAD></HTML>";
          
  } else puterror("Ошибка при добавлении продукции");
  function links($id_catalog,$msg)
  {
    echo "<p>".$msg."</p>";
    echo "<p><a href=# onClick='history.back()'>Вернуться к правке продукта</a></p>";
    echo "<p><a href=index.php?id_parent=$id_catalog>Администрирование каталога продукции</a></p>";
    exit();
  }
?>

   
 
 автор: Anton   (27.09.2005 в 17:33)
 
   для: Anton   (27.09.2005 в 17:27)
 

Ещё вот что заметил:

при добавлении 111111111111111111111111111111111 в изначально текстовое поле tinytext оно отображается так же - 111111111111111111111111111111111

при добавлении 111111111111111111111111111111111 в изначально поле smallint(6) оно отображается как 32767

и при добавление 111111111111111111111111111111111 в измененное поле smallint(6) на tinytext оно отображается так 111111111111111120000000000000000.00 (кстати, текст тут не вставляется).

Значит дело всё же в формате поля?

   
 
 автор: Vova   (27.09.2005 в 18:36)
 
   для: Anton   (27.09.2005 в 17:33)
 

Сорри, перепутал ники. Видимо надо зарегиться

   
 
 автор: cheops   (27.09.2005 в 22:48)   письмо автору
 
   для: Anton   (27.09.2005 в 17:27)
 

Обратите внимание на SQL-запрос
<?php
  
// Формируем запрос 
  
$query "INSERT INTO product VALUES ( 
            NULL, 
            '"
.$_POST['note']."', 
            '"
.$_POST['district']."', 
            '"
.$_POST['address']."', 
            "
.$_POST['square_o'].", 
            "
.$_POST['square_j'].", 
            "
.$_POST['square_k'].", 
            "
.$_POST['rooms'].", 
            "
.$_POST['floor'].", 
            "
.$_POST['floorhouse'].", 
            '"
.$_POST['material']."', 
            '"
.$_POST['su']."', 
            '"
.$_POST['balcony']."', 
            "
.$_POST['price'].", 
            "
.$_POST['pricemeter'].", 
            '"
.$_POST['currency']."', 
            '
$showhide', 
            "
.$_POST['pos'].", 
            "
.$_POST['id_catalog'].")";
?>

Все текстовы поля заключены в одинарные кавычки, а числовые используются без них - вам просто нужно добавить одинарные кавычки для поля square_j
<?php
  
// Формируем запрос 
  
$query "INSERT INTO product VALUES ( 
            NULL, 
            '"
.$_POST['note']."', 
            '"
.$_POST['district']."', 
            '"
.$_POST['address']."', 
            "
.$_POST['square_o'].", 
            '"
.$_POST['square_j']."', 
            "
.$_POST['square_k'].", 
            "
.$_POST['rooms'].", 
            "
.$_POST['floor'].", 
            "
.$_POST['floorhouse'].", 
            '"
.$_POST['material']."', 
            '"
.$_POST['su']."', 
            '"
.$_POST['balcony']."', 
            "
.$_POST['price'].", 
            "
.$_POST['pricemeter'].", 
            '"
.$_POST['currency']."', 
            '
$showhide', 
            "
.$_POST['pos'].", 
            "
.$_POST['id_catalog'].")";
?>

   
 
 автор: Vova   (28.09.2005 в 11:30)   письмо автору
 
   для: cheops   (27.09.2005 в 22:48)
 

Да, поставил одинарные кавычки и текст ввёлся! Сэнкс.

А не подскажите ещё по одному вопросу, тоже связанному с типом полей.
Допустим я хочу в тоже самое поле square_j вводить дату, но при открытии файла addprodform.php (форма для ввода данных) в поле даты square_j по умолчанию стояла текущая дата, например 28.09.2005. Как это можно реализовать?

   
 
 автор: Loki   (28.09.2005 в 13:54)   письмо автору
 
   для: Vova   (28.09.2005 в 11:30)
 


<?
echo "<input type=text name=date value=".date("d.m.Y",time()).">";
?>

   
 
 автор: Vova   (28.09.2005 в 16:54)   письмо автору
 
   для: Loki   (28.09.2005 в 13:54)
 

А как мне это прописать применительно к полю square_j?
Вот код для этого поля, куда я ввожу в ручную дату. Как вышеописанный код применить, чтобы по умолчании там стояла текущая дата.

<td><p class=zag2>Дата</td><td><input size=20 class=input type=text name=square_j value='<?php echo $square_j?>'></td>

   
 
 автор: Loki   (28.09.2005 в 17:27)   письмо автору
 
   для: Vova   (28.09.2005 в 16:54)
 


<td><p class=zag2>Дата</td><td><input size=20 class=input type=text name=square_j value='<?=date("d.m.Y",time()) ?>'></td> 

   
 
 автор: Vova   (28.09.2005 в 17:55)   письмо автору
 
   для: Loki   (28.09.2005 в 17:27)
 

Всё классно работает! Спасибо :).

Хотел бы задать ещё такой вопрос всё по тому же скрипту Каталог. Вот в нём есть поле balcony формата enum('balcony', 'loggia'). Соответственно может принимать два значения 'balcony'=балкон и 'loggia'=лоджия. В коде это выглядит так

<?
switch ($par['balcony'])
          {
            case 
'balcony':
              
$balcony "балкон";
              break;
            case 
'loggia':
              
$balcony "лоджия";
              break;
          }
?>


Каким образом можно сделать, чтобы ячейка в выводимой таблице допустим со значением балкон выводилось синим цветом, а ячейке со сзначением лоджия - желтым. Пытался как-то прописать css, например <a class=zag2> где .zag2{font-size: 13px; color: #264769; font-weight: bold}, но что-то ни как не получается. Как можно сделать?

   
 
 автор: Atom   (28.09.2005 в 23:45)   письмо автору
 
   для: Vova   (28.09.2005 в 17:55)
 


<? 
switch ($par['balcony']) 
          { 
            case 
'balcony'
              
$balcony "балкон";
              
$color синий
              
break; 
            case 
'loggia'
              
$balcony "лоджия";
              
$color желтый
              
break; 
          } 
?>


И в ячейке бэкграунд делаешь равным $color.

   
 
 автор: Vova   (07.10.2005 в 12:34)   письмо автору
 
   для: Atom   (28.09.2005 в 23:45)
 

Что-то не выходит. Сделал так

<?
switch ($par['balcony'])
          {
            case 
'balcony':
              
$balcony "балкон";
              
$color "blue";
              break;
            case 
'loggia':
              
$balcony "лоджия";
               break;
          }
?> 

А вот как правильно определить переменную $color , что она является бэкграундом?


$color = {background-color: #75D1FA;}

Так, что-то не получается

   
Rambler's Top100
вверх

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