Перейти к публикации
  • Сейчас на странице   Всего пользователей: 3   (0 пользователей, 3 гостя)

Rooster

Программирование, т. 8

  

315 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

(изменено)
делаю проект на yii2, короче проблема такая: есть загрузка картинки, при create модели все норм, при редактировании надо каждый раз подгружать картинку, даже если пользователь не хочет ее менять. как сделать чтобы при нажатии в форме аплоад файла, картинку подгружать, а если нет оставлять старую. ( я начинающий джун, не бейте)

 

Ты подгружаешь старую картинку имя у нее xui.jpg, когда пользователь подгружает новую картинку то имя у нее pizda.jpg

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


Изменено пользователем fessnik
Ev11 понравилось это

Поделиться сообщением


Ссылка на сообщение
(изменено)

Спс, идею понял, попробую. А если пользователь подгрузит картинку с именем hui.jpg но другую?


Изменено пользователем Ev11

Поделиться сообщением


Ссылка на сообщение

А, у тебя ж не аяксом форма приходит правильно? При заходе на станицу тебе нужно отображать текущую картинку?
 

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение
(изменено)

Сделай проверку как писал чел выше 

if(isset($_FILES['image'])) 
И только если заходит в этот иф тогда уже вызывай свой

 $model->deleteCurrentImage($model->image);
 $model->loadImage($model);
 
Изменено пользователем fessnik

Поделиться сообщением


Ссылка на сообщение

 

 

ns3 -> где у тебя задан ns для <xs:element name="Document" type="Document"/>

а как должно быть по-твоему? 

 

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

потому что ns3:Document и ns4:Document это 2 разных типа, только если не ns3==ns4

 

не я спросил именно чтобы понять логику

я не знаю где прописано но контрол ф  что в новой схеме, что в старой (к которой я пытаюсь привести новую) в этом плане всё одинаково.

 

пысы схему у меня удалось привести в нужный вид, при этом проблема была не в тегах, а в наполнении (типа реквайрменты значений изменились хз)


Скрытый текст

 

OMGVERYLONGNAME написал 08.06.2018 в 12:50:
потому что ты не игрок, ты мразь на любой роли
ZombBomb написал 05.12.2018 в 19:27:
лол
Fint написал 19.07.2019 в 15:49:
Ок, я ошибся

 

 

NaniQue- написал 30.07.2019 в 10:37:
висп вроде норм игрок

 

 

Поделиться сообщением


Ссылка на сообщение
(изменено)

Разобрался, после Yii::$app->request->post()  у меня в model->image попадает null, тк картинку  никто не подгружает.

добавил переменную для хранения имени и сделал типа такого

 

 

