За последние 24 часа нас посетили 17416 программистов и 1650 роботов. Сейчас ищут 854 программиста ...

Вывод фото из базы.

Тема в разделе "PHP для новичков", создана пользователем 1Touch2Heaven, 10 фев 2009.

  1. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    Знаю. Таких тем в сети выше башни. Однако что-то не получается, не могу понять. В принципе, все должно быть просто.

    код добавления данных в таблицу:
    Код (Text):
    1.  
    2. <?
    3. $hostname = "localhost";
    4. $username = "root";
    5. $password = "";
    6. $dbName = "personal";
    7. $table = "promo";
    8.  
    9. mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
    10.  
    11. mysql_select_db($dbName) or die (mysql_error());
    12.  
    13. $query = "INSERT INTO $table SET fname='".$_POST['fname']."', sname='".$_POST["sname"]."',
    14. tname='".$_POST["tname"]."', date_birth='".$_POST["date_birth"]."',
    15. pas_ser='".$_POST["pas_ser"]."',pas_num='".$_POST["pas_num"]."',vidan_who='".$_POST["vidan_who"]."',
    16. vidan_when='".$_POST["vidan_when"]."',liveplace_city='".$_POST["liveplace_city"]."',
    17. liveplace_street='".$_POST["liveplace_street"]."',liveplace_house='".$_POST["liveplace_house"]."',
    18. liveplace_flat='".$_POST["liveplace_flat"]."',flat_phone='".$_POST["flat_phone"]."',
    19. mobile_phone='".$_POST["mobile_phone"]."',drive_lic='".$_POST["drive_lic"]."',photo_1='".$_POST["photo_1"]."'";
    20.  
    21. mysql_query($query) or die(mysql_error());
    22.  
    23. mysql_close();
    24.  
    25. echo ("<div style=\"text-align: center; margin-top: 10px;\">
    26. <font color=\"green\">Данные успешно сохранены!</font>
    27. <br /><br />
    28. <a href=\"index.html\">Вернуться назад</a></div>");
    29.  
    30. ?>
    все хорошо. скрипт данные записывает в таблицу, включая в поле photo_1. (тип поля blob)
    Если войти в phpMyAdmin, то в этом поле для каждой записи стоит что-то вроде [BLOB - 13 Bytes].
    Я так понимаю что изображения в базе размещаются.
    При попытке их вывести оттуда:

    Код (Text):
    1.  
    2. <?
    3.  
    4. $hostname = "localhost";
    5. $username = "root";
    6. $password = "";
    7. $dbName = "personal";
    8.  
    9. $table = "promo";
    10.  
    11. mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
    12.  
    13. mysql_select_db($dbName) or die (mysql_error());
    14.  
    15. $query = "SELECT fname,sname,tname,sex,date_birth,
    16. pas_ser,pas_num,vidan_who,vidan_when,liveplace_city,liveplace_street,liveplace_house,
    17. liveplace_flat,flat_phone,mobile_phone,drive_lic,photo_1 FROM $table";
    18.  
    19. $res = mysql_query($query) or die(mysql_error());
    20.  
    21. echo ("
    22. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    23. <html xmlns=\"http://www.w3.org/1999/xhtml\">
    24.  
    25. <head>
    26.  
    27.     <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />
    28.  
    29.     <title>Вывод данных</title>
    30.  
    31. <style type=\"text/css\">
    32. <!--
    33. body { font: 12px Georgia; color: #666666; }
    34. h3 { font-size: 16px; text-align: center; }
    35. table { width: 700px; border-collapse: collapse; margin: 0px auto; background: #E6E6E6; }
    36. td { padding: 3px; text-align: center; vertical-align: middle; }
    37. .buttons { width: auto; border: double 1px #666666; background: #D6D6D6; }
    38. -->
    39. </style>
    40.  
    41. </head>
    42.  
    43. <body>
    44.  
    45. <h3>Вывод ранее сохраненных данных</h3>
    46.  
    47. <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">
    48.  <tr style=\"border: solid 1px #000\">
    49.   <td align=\"center\"><b>Фамилия</b></td>
    50.   <td align=\"center\"><b>Имя</b></td>
    51.   <td align=\"center\"><b>Отчество</b></td>
    52.   <td align=\"center\"><b>Дата рождения</b></td>
    53.   <td align=\"center\"><b>Фото</b></td>
    54.  </tr>");
    55.  
    56. while ($row = mysql_fetch_array($res)) {
    57.     echo "<tr>\n";
    58.     echo "<td>".$row['sname']."</td>\n";
    59.     echo "<td>".$row['fname']."</td>\n";
    60.     echo "<td>".$row['tname']."</td>\n";
    61.     echo "<td>".$row['date_birth']."</td>\n";
    62.     echo "<td>".$row['photo_1']."</td>\n</tr>\n";
    63. }
    64.  
    65. echo ("</table>\n");
    66.  
    67. mysql_close();
    68.  
    69. echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"index.html\">Вернуться назад</a></div>");
    70.  
    71. ?>
    Все строки заполняет нормально, а в столбце Фото дает просто название файла (я так понял)

    Собственно вопрос, как сделать так, чтобы он давал нормальное изо необходимых размеров...
    Если можно, расскажите немного поподробнее, я хоть и новичок совсем, но учусь быстро.. Просто уже тормоз, за сутки сидения(
     
  2. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    где-то видел, люди писали, что плохо хранить картинки в бд, как по мне лучше их хранить в папке... в бд залей путь к картинке а саму ее положи куда-то...

    ----
    а перед этим
    PHP:
    1.  
    2. <?php
    3. ...',photo_1='".$_POST["photo_1"]."...
    4.  
    ты, что-то с картинкой делал? или как ты ее обрабатываешь перед заливкой в бд... ?
     
  3. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    Код (Text):
    1. <input type="file" name="photo_1" size="27">
    я прямо из формы пытаюсь передать...
    Да, я тоже читал, что не рекомендуется в базе хранить фото, но в моем случае, нужна такая система, чтобы она автоматически аплоад делала фото на серв и прописывала ссылку на неё... Это мне точно не потянуть(((
     
  4. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    Код (Text):
    1.  
    2. <?
    3. $hostname = "localhost";
    4. $username = "root";
    5. $password = "";
    6. $dbName = "personal";
    7.  
    8. $table = "promo";
    9.  
    10. mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
    11.  
    12. mysql_select_db($dbName) or die (mysql_error());
    13.  
    14. $del = $query = "delete from $table where (id='$del')";
    15.  
    16. mysql_query($query) or die(mysql_error());
    17.  
    18.  
    19. $query = "SELECT * FROM $table";
    20. $res = mysql_query($query) or die(mysql_error());
    21. $row = mysql_num_rows($res);
    22.  
    23. echo ("
    24. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    25. <html xmlns=\"http://www.w3.org/1999/xhtml\">
    26.  
    27. <head>
    28.  
    29.     <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />
    30.  
    31.     <title>Вывод и удаление данных</title>
    32.  
    33. <style type=\"text/css\">
    34. <!--
    35. body { font: 12px Georgia; color: #666666; }
    36. h3 { font-size: 16px; text-align: center; }
    37. table { width: 700px; border-collapse: collapse; margin: 0px auto; background: #E6E6E6; }
    38. td { padding: 3px; text-align: center; vertical-align: middle; }
    39. .buttons { width: auto; border: double 1px #666666; background: #D6D6D6; }
    40. -->
    41. </style>
    42.  
    43. </head>
    44.  
    45. <body>
    46.  
    47. <h3>Вывод и удаление ранее сохраненных данных</h3>
    48.  
    49. <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">
    50.  <tr style=\"border: solid 1px #000\">
    51.   <td><b>#</b></td>
    52.   <td align=\"center\"><b>Фамилия</b></td>
    53.   <td align=\"center\"><b>Имя</b></td>
    54.   <td align=\"center\"><b>отчество</b></td>
    55.   <td align=\"center\"><b>Фото</b></td>
    56.   </tr>
    57. ");
    58.  
    59. while ($row = mysql_fetch_array($res)) {
    60.     echo "<tr>\n";
    61.     echo "<td>".$row['id']."</td>\n";
    62.     echo "<td>".$row['sname']."</td>\n";
    63.     echo "<td>".$row['fname']."</td>\n";
    64.     echo "<td>".$row['tname']."</td>\n";
    65.     echo "<td>".$row['photo_1']."</td>\n";
    66.  
    67.     echo "<td><a name=\"del\" href=\"del_data.php?del=".$row["id"]."\">Удалить</a></td>\n";
    68.     echo "</tr>\n";
    69. }
    70.  
    71. echo ("</table>\n");
    72.  
    73. mysql_close();
    74.  
    75. echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"index.html\">Вернуться назад</a></div>");
    76.  
    77. ?>
    пытаюсь проработать механизм удаления записи. Ссылки генерит нормально, все вроде ок, а не удаляет.. в ошибку не падает... где я ошибся?
     
  5. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    1. пиши пжл в тегах php с открывающим <?php для читабельности...
    2. я так понял это скрипт del_data.php который вызывает сам себя... при нажатии удалить...?
    3. попробуй так...
    PHP:
    1.  
    2. <?php
    3. $del = $_GET['del'];
    4. $query = "delete from $table where id='$del'";
    5.  
    4. удали тут "$del" $query = "delete from $table ... зачем оно нужно...
    5. называй переменные разными именами там много одноименных
    6. желательно, что б mysql_connect возвращал тебе результат подключения в переменную...
     
  6. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    1Touch2Heaven это вы так картинку выводите????
    Выводить надо так:
    Код (Text):
    1. echo '<td><img src="script.php?id='.$row['id'].'"></td>';
    В script.php уже выводите картинку из базы по id...
     
  7. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    2 alexeurodnepr, unicross спасибо за советы...
    И вообще спасибо, что с новичком возитесь.... сейчас буду пробовать...
     
  8. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    так.. del_data.php заработал)))
    щазз второй попробуем косячокс исправить)))
     
  9. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    можно глупый вопрос?
    я в принципе про картинку вопрос то и задал, что я даже в скрипт не могу по id её вывести, а только имя файла ((
     
  10. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Что сохранили в базе, то и выводите... :D
     
  11. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    во как....
    вроде картинку...
    но как её оттуда забрать?)))
    Эта зараза все равно упорно выводит мне имя самого файла.....(((
     
  12. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    у меня тут возникает интересный тогда вопрос... возможно скрипт сохраняет там имя файла? (((
    звезда в шоке(( ч.д.?
     
  13. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    так.. в таблице тип поля blob, MIME-тип image/jpeg, трансформация броузера не стоит, но я уже потыркал - ничего не меняется... данные добавляются... хотя я это уже выше писал((

    и действительно! имя файла nightmare.jpg, в поле попадает 13 байт.... ровняк сколько символов в названии...
    вопрос: подскажите пожалуйста, как правильно загрузить картинку в базу?
     
  14. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
  15. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    я это читал))) спасибо))) Но у меня же не просто 1 файл взял и загрузил.... у меня форма на 20 полей(
     
  16. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    А какая разница 1 или 100 ??? Даже картинок может быть много в одной форме...
     
  17. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    да я уже понял))) я тормоз, признаю))))
     
  18. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    не работает. даже если 1 к 1 сделать так, как указано. Ни ошибок, ни добавления инфо в таблицу...
     
  19. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Покажите ваш код добавления в базу...
     
  20. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    я взял код, который разместили Вы:
    Код (Text):
    1.  
    2. <HTML>
    3. <HEAD>
    4. <TITLE>Загрузка файлов</TITLE>
    5. </HEAD>
    6. <BODY>
    7. <B>Загрузка файлов</B>
    8. <BR>
    9. <FORM method="POST" enctype="multipart/form-data">
    10. <INPUT type="file" name="file_name">
    11. <INPUT type="submit" value="Загрузить">
    12. </FORM>
    13. <?php
    14. error_reporting(E_ALL);
    15. if(isset($_FILES["file_name"]) && $_FILES["file_name"]["error"] == 0
    16.  && $_FILES["file_name"]["size"] > 0 && $_FILES["file_name"]["type"] == 'image/gif') {
    17.  $foto = file_get_contents( $_FILES["file_name"]["tmp_name"] );
    18.  $link = mysql_connect("localhost", "root", "") or die("Не могу подключиться");
    19.  mysql_select_db('tests') or die ('Не могу выбрать БД');
    20.  $foto = mysql_real_escape_string($foto);
    21.  $q = "insert into `img` values (NULL, '" . $foto . "')";
    22.  if (mysql_query($q)) echo "Файл загружен";
    23.  else echo "Ошибка при загрузке";
    24.  mysql_close($link);
    25.   }
    26.  ?>
    27.  </BODY>
    28. </HTML>
    сделал так же таблицу...
    в общем все как описано в топике, который Вы указали....
     
  21. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Вы загружаете картинки в GIF или нет?
     
  22. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    да.... уже проверил....
    блин, может у меня что-то с самим ПО?
     
  23. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Посмотрите код в переменной
    $_FILES["file_name"]["error"]
    или выведите полностью массив

    Код (Text):
    1. print_r($_FILES["file_name"]);
     
  24. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    Array ( [name] => x_0eba1b1e.jpg [type] => image/jpeg [tmp_name] => Z:\tmp\php22.tmp [error] => 0 [size] => 25002 )
     
  25. 1Touch2Heaven

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

    С нами с:
    11 янв 2009
    Сообщения:
    70
    Симпатии:
    0
    Адрес:
    Калининград
    таким образом все передается...