@noralesma

Почему при записи в mysql массива через PHP пишет arrey или пустое поле?

Всем привет.
Суть в том, что к определенному товару записывается много изображений, они добавляются через БД.
Изображения работают корректно, но к каждому изображению, еще нужно добавить описание. И с этим появилась проблема.
Так как в поле возникает arrey или пустое место.

Разметка:
<div id="addimage1" class="addimage">
<input type="text" name="opisanie[]" />
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"/>
<input type="file" name="galleryimg[]" />
</div>


JS обработчик
var count_input = 1;

  $("#add-input").click(function(){
    
  count_input++;  
  
  $('<div id="addimage'+count_input+'" class="addimage"><input type="text" name="opisanie[]"/><input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><input type="file" name="galleryimg[]" /><a class="delete-input" rel="'+count_input+'" ></a></div>').fadeIn(300).appendTo('#objects'); 
   
  }); 

 $('.delete-input').live('click',function(){
    
	var rel = $(this).attr("rel");
  
	$("#addimage"+rel).fadeOut(300,function(){	   
    $("#addimage"+rel).remove();      
	});

});

Обработчик PHP

<?php
$link = mysqli_connect($db_host, $db_user, $db_password, $db_database) 
    or die("Ошибка " . mysqli_error($link));
    
     


if($_FILES['galleryimg']['name'][0]){
 
    for($i = 0; $i < count($_FILES['galleryimg']['name']); $i++){
    
    $error_gallery = "";
    
    $opisanie = $_POST['opisanie'];  
                     
    if($_FILES['galleryimg']['name'][$i]){

    $galleryimgType = $_FILES['galleryimg']['type'][$i]; // тип файла
    $types = array("image/gif", "image/png", "image/jpeg", "image/pjpeg", "image/x-png"); // массив допустимых расширений
        
    // расширение картинки                    
    $imgext = strtolower(preg_replace("#.+\.([a-z]+)$#i", "$1", $_FILES['galleryimg']['name'][$i]));
    //папка для загрузки
    $uploaddir = '../uploads_images/';
    //новое сгенерированное имя файла
    $newfilename = $_POST["brands"].'-'.$id.rand(10,30000).'.'.$imgext;
    //путь к файлу (папка.файл)
    $uploadfile = $uploaddir.$newfilename;
       $opisanie = $_POST["opisanie"];  
     
    if(!in_array($galleryimgType, $types)){
    $error_gallery = "<p id='form-error'>Допустимые расширения - .gif, .jpg, .png</p>";
    $_SESSION['answer'] = $error_gallery;
    continue;  
        }                   
      
    if (empty($error_gallery))
    {  
                             
    if(@move_uploaded_file($_FILES['galleryimg']['tmp_name'][$i], $uploadfile)){
                                
         		mysqli_query($link,"INSERT INTO uploads_images(products_id,image,opisanie)
						VALUES(						
                            '".$id."',
                            '".$newfilename."',   
                            '".$opisanie."'                            
						)");                        

     }else{
         $_SESSION['answer'] = "Ошибка загрузки файла."; 
       }}                                
}}
}?>


Описание должно по ID подтягиваться к "своей" картинке вроде как, но в итоге вывод массива просто застревает.

Прочитала уже 100500 мануалов по PHP и похожих тем, но ничего, что решило бы проблему не нашла.....
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Потому что вы передаёте массив, а в скрипте далее обращаетесь к нему, как к обычной скалярной переменной. Если в PHP передавать массив в функцию, принимающую параметр строкового типа, то этот массив будет преобразован в строку "Array". Что у вас и происходит, судя по всему.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы