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 :: Обновление данных в БД через форму

 PHP.SU

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


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

> Описание: Обновление данных в БД через форму не обновляется одно поле таблицы
classic1698
Отправлено: 21 Февраля, 2014 - 17:13:56
Post Id


Новичок


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


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




Понимаю что где-то туплю уже 3 день, но уже устал тупить ;-\
Проблема следующая:
отправляю запрос обновить инфу в БД
форма:

PHP:
скопировать код в буфер обмена
  1. <form action="admin.php?view=update&t=biography&id=<?=$page_data['id'];?>" method="post" enctype="multipart/form-data" id="add-edit">
  2.  
  3. <label for="title"><strong><?=lang('section');?></strong></label>
  4. <input type="text" name="title" value="<?=$page_data['title']?>" size="60" />
  5.  
  6. <label><strong><?=lang('сontent');?>: (<i><?=lang('full_text');?></i>)</strong></label>
  7. <textarea name="text" cols="55" rows="11"><?=$page_data['text']?></textarea>
  8.  
  9. <label><strong><?=lang('photo');?>:</strong>&nbsp;</label>
  10. <a href="images/biography/<?=$page_data['bio_img1'];?>" rel="lightbox">
  11. <input type="image" name="thumbs_img1" src="<? if($page_data['thumbs_img1'] == '' || $page_data['thumbs_img1'] == 'nophoto.png'){echo "/images/biography/thumbs/nophoto.png";} else echo "images/biography/thumbs/".$page_data['thumbs_img1'];?>" class="thumbs_img" /></a>
  12.  
  13. <label class="uploads"><u><?=lang('upload_image');?> 1</u></label>
  14. <input type="file" name="filename1" />
  15.  
  16. // ну остальные не важно, там всё ОК!!!
  17.  
  18. <input type="hidden" name="title_url" value="<?=$page_data['title_url']?>"/>
  19. <input type="submit" name="save" value="<?=lang('save');?>" class="button" onclick="alert('<?=lang('info_uptade');?>');" />
  20. </form>