$transaction = Yii::$app->db->beginTransaction();
        try {
            $model = $this->findModel($id);
            $link = $model->image;
            if ($model->load(Yii::$app->request->post())) {
                $file = UploadedFile::getInstance($model, 'image');
                if (isset($file)) {
                    $model->deleteCurrentImage($model->image);
                    $model->loadImage($model);
                } else {
                    $model->image = $link;
                    $model->save();
                }
                $transaction->commit();
                Yii::$app->getSession()->setFlash('success', 'successfully update');
                return $this->redirect(['view', 'id' => $model->id]);
            }


Изменено пользователем Ev11

Поделиться сообщением


Ссылка на сообщение

Разобрался, после Yii::$app->request->post()  у меня в model->image попадает null, тк картинку  никто не подгружает.

добавил переменную для хранения имени и сделал типа такого

 

 

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

 

 

 public function loadImage($model)
    {
        $file = UploadedFile::getInstance($model, 'image');
        if ($file != null) {
            $newsId = $model->id;
            $imgName = 'news_' . $newsId . '.' . $file->getExtension();
            $file->saveAs(Yii::getAlias('@newsImgPath') . '/' . $imgName);
        }
        return $imgName;
    }

 

 

Тогда тебе не нужно будет делать бесполезное $link = $model->image;  и можно будет избавиться от else

 

 

$transaction = Yii::$app->db->beginTransaction();
        try {
            $model = $this->findModel($id);
            if ($model->load(Yii::$app->request->post())) {
                $file = UploadedFile::getInstance($model, 'image');
                if (isset($file)) {
                    $model->deleteCurrentImage($model->image);
                    $model->image = $model->loadImage($model);
                }
                $model->save();

                $transaction->commit();
                Yii::$app->getSession()->setFlash('success', 'successfully update');
                return $this->redirect(['view', 'id' => $model->id]);
            }

 

Ev11 понравилось это

Поделиться сообщением


Ссылка на сообщение

бля вот скажите мне

200 код кидать с errorMessage: Внутренняя ошибка системы это ок или чо блять?


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение
(изменено)

бля вот скажите мне

200 код кидать с errorMessage: Внутренняя ошибка системы это ок или чо блять?

ок если такое поведение задумано архитектором или заложено в апи


Изменено пользователем Just.Doit

 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

 

бля вот скажите мне

200 код кидать с errorMessage: Внутренняя ошибка системы это ок или чо блять?

ок если ты аутист

 

Kant, TheDeadSkin и Nikki Sixx понравилось это

Поделиться сообщением


Ссылка на сообщение

Есть запрос

SELECT mdate,
  team1,
  SUM(CASE WHEN teamid=team1 THEN 1 ELSE 0 END) score1,
  team2,
  SUM(CASE WHEN teamid=team2 THEN 1 ELSE 0 END) score2
  FROM game JOIN goal ON matchid = id
GROUP BY mdate, matchid, team1, team2
ORDER BY mdate, matchid, team1, team2

Но он не выводит 0-0 матчи так как в таблице goal

Как должно быть:

https://i.imgur.com/1Og69Zh.png

Как выводит

https://i.imgur.com/cmE0crG.png

 

Как можно исправить? Бля пока писал сам понял LEFT JOIN

choojoykin понравилось это

Поделиться сообщением


Ссылка на сообщение

https://i.imgur.com/hrVkbCM.png

Насколько нормальны такие запросы? С подзапросами в ON 

Поделиться сообщением


Ссылка на сообщение

hrVkbCM.png

Насколько нормальны такие запросы? С подзапросами в ON 

это где такие задачки? что за подзапросы в on?


Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение

:mameprivet:  :mameprivet:  :mameprivet:  :mameprivet:


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

 

 

Насколько нормальны такие запросы? С подзапросами в ON 

 

ок если ты аутист
 

П.С.: Дай уже сорс, где делаешь, тож  пофигачу, заодно проще обсуждать будет.


Лана. Нашел. Ща глянем:

  https://sqlzoo.net


 

DB

59221730.png


Я - гений, ёпта

bfe7003be27e8e81ce6a7d2d8192e9ae.jpg


22


msg-93176-0-72842500-1438846470_thumb.jpg

Поделиться сообщением


Ссылка на сообщение

Короч. Вот единственный запрос, который нужен для этого блока:

select HUI from movie m
left join casting c
 on m.id=c.movieid
left join actor a
 on a.id=c.actorid
where m.HUI='PIZDA'

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


А вообще, дропал бы ты это обучение с таким экзамплами:

SELECT yr,COUNT(title) FROM
  movie JOIN casting ON movie.id=movieid
         JOIN actor   ON actorid=actor.id
where name='John Travolta'
GROUP BY yr
HAVING COUNT(title)=(SELECT MAX(c) FROM
(SELECT yr,COUNT(title) AS c FROM
   movie JOIN casting ON movie.id=movieid
         JOIN actor   ON actorid=actor.id
 where name='John Travolta'
 GROUP BY yr) AS t
)

Для сравнения мой варик:

select m.yr,count(*) from movie m
left join casting c
 on m.id=c.movieid
inner join actor a
 on a.id=c.actorid and a.name='John Travolta'
group by m.yr
having count(*)>2

Ну или так, если уж совсем точно:

select m.yr,count(*) from movie m
left join casting c
 on m.id=c.movieid
inner join actor a
 on a.id=c.actorid and a.name='John Travolta'
group by m.yr
order by count(*) desc
limit 1


 

DB

59221730.png


Я - гений, ёпта

bfe7003be27e8e81ce6a7d2d8192e9ae.jpg


22


msg-93176-0-72842500-1438846470_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
(изменено)

Насколько нормальны такие запросы? С подзапросами в ON 

Честно ты какую-то муть пишешь :). В 95% случаев подзапросы вообще не нужны. Максимум что приходилось использовать это

select ... from a

  join (select ... from b)

  on ...

Т.е. ты просто джоинишь не всю таблицу b, а только ее часть. И то не помню зачем так писали.


Изменено пользователем .felix

Поделиться сообщением


Ссылка на сообщение

 

А вообще, дропал бы ты это обучение с таким экзамплами:

 

 

Я тоже заметил и тоже исправил, не существенно.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...