За последние 24 часа нас посетили 20318 программистов и 1713 роботов. Сейчас ищут 1875 программистов ...

Проблема с загрузкой картинки и Mysql бд

Тема в разделе "PHP и базы данных", создана пользователем Zerox, 30 май 2010.

  1. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Так, выручайте, всю бошку сломал уже:
    Код (Text):
    1. if($_GET['step'] == 'ava'){
    2. ?>
    3. <form method="post" action="profile.php?edit=ava" enctype="multipart/form-data">
    4. <center>
    5. <p>Ваш аватар:</p>
    6. <img src="http://<? echo $avatar ?>" /><br />
    7. <input type="file" name="avatar" />
    8. <input type="submit" value="Загрузить!" />
    9. </center>
    10. </form>
    11. </center>
    12. </table>
    13. </td>
    14. </tr>
    15. </table>
    16. <br/><br/><br/>
    17. <?php
    18. }

    Код (Text):
    1. if($_GET['edit'] == 'ava'){
    2.    $avatar = $_FILES['avatar']['name'];
    3.    $copy = copy($_FILES['avatar']['tmp_name'], "$_SERVER[DOCUMENT_ROOT]/images/avatars/".$_FILES['avatar']['name']);
    4.    $query_pers = mysql_query("UPDATE `members` SET `$_SERVER[SERVER_NAME]/images/avatars/$avatar` = '$avatar'");
    5.    echo "<center><p>Изменения сохранены!</p></center>";
    6. }

    Появляется просто экран... ничего в БД не изменяется, ничего не копируется. Во всех остальных функциях работает... думаю показывать весь код или нет...
     
  2. Einbaukueche

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

    С нами с:
    14 апр 2010
    Сообщения:
    34
    Симпатии:
    0
    Адрес:
    Там, где много гор и пива.
    Сделайте хотя бы
    из
    Код (Text):
    1.  
    2. $query_pers = mysql_query("UPDATE `members` SET `$_SERVER[SERVER_NAME]/images/avatars/$avatar` = '$avatar'");
    Код (Text):
    1.  
    2. $query_pers = mysql_query("UPDATE `members` SET `$_SERVER[SERVER_NAME]/images/avatars/$avatar` = '$avatar'") OR die(mysql_error());
    И вы увидите, что у вас ДБ вываливается с ошибкой, что поля по имени
    Код (Text):
    1. `$_SERVER[SERVER_NAME]/images/avatars/$avatar`
    у вас нет.

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

    P.S.: Для переброски закачанного файла куда-нибудь есть специальная функция, используйте её.

    http://de3.php.net/manual/en/function.m ... d-file.php
     
  3. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Да, я знаю, просто это старый кусок скрипта. Я уже давно исправил эту ошибку
     
  4. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    вообще ничего не происходит, чистый лист
     
  5. Einbaukueche

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

    С нами с:
    14 апр 2010
    Сообщения:
    34
    Симпатии:
    0
    Адрес:
    Там, где много гор и пива.
    Может, для начала тогда стоит запостить тот код, к которому у вас есть вопросы, а не какой-нибудь другой? :D


    напишите в начале скрипта, прежде чем тестировать:
    Код (Text):
    1.  
    2. error_reporting(E_ALL);
    3. ini_set('display_errors', 1);
    и приведите полный код того скрипта, который не работает и структуру таблицы members в БД.

    Иначе это всё пустая трата времени.
     
  6. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    вот весь скрипт:
    PHP:
    1. <?php
    2. if( isset( $_COOKIE['time'] ) && isset( $_COOKIE['name'] ))
    3. {
    4. include ("$_SERVER[DOCUMENT_ROOT]/lib/functions.php");
    5. require ("$_SERVER[DOCUMENT_ROOT]/lib/head.inc");
    6. include ("$_SERVER[DOCUMENT_ROOT]/lib/config.php");
    7.  
    8.  
    9. if(isset($_GET['edit'])){
    10. if($_POST){
    11. if($_GET['edit'] == 'pass' or $_GET['edit'] == 'pers' or $_GET['edit'] == 'comm' or $_GET['edit'] == 'ava'){
    12.  
    13. /* Проверка и смена пароля */
    14. if($_GET['edit'] == 'pass'){
    15.        if (isset($_POST['new_pass']) && isset($_POST['new_pass_r']) && isset($_POST['old_pass'])){
    16.  
    17.        $old_pass = $_POST['old_pass'];
    18.        $new_pass = $_POST['new_pass'];
    19.        $cook_id = $_COOKIE['id'];
    20.        $mysql_old_pass = mysql_query ("SELECT * FROM `members` WHERE `Id` = $Id  AND `rpass` = $old_pass");
    21.        $old_row = mysql_num_rows($mysql_old_pass);
    22.        if ($old_row == '0'){
    23.          echo "<center><p>Старый пароль не верен!</p></center>";
    24.        }else{
    25.        if ($_POST['new_pass'] == $_POST['new_pass_r']){
    26.        $query_pass = mysql_query("UPDATE `members` SET `rpass` = $new_pass WHERE `Id` = $cook_id");
    27.        echo "<center><p>Пароль изменён!</p></center>";
    28.        }else{echo "<p>Пароли не совпадают!</p>";}}}else{echo "<p>Одно из полей пропущено!</p>";}
    29. }
    30.  
    31. /* Конец по паролю */
    32. /*Проверка и смена личных данных*/
    33.  
    34. if($_GET['edit'] == 'pers'){
    35.     $name = $_POST['name'];
    36.     $fam = $_POST['fam'];
    37.     $date = $_POST['date'];
    38.  
    39.     $special_arr = Array (trim($_POST['CS_1_6']), trim($_POST['War3']), trim($_POST['CSS']), trim($_POST['CoD4']), trim($_POST['CoD6']));
    40.  
    41.     $special = join(", ", $special_arr);
    42.     if (isset($_POST['name']) && isset($_POST['fam']) && isset($_POST['date']) && isset($special)){
    43.     $cook_id = $_COOKIE['id'];
    44.     $query_pers = mysql_query("UPDATE `members` SET `name` = '$name', `fam` = '$fam', `date` = '$date', `special` = '$special' WHERE `Id` = $cook_id");
    45.     echo "<center><p>Изменения сохранены!</p></center>";
    46.     }else{echo "<center><p>Одно из полей пропущено!</p></center>";}
    47. }
    48. /* Конец по личным данным*/
    49. /* Проверка и смена данных для связи*/
    50.  
    51. if($_GET['edit'] == 'comm'){
    52.     $postEm = addslashes($_POST['email']);
    53.     $em = mysql_query ("SELECT * FROM members WHERE email = '$postEm' ") or die(mysql_error());
    54.     $email = $_POST['email'];
    55.     if(!preg_match("|[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}|i", $email))
    56.     {
    57.         echo "<center><p>E-mail ввёден не корректно</p></center>";
    58.  
    59.     }
    60.     if( mysql_num_rows( $em ) > 0 )
    61.     {  echo "<center><p>Пользователь с таким e-mail'ом уже существует!!</p></center>";  }
    62.  
    63.    $icq = $_POST['icq'];
    64.    if (isset($_POST['email']) && isset($_POST['icq'])){
    65.  
    66.     $query_pers = mysql_query("UPDATE `members` SET `email` = '$email', `icq` = '$icq' WHERE `Id` = $cook_id");
    67.     echo "<center><p>Изменения сохранены!</p></center>";
    68.     }else{echo "<center><p>Одно из полей пропущено!</p></center>";}
    69.   }
    70. /* Конец по данным для связи*/
    71. /* Проверка и смена аватара*/
    72. if($_GET['edit'] == 'ava'){
    73.    $cook_id = $_COOKIE['id'];
    74.    $avatar = $_FILES['avatar']['name'];
    75.    $copy = copy($_FILES['avatar']['tmp_name'], "$_SERVER[DOCUMENT_ROOT]/images/avatars/".$_FILES['avatar']['name']);
    76.    $query_pers = mysql_query("UPDATE `members` SET `avatar` = '$_SERVER[SERVER_NAME]/images/avatars/$avatar' WHERE `Id` = $cook_id")OR die(mysql_error()); ;
    77.    echo "<center><p>Изменения сохранены!</p></center>";
    78. }
    79. /* Конец по аватару*/
    80.  
    81.  
    82. }else{echo "<p>Такой страницы не существует!</p>";}
    83. }
    84. }
    85.  
    86. if (isset($_GET['act'])){
    87. if($_GET['act'] == 'edit'){
    88. $Id = $_COOKIE['id'];
    89. $mysql_memb = mysql_query("SELECT * FROM `members` WHERE `Id` = $Id");
    90. $memb = mysql_fetch_array($mysql_memb);
    91. $nick = $memb['nick'];
    92. $name = $memb['name'];
    93. $fam = $memb['fam'];
    94. $date = $memb['date'];
    95. $special = $memb['special'];
    96. $email = $memb['email'];
    97. $icq = $memb['icq'];
    98. $avatar = $memb['avatar'];
    99. ?>
    100.  
    101.  
    102. <center><h1>Профиль</h1><p>Уважаемый пользователь! Просим вас отнестись к вашим данным серьезно. Все аккаунты с недостоверными данными будут удалены!</p></center>
    103. <table class="news" cellpadding="0" cellspacing="0">
    104. <tr>
    105. <td>
    106. <table class="news" cellpadding="0" cellspacing="0">
    107. <center>
    108. <br />
    109.  
    110. <div class="stepmini">
    111. <a href="profile.php?act=edit&step=pass"><p>Пароль</p></a>
    112. </div>
    113. <div class="stepmini">
    114. <a href="profile.php?act=edit&step=pers"><p>Личные данные</p></a>
    115. </div>
    116. <div class="stepmini">
    117. <a href="profile.php?act=edit&step=comm"><p>Связь</p></a>
    118. </div>
    119. <div class="stepmini">
    120. <a href="profile.php?act=edit&step=ava"><p>Аватар</p></a>
    121. </div>
    122.  
    123. <?php
    124. if(isset($_GET['step'])){
    125. if($_GET['step'] == 'pass' or $_GET['step'] == 'pers' or $_GET['step'] == 'comm' or $_GET['step'] == 'ava'){
    126. if($_GET['step'] == 'pass'){
    127. ?>
    128. <form method="post" action="profile.php?edit=pass" enctype="multipart/form-data">
    129. <center>
    130. <p>Сменить пароль</p>
    131. <p>Старый пароль*:</p>
    132. <input type="password" name="old_pass" id="old_pass" />
    133. <p>Новый пароль*:</p>
    134. <input type="password" name="new_pass" id="new_pass" />
    135. <p>Повтор нового пароля*:</p>
    136. <input type="password" name="new_pass_r" id="new_pass_r" />
    137. <input type="submit" value="Отправить!" />
    138. </center>
    139. </form>
    140. <br />
    141. </center>
    142. </table>
    143.  
    144. </td>
    145. </tr>
    146. </table>
    147. <br/><br/><br/>
    148. <?php
    149. }
    150. if($_GET['step'] == 'pers'){
    151. ?>
    152. <form method="post" action="profile.php?edit=pers" enctype="multipart/form-data">
    153. <center>
    154. <p>Ваше имя:</p>
    155. <input value= "<? echo $name; ?>" type="text" name="name" id="name" />
    156. <p>Ваша фамилия:</p>
    157. <input value="<? echo $fam; ?>" type="text" name="fam" id="fam" />
    158. <p>Год рождения:</p>
    159. <SELECT NAME="date">
    160. <OPTION SELECTED VALUE="<? echo $date; ?>"><? echo $date; ?></OPTION>
    161. <OPTION VALUE="1996">1996</OPTION>
    162. <OPTION VALUE="1995">1995</OPTION>
    163. <OPTION VALUE="1994">1994</OPTION>
    164. <OPTION VALUE="1993">1993</OPTION>
    165. <OPTION VALUE="1992">1992</OPTION>
    166. </SELECT>
    167. <p>Ваша специальность (в какие игры играете):</p>
    168.    <p>
    169.    <input type="checkbox" name="CS 1.6" value="Counter-Strike 1.6" />Counter-Strike 1.6<br>
    170.    <input type="checkbox" name="War3" value="WarCraft III" />WarCraft III<br>
    171.    <input type="checkbox" name="CSS" value="Counter-Strike Source" />Counter-Strike Source<br>
    172.    <input type="checkbox" name="CoD4" value="Call Of Duty 4: Modern Warfare" />Call Of Duty 4: Modern Warfare<br>
    173.    <input type="checkbox" name="CoD6" value="Call Of Duty 6: Modern Warfare2" />Call Of Duty 6: Modern Warfare2<br>
    174.    Сейчас включены: <b><?php echo $special; ?></b>
    175.    </p>
    176.  
    177. <input type="submit" value="Отправить!" />
    178. </center>
    179. </form>
    180. </center>
    181. </table>
    182. </td>
    183. </tr>
    184. </table>
    185. <br/><br/><br/>
    186. <?php
    187. }
    188. if($_GET['step'] == 'comm'){
    189. ?>
    190. <form method="post" action="profile.php?edit=comm" enctype="multipart/form-data">
    191. <center>
    192. <p>E-Mail:</p>
    193. <input type="text" value="<? echo $email; ?>" name="email" id="email" />
    194. <p>ICQ:</p>
    195. <input type="text" value="<? echo $icq; ?>" name="icq" id="icq" /><br />
    196. <input type="submit" value="Отправить!" />
    197. </center>
    198. </form>
    199. </center>
    200. </table>
    201. </td>
    202. </tr>
    203. </table>
    204. <br/><br/><br/>
    205. <?php
    206. }
    207. if($_GET['step'] == 'ava'){
    208. ?>
    209. <form method="post" action="profile.php?edit=ava" enctype="multipart/form-data">
    210. <center>
    211. <p>Ваш аватар:</p>
    212. <img src="http://<? echo $avatar ?>" /><br />
    213. <input type="file" name="avatar" />
    214. <input type="submit" value="Загрузить!" />
    215. </center>
    216. </form>
    217. </center>
    218. </table>
    219. </td>
    220. </tr>
    221. </table>
    222. <br/><br/><br/>
    223. <?php
    224. }
    225. }
    226. }else{ ?>
    227.  <form method="post" action="profile.php?edit=pers" enctype="multipart/form-data">
    228. <center>
    229. <p>Ваше имя:</p>
    230. <input value= "<? echo $name; ?>" type="text" name="name" id="name" />
    231. <p>Ваша фамилия:</p>
    232. <input value="<? echo $fam; ?>" type="text" name="fam" id="fam" />
    233. <p>Год рождения:</p>
    234. <SELECT NAME="date">
    235. <OPTION SELECTED VALUE="<? echo $date; ?>"><? echo $date; ?></OPTION>
    236. <OPTION VALUE="1996">1996</OPTION>
    237. <OPTION VALUE="1995">1995</OPTION>
    238. <OPTION VALUE="1994">1994</OPTION>
    239. <OPTION VALUE="1993">1993</OPTION>
    240. <OPTION VALUE="1992">1992</OPTION>
    241. </SELECT>
    242. <p>Ваша специальность (в какие игры играете):</p>
    243.    <p>
    244.    <input type="checkbox" name="CS 1.6" value="Counter-Strike 1.6" />Counter-Strike 1.6<br>
    245.    <input type="checkbox" name="War3" value="WarCraft III" />WarCraft III<br>
    246.    <input type="checkbox" name="CSS" value="Counter-Strike Source" />Counter-Strike Source<br>
    247.    <input type="checkbox" name="CoD4" value="Call Of Duty 4: Modern Warfare" />Call Of Duty 4: Modern Warfare<br>
    248.    <input type="checkbox" name="CoD6" value="Call Of Duty 6: Modern Warfare2" />Call Of Duty 6: Modern Warfare2<br>
    249.    Сейчас включены: <b><?php echo $special; ?></b>
    250.    </p>
    251. <input type="submit" value="Отправить!" />
    252. </center>
    253. </form>
    254. </center>
    255. </table>
    256. </td>
    257. </tr>
    258. </table>
    259. <br/><br/><br/><?php
    260. }
    261. }
    262. }else{
    263.     if (isset($_GET['Id'])){
    264.     $Id = $_GET['Id'];
    265.     $sql_memb = mysql_query ("SELECT * FROM `members` WHERE `Id` = $Id");
    266.     if ($row_memb = mysql_num_rows($sql_memb) == '0'){
    267.     echo "<center><p>Такого пользователя не найдено!</p></center>";
    268.     }else{
    269.     $memb = mysql_fetch_array($sql_memb);
    270.     $avatar = $memb['avatar'];
    271.     $nick = $memb['nick'];
    272.     $date = $memb['date'];
    273.     $icq = $memb['icq'];
    274.     $special = $memb['special'];
    275.     $fam = $memb['fam'];
    276.     $name = $memb['name'];
    277.     echo "
    278.    <table class=\"news\" cellpadding=\"0\" cellspacing=\"0\">
    279.    <tr><td><br />
    280.    <p>
    281.    <img src=\"http://$avatar\"><br />
    282.    Игровой ник: <b>$nick</b><br />
    283.    Имя: <b>$name</b><br />
    284.    Фамилия: <b>$fam</b><br />
    285.    Дата рождения:  <b>$date</b><br />
    286.    ICQ: <b>$icq</b><br />
    287.    Специальность: <b>$special</b></p><br />
    288.    </td></tr></table>";
    289.     if ($Id == $_COOKIE['id']){
    290.       echo "<a href=\"profile.php?act=edit\"><img src=\"images/edit.png\" /></a>";
    291. }else{
    292. echo "<a href=\"messages.php?act=right&rec=$nick\"><img src=\"images/newmess.png\" \></a>";}
    293.  
    294. }
    295. }
    296. }
    297.  
    298. }else{
    299. $URL="login.php";
    300. header ("Location: $URL");
    301. }
    302.  
    303.  
    304.  
    305. require ("$_SERVER[DOCUMENT_ROOT]/lib/end.inc");
    306. ?>
    [sql]CREATE TABLE `members` (
    `Id` int(11) NOT NULL auto_increment,
    `rlogin` varchar(255) default NULL,
    `rpass` varchar(255) character set cp1251 default NULL,
    `date` varchar(255) character set cp1251 default NULL,
    `name` varchar(255) character set cp1251 default NULL,
    `fam` varchar(255) character set cp1251 default NULL,
    `email` varchar(255) character set cp1251 default NULL,
    `icq` varchar(255) character set cp1251 default NULL,
    `special` varchar(255) character set cp1251 default NULL,
    `force` varchar(255) character set cp1251 default NULL,
    `status` varchar(255) character set cp1251 default NULL,
    `avatar` varchar(255) character set cp1251 default NULL,
    `nick` varchar(255) character set cp1251 default NULL,
    PRIMARY KEY (`Id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 AUTO_INCREMENT=141 ;
    [/sql]
     
  7. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    ну и чо?
     
  8. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
     
  9. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
     
  10. Einbaukueche

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

    С нами с:
    14 апр 2010
    Сообщения:
    34
    Симпатии:
    0
    Адрес:
    Там, где много гор и пива.
    Для начала напишите в самом начале скрипта, после <php? :

    Код (Text):
    1.  
    2. error_reporting(E_ALL);
    3. ini_set('display_errors', 1);
    4.  
    5. echo('GET:' . var_export($_GET, true));
    6. echo('POST:' . var_export($_POST, true));
    7. echo('FILES' . var_export($_FILES, true));

    Каждый вызов mysql_query( ... ) превратите в
    Код (Text):
    1.  
    2. mysql_query( ... ) OR die(mysql_error());
    -----------------
    Код (Text):
    1.  
    2. UPDATE `members` SET `avatar` = '$_SERVER[SERVER_NAME]/images/avatars/$avatar' WHERE `Id` = $cook_id
    перепишите в
    Код (Text):
    1.  
    2. UPDATE `members` SET `avatar` = '{$_SERVER['SERVER_NAME']}/images/avatars/$avatar' WHERE `Id` = $cook_id
    --------------------
    Замените все
    Код (Text):
    1.  
    2. $_SERVER[DOCUMENT_ROOT]
    на
    Код (Text):
    1.  
    2. {$_SERVER['DOCUMENT_ROOT']}
    ------------------------

    И начинайте тестировать.


    --------------------

    Просто на будущее:
    Если скрипт заканчивается на
    Код (Text):
    1.  
    2. ?>
    это ?> не надо и не стоит писать.
     
  11. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Код (Text):
    1. GET:array ( 'Id' => '133', )POST:array ( )FILESarray ( )
    вот что получилось без POST запроса
    Код (Text):
    1.  
    2. GET: array ( 'edit' => 'ava', )POST: array ( )FILES array ( 'avatar' => array ( 'name' => 'ava.png', 'type' => 'image/png', 'tmp_name' => 'C:\\WINDOWS\\Temp\\php4C.tmp', 'error' => 0, 'size' => 2689814, ), )
     
  12. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    решил проблему выносом неработющей части из if ($_POST) думаю потому что там используется $_FILES
     
  13. Einbaukueche

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

    С нами с:
    14 апр 2010
    Сообщения:
    34
    Симпатии:
    0
    Адрес:
    Там, где много гор и пива.
    Ну вот и отлично! :)
     
  14. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    а, вот маленький вопрос не по теме конечно но все таки:
    есть $date = date("m.d.Y");
    надо прибавить неделю
    как?
     
  15. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  16. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    спасибо=)
     
  17. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    а чтобы было в формате дд.мм.гггг?
     
  18. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    спасибо, уже нашёл