далее файл index.php: (там работаю через кайсы всё работает ОК, (поэтому не буду грузить ненужным приведу только кейс обновления)

PHP:
скопировать код в буфер обмена
  1.     case "update":
  2.           $count = 0;
  3.           $table = $_GET['t'];
  4.           $id = $_GET['id'];
  5.           foreach($_POST as $ArrKey => $ArrStr)
  6.           {
  7.                   $row[$count] = $ArrKey;
  8.                   $data[$count] = $_POST[$ArrKey];
  9.                   if($row[$count] == 'title_url') $data[$count] = translit($_POST['title']);
  10.                   $count++;
  11.           }
  12.           update_data($table, $id, $row, $data);
  13.           header("Location: admin.php?view=".$table);
  14.           break;


и в фале с function.php работаю с функцией загрузки и обработки фото, так как вся другая инфа полей обновляется без проблем и эта же функция при создании страницы по средствам формы отрабатывает на 100%.

PHP:
скопировать код в буфер обмена
  1. // Функция загрузки и изменения размера фото для разделов биографии
  2.  function bio_img1($table)
  3.    {
  4.      while ($_SERVER['REQUEST_METHOD'] == "POST" && $_FILES['filename1']['error'] == 0)
  5.       {
  6.         $type = "";
  7.        
  8.      //определяем расширение файла
  9.         switch ($_FILES['filename1']['type'])
  10.          {
  11.             case "image/png":
  12.              $type = "png";
  13.             break;
  14.            
  15.             case "image/gif":
  16.              $type = "gif";
  17.             break;
  18.            
  19.             case "image/jpg":
  20.              $type = "jpg";
  21.             break;
  22.            
  23.             case "image/jpeg":
  24.              $type = "jpeg";
  25.             break;
  26.            
  27.             default:
  28.              echo "Неподходящее расширение файла!";
  29.          }
  30.    
  31.      //в зависимости от типа файла динамически образуем функцию для создания изображений       
  32.         $create_img = "imagecreatefrom".$type;
  33.      //динамически создаем функцию (imagepng/imagegif/imagejpeg) для записи картинок в файл
  34.         $img_write = "image".$type;
  35.      //создаем исходную картинку из полученного файла
  36.         $src_img = $create_img($_FILES['filename1']['tmp_name']);
  37.      //записываем в массив размер изображения
  38.         $src_img_size = getimagesize($_FILES['filename1']['tmp_name']);
  39.           if($_FILES['filename1']['size'] >= 1000*3456){$info = "Превышен допустимый размер файла!"; break;}           
  40.               else
  41.           {
  42.                   //создаем пустую (целевую) картинку размером 964х704px (важно именно truecolor!, иначе будем иметь 8-битный результат)
  43.                      $dst_img = ImageCreateTrueColor (964, 704);
  44.                   //копируем и меняем размер изображения
  45.                      imagecopyresampled ($dst_img , $src_img , 0, 0, 0, 0,
  46.                                   964, 704, $src_img_size[0], $src_img_size[1]);
  47.  
  48.                 //записываем аватарку в файл с необходимым расширением
  49.         if($type == "png" || $type = "gif")
  50.           {
  51.             $img_write($dst_img, "images/biography/".date('ymdHis')."_".$_FILES['filename1']['name']);  
  52.             $bio_img1 = date('ymdHis')."_".$_FILES['filename1']['name'];
  53.             return $bio_img1;
  54.           }
  55.         else
  56.                 if($type == "jpeg")
  57.           {
  58.         $img_write($dst_img, "images/biography/".date('ymdHis')."_".$_FILES['filename1']['name'], 100);
  59.         $bio_img1 = date('ymdHis')."_".$_FILES['filename1']['name'];
  60.               return $bio_img1;
  61.           }
  62.         else {echo "Ошибка преобразования файла!"; break;}
  63.               }
  64.       }
  65.    }


файл при обновлении в необходимую папку с заданным размером перемещается, но запись в базе не появляется.

(Отредактировано автором: 22 Февраля, 2014 - 17:45:05)

 
 Top
classic1698
Отправлено: 21 Февраля, 2014 - 21:48:44
Post Id


Новичок


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


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




Коллеги если мало информации представил для понимания проблемы, то пожалуйста отпишитесь хотя бы.
 
 Top
KingStar
Отправлено: 21 Февраля, 2014 - 22:59:00
Post Id



Участник


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


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




наоборот, слишком много Хм из всего твоего "кода" в упор не вижу, где ты её пытаешься добавить


-----
То что программа работает, не означает что она написана правильно!
 
 Top
classic1698
Отправлено: 21 Февраля, 2014 - 23:22:38
Post Id


Новичок


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


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




KingStar пишет:
наоборот, слишком много Хм из всего твоего "кода" в упор не вижу, где ты её пытаешься добавить


ну если я пишу что все поля при case insert добавляются, и собственно все при case update добавляются то наверно в этом у меня вопроса нет?

Единственная запись в БД не обновляется это поле bio_img1.

Видимо упустил. А обновляется база через функцию в файле function.php

CODE (htmlphp):
скопировать код в буфер обмена
  1. function update_data($table, $id, $row, $data)
  2.    {
  3.            db_connect();
  4.            $i = 0;
  5.            foreach($data as $item=>$key):
  6.            mysql_query("UPDATE AD_$table SET $row[$i] = '$key' WHERE id = '$id'");
  7.            $i++;
  8.            endforeach;    
  9.    }


добавляется через функцию

CODE (htmlphp):
скопировать код в буфер обмена
  1.    function insert_data($table, $row, $data)
  2.    {
  3.            $row = implode(',',$row);
  4.            $data = implode(',',$data);
  5.            db_connect();
  6.            mysql_query("INSERT INTO AD_$table ($row) VALUES($data)");
  7.    }


но кейс другой

CODE (htmlphp):
скопировать код в буфер обмена
  1.     case "insert":
  2.           $table = $_GET['t'];
  3.           $count = 0;
  4.           foreach($_POST as $ArrKey => $ArrStr)
  5.           {
  6.                   $row[$count] = $ArrKey;
  7.                   $data[$count] = "'".$_POST[$ArrKey]."'";
  8.                   $count++;
  9.           }
  10.           if($table == 'biography')
  11.           {
  12.                   $bio_img1 = bio_img1($table);
  13.           $row[$count+1] = 'bio_img1';
  14.           $data[$count+1] = "'".$bio_img1."'";
  15.           }
  16.           unset($row[$count-1]);
  17.           unset($data[$count-1]);
  18.        
  19.           insert_data($table, $row, $data);
  20.           header('Location: admin.php?view='.$table);
  21.           break;


но функция обработки файла та же function bio_img1($table)
и всё работает как надо.

А вот при обновление почему то не обновляется только поле bio_img1

Ну вот получилось ещё больше дал инфы Хорошо надеюсь что не зря...
 
 Top
classic1698
Отправлено: 22 Февраля, 2014 - 13:23:23
Post Id


Новичок


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


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




Ну а сейчас какие мысли у кого? Напишите!!!
 
 Top
classic1698
Отправлено: 23 Февраля, 2014 - 13:15:19
Post Id


Новичок


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


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB