n1c Опубликовано 12 июня, 2016 Жалоба Поделиться Опубликовано 12 июня, 2016 (изменено) Добрый день. Решил сделать дополнение, чтобы клиенты могли оставляя отзыв прикрепить фото в живую или другую картинку. Я не программист, многие знают. в БД ALTER TABLE `s_comments` ADD `image` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL в config.php ;Изображения отзываotzuvy_images_dir = files/otzuvy/; добавляем папку otzuvy в files в api/Comments.php (в 2 местах) добавляем:c.image, в этом же файле, добавим ниже: public function delete_image($id) { $id = (array) $id; $query = $this->db->placehold("SELECT image FROM __comments WHERE id in(?@)", $id); $this->db->query($query); $filenames = $this->db->results('image'); if(!empty($filenames)) { $query = $this->db->placehold("UPDATE __comments SET image=NULL WHERE id in(?@)", $id); $this->db->query($query); foreach($filenames as $filename) { $query = $this->db->placehold("SELECT count(*) as count FROM __comments WHERE image=?", $filename); $this->db->query($query); $count = $this->db->result('count'); if($count == 0) { @unlink($this->config->root_dir.$this->config->otzuvy_images_dir.$filename); } } } } в шаблоне pruduct,tpl выводим картинку {if $comment->image}<img src="{$config->otzuvy_images_dir}{$comment->image}" alt="" />{/if} в форму добавления комментария добавляем: <input class='upload_image' name="image" type="file"> Полагаю нужно добавить в ProductView.php что-то типа: после: class ProductView extends View{ добавить: private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico', 'bmp'); далее типа: // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->comments->delete_image($comment->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']); $this->comments->update_comment($id, array('image'=>$image['name'])); } В БД записывается, в шаблоне отображается путь и название, но не загружает в папку otzuvy картинки. Что нужно править? Изменено 12 июня, 2016 пользователем n1c Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 12 июня, 2016 Жалоба Поделиться Опубликовано 12 июня, 2016 http://htmlbook.ru/html/form/enctype - проверте Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 12 июня, 2016 Автор Жалоба Поделиться Опубликовано 12 июня, 2016 (изменено) http://htmlbook.ru/html/form/enctype - проверте спасибо)теперь загружает в папку, но при этом не отображаются комментарии т.к multipart/form-data, или наоборот по стандарту отображается комментарий но не выводит фото Изменено 12 июня, 2016 пользователем n1c Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 12 июня, 2016 Жалоба Поделиться Опубликовано 12 июня, 2016 Как это? Вы бред пишете...Покажите кусок шаблона, где комментарии и фото. Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 12 июня, 2016 Автор Жалоба Поделиться Опубликовано 12 июня, 2016 Как это? Вы бред пишете...Покажите кусок шаблона, где комментарии и фото. <!-- Комментарии --> <div id="comments"> <h2>Комментарии</h2> {if $comments} <!-- Список с комментариями --> <ul class="comment_list"> {foreach $comments as $comment} <a name="comment_{$comment->id}"></a> <li> <!-- Имя и дата комментария--> <div class="comment_header"> {$comment->name|escape} <i>{$comment->date|date}, {$comment->date|time}</i> {if !$comment->approved}ожидает модерации</b>{/if} </div> <!-- Имя и дата комментария (The End)--> {$comment->text|escape|nl2br} <br> {if $comment->image}<img width="200" src="{$config->otzuvy_images_dir}{$comment->image}" alt="" />{/if} </li> {/foreach} </ul> <!-- Список с комментариями (The End)--> {else} <p> Пока нет комментариев </p> {/if} <!--Форма отправления комментария--> <form class="comment_form" enctype="multipart/form-data" method="post"> <h2>Написать комментарий</h2> {if $error} <div class="message_error"> {if $error=='captcha'} Неверно введена капча {elseif $error=='empty_name'} Введите имя {elseif $error=='empty_comment'} Введите комментарий {/if} </div> {/if} <input class='upload_image' name="image" type="file"> <textarea class="comment_textarea" id="comment_text" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea><br /> <div> <label>Имя</label> <input class="input_name" type="text" id="comment_name" name="name" value="{$comment_name}" data-format=".+" data-notice="Введите имя"/> <input class="button" type="submit" name="comment" value="Отправить" /> </div> </form> <!--Форма отправления комментария (The End)--> </div> <!-- Комментарии (The End) --> Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 12 июня, 2016 Жалоба Поделиться Опубликовано 12 июня, 2016 И что у вас не показывается? Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 13 июня, 2016 Автор Жалоба Поделиться Опубликовано 13 июня, 2016 И что у вас не показывается? все показывается. а корректной работы нет. если в форме multipart/form-data то при написании комментария - не отображается как на сайте так и в админке, но фото в папку загружается, а если убрать multipart/form-data то комментарий появляется а фото в папке нет. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 13 июня, 2016 Жалоба Поделиться Опубликовано 13 июня, 2016 Скорее всего, у Вас ошибка в обработчике.Очень подозрительна строка$this->comments->update_comment($id, array('image'=>$image['name']));Стандартно в том файле НЕТ значения $id как идентификатора нового комментария...А выложить код полностью не догадываетесь, вместо этого у Вас туманное "далее типа" - вот оно и работает соответственно.Возможно, надо вместо $id писать $comment_id ... И еще просматривается ошибка, которая позволит каждому желающему натворить на Вашем сайте неприятностей:1. Зашел хороший посетитель, оставил хороший комментарий с хорошей картинкой. Картинка называется, допустим phone.jpg2. Потом зашел НЕхороший посетитель, увидел картинку, прочел название. У себя создал НЕхорошую картинку с таким же названием. Написал отзыв и загрузил свою картинку.3. Ваша доработка перезапишет на сервере файл phone.jpg. В результате появится НЕхорошая картинка у ДВУХ отзывов.4. Если Вы в админке удалите отзыв НЕхорошего посетителя, то все равно НЕхорошая картинка останется у хорошего отзыва.5. НЕхорошему посетителю это, скорее всего, понравится, он будет время от времени показывать свой прием каким-нибудь своим знакомым девочкам, дабы ловить восторженные взгляды. Или делиться с ними или с кем-то еще своей методикой, благо она крайне проста...6. Что после этого будет думать хороший посетитель о владельце сайта? Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 13 июня, 2016 Автор Жалоба Поделиться Опубликовано 13 июня, 2016 Скорее всего, у Вас ошибка в обработчике.Очень подозрительна строка$this->comments->update_comment($id, array('image'=>$image['name']));Стандартно в том файле НЕТ значения $id как идентификатора нового комментария...А выложить код полностью не догадываетесь, вместо этого у Вас туманное "далее типа" - вот оно и работает соответственно.Возможно, надо вместо $id писать $comment_id ... И еще просматривается ошибка, которая позволит каждому желающему натворить на Вашем сайте неприятностей:1. Зашел хороший посетитель, оставил хороший комментарий с хорошей картинкой. Картинка называется, допустим phone.jpg2. Потом зашел НЕхороший посетитель, увидел картинку, прочел название. У себя создал НЕхорошую картинку с таким же названием. Написал отзыв и загрузил свою картинку.3. Ваша доработка перезапишет на сервере файл phone.jpg. В результате появится НЕхорошая картинка у ДВУХ отзывов.4. Если Вы в админке удалите отзыв НЕхорошего посетителя, то все равно НЕхорошая картинка останется у хорошего отзыва.5. НЕхорошему посетителю это, скорее всего, понравится, он будет время от времени показывать свой прием каким-нибудь своим знакомым девочкам, дабы ловить восторженные взгляды. Или делиться с ними или с кем-то еще своей методикой, благо она крайне проста...6. Что после этого будет думать хороший посетитель о владельце сайта? Изначально вместо $id я ставил $comment_id но выдавало ошибку, но буду пробовать еще.Про название картинки "photo.jpg" это действительно так, я думал над этим, но хз как заставить переименовываться Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 13 июня, 2016 Жалоба Поделиться Опубликовано 13 июня, 2016 Изначально вместо $id я ставил $comment_id но выдавало ошибку, но буду пробовать еще. Про название картинки "photo.jpg" это действительно так, я думал над этим, но хз как заставить переименовыватьсяЯ не программист, многие знают. Вот для того и нужны эти самые программисты... Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 13 июня, 2016 Автор Жалоба Поделиться Опубликовано 13 июня, 2016 Вот для того и нужны эти самые программисты... от души помог! Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 13 июня, 2016 Жалоба Поделиться Опубликовано 13 июня, 2016 от души помог! Если намекаете на то, что Вы ожидали полную подсказку, где и в чем ошибка и как поправить, то для этого с Вашей стороны должны быть ПОЛНЫЕ сведения о том, что и как Вы меняете.Как написано сейчас Полагаю нужно добавить в ProductView.php что-то типа:после: class ProductView extends View{ добавить: private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico', 'bmp'); далее типа: // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->comments->delete_image($comment->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']); $this->comments->update_comment($id, array('image'=>$image['name'])); } то, если сделать в точности так, то страница товара работать не будет вообще... Если у Вас работает, то стало быть, делаете одно, а пишете тут совсем другое.Почини мне то, не скажу что... Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 13 июня, 2016 Автор Жалоба Поделиться Опубликовано 13 июня, 2016 Если намекаете на то, что Вы ожидали полную подсказку, где и в чем ошибка и как поправить, то для этого с Вашей стороны должны быть ПОЛНЫЕ сведения о том, что и как Вы меняете.Как написано сейчас то, если сделать в точности так, то страница товара работать не будет вообще... Если у Вас работает, то стало быть, делаете одно, а пишете тут совсем другое.Почини мне то, не скажу что... не намекаю, а сарказм))я описал точно как делал у себя, ошибки страница товара выдает конечно, но поправлюв ProductView.php я сомневаюсь что правильно вообще подставлено где "// загрузка изображения"возможно в шаблоне нужно JS дописать для формы? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 13 июня, 2016 Жалоба Поделиться Опубликовано 13 июня, 2016 я описал точно как делал у себя, ошибки страница товара выдает конечно, но поправлю Это Вы так думаете, что точно. А на самом деле совсем иначе... в ProductView.php я сомневаюсь что правильно вообще подставлено где "// загрузка изображения" Вот-вот. А я еще сомневаюсь, что в правильном месте это у Вас вставлено. В каком месте код у Вас вставлен - это дополнительный возможный источник ошибок. Выложить свой ProductView.php жаба душит? Коммерческая тайна, большая ценность? Вместо этого Вам нравится вести длинную дискуссию ни о чем? Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 14 июня, 2016 Автор Жалоба Поделиться Опубликовано 14 июня, 2016 Это Вы так думаете, что точно. А на самом деле совсем иначе... Вот-вот. А я еще сомневаюсь, что в правильном месте это у Вас вставлено. В каком месте код у Вас вставлен - это дополнительный возможный источник ошибок. Выложить свой ProductView.php жаба душит? Коммерческая тайна, большая ценность? Вместо этого Вам нравится вести длинную дискуссию ни о чем? Kors, вам лучше знать что я думаю?Тайны вообще никакой, вот мой ProductView.php require_once('View.php'); class ProductView extends View { private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico', 'bmp'); function fetch() { $product_url = $this->request->get('product_url', 'string'); if(empty($product_url)) return false; // Выбираем товар из базы $product = $this->products->get_product((string)$product_url); if(empty($product) || (!$product->visible && empty($_SESSION['admin']))) return false; $product->images = $this->products->get_images(array('product_id'=>$product->id)); $product->image = &$product->images[0]; $variants = array(); //foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v) $variants[$v->id] = $v; $product->variants = $variants; // Вариант по умолчанию if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id])) $product->variant = $variants[$v_id]; else $product->variant = reset($variants); $product->features = $this->features->get_product_options(array('product_id'=>$product->id)); /* // Автозаполнение имени для формы комментария if(!empty($this->user)) $this->design->assign('comment_name', $this->user->name); // Принимаем комментарий if ($this->request->method('post') && $this->request->post('comment')) { $comment->name = $this->request->post('name'); $comment->text = $this->request->post('text'); $captcha_code = $this->request->post('captcha_code', 'string'); // Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму $this->design->assign('comment_text', $comment->text); $this->design->assign('comment_name', $comment->name); */ // Автозаполнение имени для формы комментария if(!empty($this->user)) $this->design->assign('comment_name', $this->user->name); //$this->design->assign('comment_email', $this->user->email); // Принимаем комментарий if ($this->request->method('post') && $this->request->post('comment')) { $comment->image = $this->request->post('image'); $comment->name = $this->request->post('name'); $comment->email = $this->request->post('email'); $comment->text = $this->request->post('text'); // Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму $this->design->assign('comment_text', $comment->text); $this->design->assign('comment_name', $comment->image); $this->design->assign('comment_name', $comment->name); $this->design->assign('comment_email', $comment->email); // Проверяем капчу и заполнение формы if (empty($comment->name)) { $this->design->assign('error', 'empty_name'); } elseif (empty($comment->text)) { $this->design->assign('error', 'empty_comment'); } else { // Создаем комментарий $comment->object_id = $product->id; $comment->type = 'product'; $comment->ip = $_SERVER['REMOTE_ADDR']; // Если были одобренные комментарии от текущего ip, одобряем сразу $this->db->query("SELECT 1 FROM __comments WHERE approved=1 AND ip=? LIMIT 1", $comment->ip); if($this->db->num_rows()>0) $comment->approved = 1; // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->comments->delete_image($comment->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']); $this->comments->update_comment($id, array('image'=>$image['name'])); } // Добавляем комментарий в базу $comment_id = $this->comments->add_comment($comment); // Отправляем email $this->notify->email_comment_admin($comment_id); // Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую unset($_SESSION['captcha_code']); header('location: '.$_SERVER['REQUEST_URI'].'#comment_'.$comment_id); } } // Комментарии к товару $comments = $this->comments->get_comments(array('type'=>'product', 'object_id'=>$product->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR'])); $this->design->assign('comments', $comments); // Связанные товары $related_ids = array(); $related_products = array(); foreach($this->products->get_related_products($product->id) as $p) { $related_ids[] = $p->related_id; $related_products[$p->related_id] = null; } if(!empty($related_ids)) { foreach($this->products->get_products(array('id'=>$related_ids, 'in_stock'=>1, 'visible'=>1)) as $p) $related_products[$p->id] = $p; $related_products_images = $this->products->get_images(array('product_id'=>array_keys($related_products))); foreach($related_products_images as $related_product_image) if(isset($related_products[$related_product_image->product_id])) $related_products[$related_product_image->product_id]->images[] = $related_product_image; $related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($related_products), 'instock'=>true)); foreach($related_products_variants as $related_product_variant) { if(isset($related_products[$related_product_variant->product_id])) { $related_products[$related_product_variant->product_id]->variants[] = $related_product_variant; } } foreach($related_products as $id=>$r) { if(is_object($r)) { $r->image = &$r->images[0]; $r->variant = &$r->variants[0]; } else { unset($related_products[$id]); } } $this->design->assign('related_products', $related_products); } // Отзывы о товаре $comments = $this->comments->get_comments(array('type'=>'product', 'object_id'=>$product->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR'])); // Соседние товары $this->design->assign('next_product', $this->products->get_next_product($product->id)); $this->design->assign('prev_product', $this->products->get_prev_product($product->id)); // И передаем его в шаблон $this->design->assign('product', $product); $this->design->assign('comments', $comments); // Категория и бренд товара $product->categories = $this->categories->get_categories(array('product_id'=>$product->id)); $this->design->assign('brand', $this->brands->get_brand(intval($product->brand_id))); $this->design->assign('category', reset($product->categories)); // Добавление в историю просмотров товаров $max_visited_products = 100; // Максимальное число хранимых товаров в истории $expire = time()+60*60*24*30; // Время жизни - 30 дней if(!empty($_COOKIE['browsed_products'])) { $browsed_products = explode(',', $_COOKIE['browsed_products']); // Удалим текущий товар, если он был if(($exists = array_search($product->id, $browsed_products)) !== false) unset($browsed_products[$exists]); } // Добавим текущий товар $browsed_products[] = $product->id; $cookie_val = implode(',', array_slice($browsed_products, -$max_visited_products, $max_visited_products)); setcookie("browsed_products", $cookie_val, $expire, "/"); $this->design->assign('meta_title', $product->meta_title); $this->design->assign('meta_keywords', $product->meta_keywords); $this->design->assign('meta_description', $product->meta_description); return $this->design->fetch('product.tpl'); } } Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 14 июня, 2016 Жалоба Поделиться Опубликовано 14 июня, 2016 (изменено) проблема в том что вы загружаете изображение к комментарию до того как добавили сам комментарий. то есть логично подумать что айди комментария нету до того как его создали.нужно вам поменять этот кусок. // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->comments->delete_image($comment->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']); $this->comments->update_comment($id, array('image'=>$image['name'])); } // Добавляем комментарий в базу $comment_id = $this->comments->add_comment($comment); ф-я удаления изображения тут вообще бессмысленна т.к. комментарий всегда новый и у него не может быть до этого изображения. // Добавляем комментарий в базу $comment_id = $this->comments->add_comment($comment); // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']); $this->comments->update_comment($comment_id, array('image'=>$image['name'])); } Изменено 14 июня, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 14 июня, 2016 Жалоба Поделиться Опубликовано 14 июня, 2016 // Загрузка изображенияДолжна быть ПОСЛЕ // Добавляем комментарий в базуИначе вы пытаетесь обновить несуществующий комментИ после $comment_id = $this->comments->add_comment($comment);Вам будет доступен $comment_id Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 14 июня, 2016 Жалоба Поделиться Опубликовано 14 июня, 2016 Тайны вообще никакой, вот мой ProductView.phpВсе оказалось примерно так же, как я предполагал. У Вас как минимум две значимые ошибки. Про них говорилось уже, Вы не среагировали никак...Скорее всего, у Вас ошибка в обработчике. Очень подозрительна строка $this->comments->update_comment($id, array('image'=>$image['name'])); Стандартно в том файле НЕТ значения $id как идентификатора нового комментария...А я еще сомневаюсь, что в правильном месте это у Вас вставлено. Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 14 июня, 2016 Автор Жалоба Поделиться Опубликовано 14 июня, 2016 проблема в том что вы загружаете изображение к комментарию до того как добавили сам комментарий. то есть логично подумать что айди комментария нету до того как его создали.нужно вам поменять этот кусок. // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->comments->delete_image($comment->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']); $this->comments->update_comment($id, array('image'=>$image['name'])); } // Добавляем комментарий в базу $comment_id = $this->comments->add_comment($comment); ф-я удаления изображения тут вообще бессмысленна т.к. комментарий всегда новый и у него не может быть до этого изображения. // Добавляем комментарий в базу $comment_id = $this->comments->add_comment($comment); // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']); $this->comments->update_comment($comment_id, array('image'=>$image['name'])); } Все оказалось примерно так же, как я предполагал. У Вас как минимум две значимые ошибки.Про них говорилось уже, Вы не среагировали никак... // Загрузка изображенияДолжна быть ПОСЛЕ // Добавляем комментарий в базуИначе вы пытаетесь обновить несуществующий комментИ после $comment_id = $this->comments->add_comment($comment);Вам будет доступен $comment_id Спасибо пацаны.Но все равно какае-то фигня, не работает корректно. Выдает ошибку Warning: Column 'image' cannot be null [iNSERT INTO s_comments SET image=NULL, name='John Doe', email=NULL, text='комментарий', object_id='55', type='product', ip='127.0.0.1', approved='1', date = NOW()] in Z:\home\site\api\Database.php on line 105 Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 14 июня, 2016 Жалоба Поделиться Опубликовано 14 июня, 2016 (изменено) Спасибо пацаны.Но все равно какае-то фигня, не работает корректно. Выдает ошибку Warning: Column 'image' cannot be null [iNSERT INTO s_comments SET image=NULL, name='John Doe', email=NULL, text='комментарий', object_id='55', type='product', ip='127.0.0.1', approved='1', date = NOW()] in Z:\home\site\api\Database.php on line 105 вам пишет, поле image не может быть пустым. еще раз обратимся к логике, нужно сделать в базе его NULL по умолчанию, т.к. вы загружаете изображение после добавления самого коммента. Изменено 14 июня, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 14 июня, 2016 Автор Жалоба Поделиться Опубликовано 14 июня, 2016 вам пишет, поле image не может быть пустым. еще раз обратимся к логике, нужно сделать в базе его NULL по умолчанию, т.к. вы загружаете изображение после добавления самого коммента. спасибо mishanya! заработало!) Цитата Ссылка на сообщение Поделиться на другие сайты
villain1988 Опубликовано 26 июня, 2016 Жалоба Поделиться Опубликовано 26 июня, 2016 (изменено) Доброго времени суток!Народ прошу помощи. Один и тот же сайт расположен на разных хостингах.На одном хостинге фото добавляются - проблем нет. А вот на другом после загрузки изображения вываливается ошибка: Warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 in /var/www/api/Database.php on line 115 Warning: Cannot modify header information - headers already sent by (output started at /var/www/api/Database.php:115) in /var/www/view/ProductView.php on line 97 Warning: Cannot modify header information - headers already sent by (output started at /var/www/api/Database.php:115) in /var/www/view/ProductView.php on line 169 Warning: Cannot modify header information - headers already sent by (output started at /var/www/api/Database.php:115) in /var/www/index.php on line 17 api/Database.php on line 115 trigger_error($this->mysqli->error, E_USER_WARNING); view/ProductView.php on line 97 header('location: '.$_SERVER['REQUEST_URI'].'#comment_'.$comment_id); view/ProductView.php on line 169 setcookie("browsed_products", $cookie_val, $expire, "/"); /index.php on line 17 header("Content-type: text/html; charset=UTF-8"); Но при этом фото загружается и отображается.Не подскажите в чем может быть проблема? Изменено 26 июня, 2016 пользователем villain1988 Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 26 июня, 2016 Жалоба Поделиться Опубликовано 26 июня, 2016 Ошибка в тексте запроса, скорее всего, синтаксическая. Отслеживать текст запроса, место запроса, находить ошибку и исправлять... А может быть и еще масса причин, связанных с разными настройками на хостингах... Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 27 июня, 2016 Жалоба Поделиться Опубликовано 27 июня, 2016 Доброго времени суток!Народ прошу помощи. а копия сайта точна? может вы забыли перенести поле картинки на вторую копию, или в базу забыли добавить. проблема может быть где угодно, в том числе неправильно настроенный хостинг. картинки в папку пишутся? права на папку? Цитата Ссылка на сообщение Поделиться на другие сайты
villain1988 Опубликовано 27 июня, 2016 Жалоба Поделиться Опубликовано 27 июня, 2016 а копия сайта точна? может вы забыли перенести поле картинки на вторую копию, или в базу забыли добавить. проблема может быть где угодно, в том числе неправильно настроенный хостинг. картинки в папку пишутся? права на папку? Как выяснилось различался этот код: // Добавляем комментарий в базу $comment_id = $this->comments->add_comment($comment); // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']); $this->comments->update_comment($comment_id, array('image'=>$image['name'])); } Поправил - заработало без ошибок.Спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.