За последние 24 часа нас посетили 119282 программиста и 3003 робота. Сейчас ищут 1256 программистов ...

Загрузка изображений...не всё получается!

Тема в разделе "PHP для новичков", создана пользователем Panich, 12 дек 2011.

  1. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    PHP:
    1.  /////////////////////////////ИЗМЕНЕНИЕ АВАТАРЫ//////////////////////////              
    2. include ("bd_fotouser.php");
    3. if (isset($_FILES['fupload']['name']))                
    4. {
    5.    if ($_FILES['fupload']['name'] == '')
    6.    {
    7.    unset($_FILES['fupload']['name']);
    8.    }
    9.    else
    10.    {
    11.    $sql14 = "SELECT COUNT(*) FROM `fotouser` WHERE `id_user_ava` = '$id'";
    12.    $result14 = mysql_query($sql14, $db)or die("Ошибка в запросе: " . mysql_error());
    13.       if (!$result14)
    14.       {
    15.       echo "ошибка - ".mysql_error()."<br>";
    16.       echo $sql14;
    17.       exit();
    18.       }
    19.       else
    20.       {
    21. //ниже хочу,что бы пользователь не мог загружать больше трёх изображений-поэтому ограничиваю его тремя,но эта функция не срабатывает-даже если внёс 10 фоток,то всё равно позволяет дальше загружать...как так?
    22. $max_files_allowed = "3";
    23.       $uploadedfiles ="0";
    24.           while ($row = mysql_fetch_row($result14))
    25.           {
    26.              if (!empty($row['avatar']))
    27.              {
    28.              $uploadedfiles = $uploadedfiles+1;
    29.              }
    30.           }
    31.           if ($uploadedfiles >= $max_files_allowed)
    32.           {
    33.           die("<p>Хотите больше загружать? Ставьте ящик админу</p>");
    34.           }
    35.           else
    36.           {
    37.               $foto_size = $_FILES['fupload']['size'];
    38.               if ($foto_size > 5*1024*1000) die ('Размер картинки превысил лимит в 5 Мб. <a href="'.$PHP_SELF.'" target="_self">Загрузить снова</a>');
    39.               if (!preg_match('/^[A-Za-zА-Яа-я0-9-_]+[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/', $_FILES['fupload']['name']))
    40.               {
    41.               echo "<html>
    42.                       <head>
    43.                         <meta http-equiv='Refresh' content='3'; URL='../znakomstva/page_user.php?id=".$_SESSION['id']."'>          
    44.                       </head>
    45.                       <body>
    46.                         Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>
    47.                         Можно не ждать перезагрузки - <a href='../znakomstva/page_user.php'> жми <a>
    48.                       </body>
    49.                    </html>";
    50.               }
    51.               else
    52.               {
    53. //дальше начинается самое непонятное...:
    54. $path_to_directory = "files/avatars/";
    55.               $filename = $_FILES['fupload']['name'];                                
    56.               $source = $_FILES['fupload']['tmp_name'];
    57.               $date = time();    
    58.               //присваиваю имя нужное      
    59.               $target = $path_to_directory."big_".$date.".jpg";
    60.               //гружу в папку
    61.               move_uploaded_file($source, $target);
    62.               //присваиваю путь до файла
    63.               $big_avatar = $target;
    64.               if(preg_match('/[.](GIF)|(gif)$/', $filename))
    65.               {          
    66. //тут выдаёт ошибку:    imagecreatefromgif(files/avatars/метро.gif) [function.imagecreatefromgif]: failed to open stream: No such file or directory in...              
    67.               $im = imagecreatefromgif($path_to_directory.$filename);
    68.               }                                
    69.               if(preg_match('/[.](PNG)|(png)$/', $filename))
    70.               {
    71.               $im = imagecreatefrompng($path_to_directory.$filename);
    72.               }                
    73.               if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename))
    74.               {                                          
    75.               $im = imagecreatefromjpeg($path_to_directory.$filename);                  
    76.               }    
    77. $w = 180;
    78. //Тут ещё выдает две ошибки: Warning: imagesx(): supplied argument is not a valid Image resource in... и ещё: Warning: imagesy(): supplied argument is not a valid Image resource in...
    79.               $w_src = imagesx($im);          
    80.               $h_src = imagesy($im);                  
    81.               $dest = imagecreatetruecolor ($w,$w);
    82.               if ($w_src > $h_src)
    83.               {              
    84.               imagecopyresampled ($dest, $im, 0, 0, round ((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));        
    85.               }
    86.               else
    87.               {
    88.                   if ($w_src < $h_src)
    89.                   {                        
    90.                   imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));    
    91.                   }
    92.                   else
    93.                   {    
    94.                       if ($w_src == $h_src)
    95.                       {      
    96. //вот тут ошибка:  Warning: imagecopyresampled(): supplied argument is not a valid Image resource in...
    97.                       imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);  
    98.                       }
    99.                   }
    100.                }
    101.                imagejpeg($dest, $path_to_directory.$date.".jpg");
    102.                $avatar = $path_to_directory.$date.".jpg";  
    103.                $uploadedfiles = $uploadedfiles + 1;
    104.                $sql15 = "INSERT INTO `fotouser` (avatar, big_avatar, uploadedfiles, id_user_ava)VALUES('$avatar', '$big_avatar', '$uploadedfiles', '$id')";
    105.                 $result15 = mysql_query($sql15, $db)or die("Ошибка в запросе: " . mysql_error());
    106.                 if (!$result15)
    107.                 {
    108.                 echo "ошибка - ".mysql_error()."<br>";
    109.                 echo $sql15;
    110.                 exit();
    111.                 }
    112.                 else
    113.                 {
    114. //а здесь говорит,что ранее отправил уже переадресацию в другой строке:Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\.............\update_user.php:357) in Z:\home\localhost\www\....................\update_user.php on line 402!!!!!!!!!!!!!
    115.                 header("Location:http://localhost/znakomstva/page_user.php");
    116.                 }
    117.              }
    118.           }
    119.       }
    120.    }
    121. }
    122. else
    123. {
    124. exit("Ашипко. Пробуйте ещё раз или позже!");
    125. }
    Блин,два дня уже стараюсь-на форуме подобного не встречал...хотя бы натолкните на правильное решение-очень нуждаюсь в Вашей помощи!
     
  2. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Функция mysql_fetch_row возвращает массив с числовыми индексами, а не ассоциативный. Поэтому
    PHP:
    1. <?php
    2. if (!empty($row['avatar'])) {
    3.     //
    4. }
    не прокатит, если в SQL-запросе используется лишь агрегатная функция COUNT в выборке, то стоит посмотреть в строну функции mysql_result. Что касается следующих ошибок, то переводчика должно хватить для перевода сообщений, что разобраться в чем дело и в какую сторону копать...
     
  3. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Спасибо,буду пробовать!
     
  4. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Всё сделал как Вы сказали, после исправление ещё раза три выдавал браузер ошибки (с непредсказуемой периодичностью!),но,вроде,т� �перь всё нормализовалось...ещё бывает так,что само изображение превращается в квадрат 180х180,но исключительно чёного цвета!
    Буду дальше сам разбираться-так интереснее...
    Спасибо большое!)))
     
  5. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Вот ещё вопрос,рас с советами попёрло:
    PHP:
    1. <?php
    2.     $HTML='
    3.     <table>
    4.         <tr>
    5.            <td>
    6.                 <h2>Измените данные</h2>
    7.             </td>
    8.         </tr>  
    9.        <tr>
    10.            <td>
    11.                 <form action="../znakomstva/update_user.php" method="post" enctype="multipart/form-data" onClick="chek()">
    12.                 <strong>Имя:</strong><br>
    13.                 <strong>Логин:</strong><br>
    14.                 <strong>Ваш пароль?:</strong><br>
    15.                 <strong>Новый пароль:</strong><br>
    16.                 <strong>Повторить пароль:</strong><br>
    17.                 <strong>Город:</strong><br>
    18.             </td>
    19.             <td>
    20.                 <input id="name_red" type="text" name="name" maxlength="20" value="'.$name.'"><br>
    21.                 <input id="login_red" maxlength="20" name="login" type="text" value="'.$login.'"><br>
    22.                 <input id="pass" maxlength="20" name="pass" type="pasword"><br>
    23.                 <input id="pass1" maxlength="20" name="pass1" type="pasword"><br>
    24.                 <input id="pass2" maxlength="20" name="pass2" type="pasword"><br>
    25.                 <select id="sity_red" name="sity">
    26.                     <option>Москва</option>
    27.                     <option>Санкт-Петербург</option>
    28.                     <option>Ростов-на-Дону</option>
    29.                     <option>Краснодар</option>
    30.                 </select>
    31.             </td>
    32.         </tr>
    33.         <tr>
    34.             <td colspan="2">
    35.                 <strong>Фотографии:</strong><br>
    36.  
    37.                 //а вот тут я хочу выводить все фоки,что есть у пользователя из верхнего примера(что бы тот,в свою очередь мог манипулировать фотками)...но как реализовать не знаю-пробовал через while, но выдаёт ошибку всё время-подскажите как реализовать!?
    38.                
    39.                 <strong>Не больше трёх:</strong>
    40.                 <input id="fupload_red" type="file" name="fupload"><br>
    41.             </td>
    42.         </tr>
    43.         <tr>
    44.             <td colspan="2">
    45.                 <strong>Коротко о себе:</strong><br>
    46.                 <textarea id="text_red" name="text_user" cols="35" rows="10" maxlength="300" placeholder="'.$text_user.'"></textarea><br><br>
    47.             </td>
    48.         </tr>
    49.         <tr>
    50.             <td>
    51.                 <input class="btn_modal" type="submit" name="submit" value="изменить">
    52.                 </form>
    53.             </td>
    54.         </tr>
    55.    </table>';
    56.     print $HTML;
    57. ?>
    И ещё вопрос:как сделать так,что бы пользователь мог выбирать себе из трёх аватар,присваивать фотографии определённой цифровой индекс(например 1),а остальным другой (например 0)!!!???Или есть другой способ?
     
  6. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Подскажите как можно вывести несколько значений поля с одним названием?Как-то через массив,но не могу сообразить как...подскажите!
    Вопрос к чему:вот есть у пользователя три загруженных им фотографии,соответственно они закреплены за его id-вот как я могу вывести одновременно все его фотографии?Как построить запрос!?