Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите найти ошибку [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
evgenijj
Отправлено: 22 Ноября, 2006 - 08:35:20
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Записывать в БД еще и путь до файла - не очень хорошая идея. Это избыточная информация. Имени файла вполне достаточно. Если ты решишь изменить структуру директорий - создашь себе дополнительные проблемы.
Если в БД записано только имя файла, т.е. $par['image']="myimage.gif"
CODE (text):
скопировать код в буфер обмена
  1.  
  2. if(!empty($par['image']) && file_exists("./files/".$par['image']))
  3. {
  4.     $image = "<img src='./files/".$par['image']."' alt=''/>";
  5. }
  6.  

P.S. Не совсем понятно, а зачем изображения для каталога хранить в папке admin? Ведь если это каталог, то логично предположить, что его будут просматривать посетители. Я бы понял, если бы изображения хранились в папке http://myserver[dot]com/files/ В книге Кузнецова, по-моему, так и сделано.
 
 Top
Antikiller
Отправлено: 22 Ноября, 2006 - 09:42:19
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2006  


Помог: 0 раз(а)




гм не подумал...если хранить в админе то при выводе юзер их не увидет...
хм сделал так...при выводе каталога в админке там пустое место....
 
 Top
evgenijj
Отправлено: 22 Ноября, 2006 - 11:23:24
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Antikiller пишет:
хм сделал так...при выводе каталога в админке там пустое место....

Сделал так, и все равно не работает?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. ...
  3.  while($par = mysql_fetch_array($prt))
  4. {
  5.     ...
  6.     $image = "Нет изображения";
  7.     if(!empty($par['image']) && file_exists("./files/".$par['image']))
  8.     {
  9.         $image = "<img src='./files/".$par['image']."' alt=''/>";
  10.     }
  11.     ...
  12.     echo $image;
  13.     ...
  14. }
  15.  

Тогда давай смотреть html. Здесь вроде все правильно.
 
 Top
Antikiller
Отправлено: 30 Ноября, 2006 - 04:18:41
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2006  


Помог: 0 раз(а)




чёрт за время отпуска забыл что делал..
 
 Top
Antikiller
Отправлено: 30 Ноября, 2006 - 07:33:10
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2006  


Помог: 0 раз(а)




Вообщем всё вышло...тока теперь есть такой вопрос при исправлении
вот идёт форма исправления
Цитата:
<?php
require_once("config.php");
$title = "Редактирование данных о квартире";
$batton = "Исправить";
$action = "editprod.php";
$query = "SELECT * FROM product
WHERE id_product=". $_GET['id_product'];
$pro = mysql_query($query);
if (!$pro) puterror("Ошибка при исправлении продукции");
$product = mysql_fetch_array($pro);
$name = $product['name'];
$artikyl= $product['artikyl'];
$razmer=$product['razmer'];
$ypakovka=$product['ypakovka'];
$image=$product['image'];
$pos=$product['pos'];
if($product['hide'] == 'show') $showhide = "checked";
else $showhide ="";
include "addprodform.php";
?>


а вот проверка...

Цитата:
equire_once("config.php");
if(empty($_POST['image'])) links($_POST['id_catalog'], "Отсутствует фотография");

$query = " UPDATE product SET
name='".$_POST['name']."',
artikyl='".$_POST['artikyl']."',
razmer='".$_POST['razmer']."',
ypakovka='".$_POST['ypakovka']."',
image='".$_POST['image']."',
pos=".$_POST['pos'].",
hide='".$_POST['showhide']."',
WHERE id_product=".$_POST['id_product'];
if(empty($_POST['image'])) links($_POST['id_catalog'], "Отсутствует фотография");
if (!empty($_FILES['image']['tmp_name']))
{
$query = "SELECT image FROM product
WHERE id_catalog=".$_POST['id_catalog'];
$pct = mysql_query($query);
if(!$pct) links($_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 links($_POST['id_catalog'], "Ошибка при обновлении продукции");
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&id_part=$id_part>Администрирование каталога продукции</a></p>";
exit();
}
?>


я понимаю что тут есть глюк...вот как с ним побороться?
 
 Top
evgenijj
Отправлено: 30 Ноября, 2006 - 10:21:33
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Antikiller пишет:

я понимаю что тут есть глюк...вот как с ним побороться?

Глюк - это мягко сказано.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // Форма для редактирования товара
  4.  
  5. require_once("config.php");
  6. $title = "Редактирование данных о товаре";
  7. $button = "Исправить";
  8. $action = "updateprod.php";
  9. $query = "SELECT * FROM product WHERE id_product=".$_GET['id_product'];
  10. $pro = mysql_query($query);
  11. if (!$pro) puterror("Ошибка при обращении к БД");
  12. $product = mysql_fetch_array($pro);
  13. // Наименование товарной позиции
  14. $name = $product['name'];
  15. // Код (артикул) товара
  16. $code = $product['code'];
  17. // Упаковка
  18. $packing = $product['packing'];
  19. // Изображение товара -
  20. if ( !empty($product['image']) and is_file("../files/images/catalog/products/".$product['image']) )
  21.         $image = "<a href='/files/images/catalog/products/".$product['image']."' target='_blank'>".$product['image']."</a>";
  22. else
  23.         $image = "Изображение не загружено";
  24. // Доступна или нет товарная позиция для просмотра посетителями сайта
  25. if( $product['showhide'] == 'show')
  26.         $showhide = "checked";
  27. else
  28.         $showhide ="";
  29.  
  30. ?>
  31.  
  32. <form enctype="multipart/form-data" action="<? echo $action; ?>" method="POST">
  33. <table>
  34. <tr>
  35.         <td align="right">Наименование:</td>
  36.         <td><input type="text" name="name" value="<? echo $name; ?>" maxlength="250"></td>
  37. </tr>
  38. <tr>
  39.         <td align="right">Код (артикул):</td>
  40.         <td><input type="text" name="code" value="<? echo $code; ?>" maxlength="30"></td>
  41. </tr>
  42. <tr>
  43.         <td align="right">Упаковка:</td>
  44.         <td><input type="text" name="packing" value="<? echo $packing; ?>" maxlength="250"></td>
  45. </tr>
  46. <tr>
  47.         <td align="right">Публиковать:</td>
  48.         <td><input type="checkbox" name="showhide" <? echo $showhide; ?>/></td>
  49. </tr>
  50. <tr>
  51.         <td align="right">Изображение:</td>
  52.         <td><input type="file" name="image"/><br/><? echo $image; ?></td>
  53. </tr>
  54. <tr>
  55.         <td>&nbsp;</td>
  56.         <td>
  57.         <input type="submit" value="<? echo $button ?>"/>&nbsp;<input type="button" value="Отмена" onClick="history.back();"/> 
  58.         </td>
  59. </tr>
  60. </table>
  61. <input type="hidden" name="id_product" value=<?PHP echo $_GET['id_product']; ?>>
  62. <input type="hidden" name="id_catalog" value=<?PHP echo $_GET['id_catalog']; ?>>
  63. </form>
  64.  


(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. // Обновление данных о товаре
  4.  
  5. require_once("config.php");
  6.  
  7. // Если поле "Наименование товара" пустое
  8. if ( empty($_POST["name"]) ) links($_POST['id_catalog'], "Не заполнено поле 'Наименование товара'");
  9.  
  10. // Обрезаем лишние пробелы
  11. $name    = trim( $_POST["name"] );
  12. $code    = trim( $_POST["code"] );
  13. $packing = trim( $_POST["price"] );
  14.  
  15. // Обрезаем переменные до длины, указанной в параметре maxlength тега input
  16. $name    = substr( $name, 0, 250 );
  17. $code    = substr( $code, 0, 30 );
  18. $packing = substr( $price, 0, 250 );
  19.  
  20. $name    = mysql_escape_string( $name );
  21. $code    = mysql_escape_string( $code );
  22. $packing = mysql_escape_string( $packing );
  23.  
  24. // Доступен или нет товар для просмотра посетителям сайта      
  25. if ( isset($_POST["showhide"]) )
  26.         $showhide = "show";
  27. else
  28.         $showhide = "hide";
  29.  
  30. // Файл изображения - удаляем старое изображение и загружаем новое
  31. // Получаем имя файла изображения
  32. $query = "SELECT image FROM product WHERE id_product=".$_POST['id_product'];
  33. $res = mysql_query( $query );
  34. $image = mysql_result( $res, 0, 0 );
  35. // Директория для хранения файлов изображений для товарных позиций
  36. $uploaddir = "../files/images/catalog/products/";
  37. // Если пользователь загружает файл изображения
  38. if ( !empty( $_FILES['image']['name'] )
  39.           and preg_match('/.(jpg|jpeg|jpe|gif|pcx|png|bmp)$/i', $_FILES["image"]["name"]) )
  40. {
  41.         // Удаляем старое изображение, если оно есть   
  42.         if( !empty( $image ) and is_file( $uploaddir.$image ) ) unlink( $uploaddir.$image );
  43.        
  44.         // Загружаем новое изображение
  45.         if ( @move_uploaded_file($_FILES["image"]["tmp_name"], $uploaddir.$_FILES["image"]["name"]) )
  46.         {
  47.                 // Загрузка прошла успешно - обновляем в БД имя файла изображения
  48.                 $img = ", image='".$_FILES["image"]["name"]."'";
  49.         }
  50.         else
  51.         {
  52.                 // Ошибка при загрузке - записываем в БД пустую строку
  53.                 $img = ", image=''";
  54.         }
  55. }
  56. else
  57. {
  58.         // Если пользователь не выбрал файл для загрузки
  59.         $img = "";
  60. }
  61.        
  62. $query = "UPDATE product SET
  63.                   name='".$name."',
  64.                   code='".$code."',
  65.                   packing='".$packing."',
  66.                   showhide='".$showhide."'
  67.                   ".$img."
  68.                   WHERE id_product=".$_POST['id_product'];
  69.                  
  70. if( mysql_query($query) )
  71. {
  72.         echo "<HTML><HEAD>
  73.         <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
  74.         </HEAD></HTML>";
  75. }
  76. else
  77. {
  78.         links($_POST['id_catalog'], "Ошибка при обновлении продукции");
  79. }
  80.  
  81. function links( $id_catalog, $msg )
  82. {
  83.         echo "<p >".$msg."</p>";
  84.         echo "<p ><a href=# onClick='history.back()'>Вернуться к правке продукта</a></p>";
  85.         echo "<p ><a href=index.php?id_parent=".$id_catalog."'>Администрирование каталога продукции</a></p>";
  86.         exit();
  87. }
  88.  
  89. ?>
  90.  
 
 Top
Antikiller
Отправлено: 30 Ноября, 2006 - 10:44:45
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Нояб. 2006  


Помог: 0 раз(а)




ГМ об этом я даже не задумывался....спасибо большое!
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB