За последние 24 часа нас посетили 54075 программистов и 1515 роботов. Сейчас ищут 1118 программистов ...

Не достает строку из БД

Тема в разделе "Прочие вопросы по PHP", создана пользователем darkgod, 19 июл 2008.

  1. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Добрый всме день...

    Появилась проблемка у меня:
    Заключается в том, что при создании новости я прикрепляю изображение, через
    HTML:
    1. <INPUT name="picture_small" SIZE="60" MAXLENGTH="80" VALUE="" type="file" >
    все норм...

    При редактировании этой новости так:
    HTML:
    1. <INPUT name="picture_small" SIZE="60" MAXLENGTH="80" VALUE="'.$picture_small.'" type="file" >
    И тут проблема, строка из БД не достается, если убираю из этого поля
    HTML:
    1. type="file"
    то все путем... Подскажите решение плиз...
     
  2. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    В тип поля file нельзя установить value.

    Тебе нужно показывать текущую картинку (через <img />) в форме редактирования и под ней поле с типом file, чтобы её перезалить на новую.

    То есть, если $_FILES после сабмита формы пустой или имеет ошибку ($_FILES['picture_small']['error']), то картинка остаётся прежняя.
     
  3. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    про img понял - спасибо большое, но вот куда прикрутить
    PHP:
    1. $_FILES['picture_small']['error']
    немного не понятно...

    Подскажи плиз...
    PHP:
    1. if ($_FILES['picture_small']['tmp_name'] != "" && $_FILES['picture_small']['tmp_name'] != "-")
    2.   {
    3.     $path="../images/news/s_".date("YmdHis",time()).strrchr($_FILES['picture_small']['name'], ".");
    4.     if (copy($_FILES['picture_small']['tmp_name'], "".$path)) $picture_small=$path;
    5.   }
     
  4. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    В принципе сделал через сокрытие еще одного поля, т.е. получилось так:
    PHP:
    1. <TD class="newsaddinp"><INPUT name="picture_small" SIZE="60" MAXLENGTH="80" type="file" >
    2. <INPUT name="picture_small" SIZE="60" MAXLENGTH="80" type="hidden" value="'.$picture_small.'"> </TD>
    Все работает и хорошо, если поле file пустое то обрабатывается скрытое поле, если заполнено, то обрабатывается оно...

    Но весь минус в такой процедуре в том, что при редактировании не выводится ссылка в поле, которая была до этого...
     
  5. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Я не понял второй вопрос.

    Про $_FILES['picture_small']['error']
    HTML:
    1. <TD class="newsaddinp">
    2.  
    3. <img src="'.$picture_small.'" />
    4.  
    5. <INPUT name="picture_small" SIZE="60" MAXLENGTH="80" type="file" >
    6. </TD>
    При нажатии на кнопку:

    PHP:
    1. <?php
    2. if (!$_FILES['picture_small']['error'] and шs_uploaded_file($_FILES['picture_small']['tmp_name'])){
    3.     $path="../images/news/s_".date("YmdHis",time()).strrchr($_FILES['picture_small']['name'], ".");
    4.  
    5.     if (move_uploaded_file($_FILES['picture_small']['tmp_name'], $path))
    6.         $picture_small = $path;
    7. }
     
  6. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Сделал по другому - и считаю что так наиболее удобно будет:
    а сделал всего навсего так:

    <INPUT name="picture_small" SIZE="60" MAXLENGTH="80" type="text" value="'.$picture_small.'">
    <INPUT name="picture_small" SIZE="60" MAXLENGTH="80" type="file" >

    Объясню почему посчитал этот вариант самым достойнм. 1. можно указать путь к картинке на другом сервере, так же прописать руками на картинку со своего... Если файл не грузится с компа, то идет в базу эта ссылка... А если грузится, то меняется на новую, только что загруженныю... Считаю что так удобнее всего работать... Может я и не прав, и лишнее поле появилсь, но мое ИМХО такое...