За последние 24 часа нас посетили 18884 программиста и 1623 робота. Сейчас ищут 914 программистов ...

вывод картинки из базы mysql

Тема в разделе "PHP и базы данных", создана пользователем danila, 20 мар 2011.

  1. danila

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

    С нами с:
    11 мар 2011
    Сообщения:
    5
    Симпатии:
    0
    всем привет. помогите решить следующую задачку.
    Суть: картинки добавляются в ьазу данных. неудаётся вывести. вместо картинки выводит 0

    база mysql: два поля, в поле куда записывается картинка имеет тип bloob
    код формы добавления
    Код (Text):
    1. <?
    2. function show_form(){
    3.         // подключаем файл с настройками подключения к БД
    4.         require '../inc/connect.php';
    5.  
    6.         //делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, посокльку на данном этапе они еще не используются.
    7.         $result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);
    8.         $row = mysql_fetch_array($result);
    9. ?>
    10. <!-- далее идет обычный HTML -->
    11. <form method="post" action="">
    12.    
    13.             <p>
    14.               Photo:
    15.             </p>
    16.             <input type="hidden" name="size" value="350000">
    17.             <input type="file" name="body">  
    18.             <p>
    19.               Please Enter any other information about the band member here.
    20.             </p>
    21.            <input type="submit" value="отправить" name="edit">
    22.           </form>
    23. //
    24.  
    25. <?php
    26. } // функция show_form() закончилась
    27.  
    28. function complete(){
    29.       // подключаем файл с настройками подключения - это мы уже знаем.
    30.       require '../inc/connect.php';
    31.  
    32.       // делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд.
    33.       $result = mysql_query("SELECT * FROM pages WHERE id = '".$_POST['id']."';", $link);
    34.  
    35.       // перекидываем данные из MySQL в пхпшный ассоциативный массив
    36.       $row = mysql_fetch_array($result);
    37.  
    38.       // проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД
    39.       if(empty($row['id']))
    40.             $query = "INSERT INTO pages (body) VALUES ('".mysql_real_escape_string($_POST['body'])."'
    41. )";
    42.       // а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем
    43.       else
    44.             $query = "UPDATE pages SET
    45.                                      body = '".mysql_real_escape_string($_POST['body'])."'
    46.                      WHERE id = '".$_POST['id']."';";
    47.  
    48.       // непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)
    49.       mysql_query($query, $link);
    50.  
    51.       // ну и просто выводим крикливую надпись, что скрипт отработал
    52.       echo '<h3>Данные обновлены</h3>';
    53. }
    54. function show_pages() {
    55.         require '../inc/connect.php';
    56.         echo '
    57. <table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
    58. <tr bgcolor="#B0ADC3">
    59.   <td>
    60.      <a href="?id=new">Добавить страницу</a>
    61.   </td>
    62. </tr>
    63. </table>';
    64.         echo '
    65. <table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
    66. <tr bgcolor="#B0ADC3">
    67.   <td>
    68.      <b>Номер страницы</b>
    69.   </td>
    70. </tr>';
    71.         $result = mysql_query("SELECT * FROM pages ORDER BY id;", $link);
    72.         while($row = mysql_fetch_array($result)){
    73.                echo '
    74. <tr bgcolor="#ffffff">
    75.   <td>
    76.      <a href="?id='.$row['id'].'">'.$row['id'].'</a>
    77.   </td>
    78. </tr>';
    79.         }
    80.         echo '
    81. </table>';
    82.  
    83. }
    84.  
    85. // функция настолько простая, что мне даже и объяснять там нечего. Опять идет обычный html, в котором встречается запрос к БД, в котором мы просим вывести все наши записи отсортировав их по id. Соответственно, каждый полученный из базы id мы выводим ссылкой, чтобы в него можно было зайти. Короче, ща запустим и будет все понятно ;-)
    86.  
    87. if($_POST['edit']) complete(); // если была нажата кнопочка "отправить", которая именуется edit - тогда вызываем функию complete()
    88. if($_GET['id']) show_form(); // если мы нажали на ссылку в функции show_pages(), то значит мы передали в переменную $_GET['id'] тот самый id, который нас интересует. Поэтому в этом слчае вызываем форму редактирования нашей странички.
    89. else show_pages(); // ну, а если мы не выбрали определенный id - запускаем нашу функцию выбора id.
    90. ?>
    вот код вывода

    Код (Text):
    1. <?  
    2.         require 'connect.php';
    3.  
    4.         //htmlspecialchars() Преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались.
    5.         $_GET['id'] = htmlspecialchars($_GET['id']);
    6.  
    7.         // если у нас не запрашивали никакую определенную страницу, то будем выводить нашу самую первую. Если Вы ее давно удалили, поставьте вместо единички идентификатор той странички, которую Вы хотели бы грузить по умолчанию
    8.         if(empty($_GET['id'])) $_GET['id'] = 1;
    9.         $result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);
    10.         $row = mysql_fetch_array($result);
    11. ?>
    12. <html>
    13. <head>
    14.   <title></title>
    15. </head>
    16. <body>
    17. <!-- меню делаем ручками, по принципу: -->
    18. <a href="?id=1">первая страница</a>
    19. <a href="?id=9">вторая страница</a>
    20. <a href="?id=8">контакты</a><br /><br />
    21. <?//stripslashes() - Удаляет экранирование символов - а их мы понаставили в админке, когда загружали данные в базу с помощью функции mysql_real_escape_string()?>
    22. <?=stripslashes($row['body']);?>
    23. <?
    24. // 25
    25. $Row = mysql_query("SELECT * FROM pages  WHERE id = '".$_GET['id']."';", $link);
    26.  
    27. print $Row["pages"];
    28. ?>
    29. </body>
    30. </html>
    помогите срочно надо.
     
  2. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    хранение картинок в базе - зло

    это даже для простых данных ппц, чего уж там говорить о картинках...

    и ЭТО должно выводить картинку посреди формы? по-мойму ты что-то попутал.


    а по теме:

    забыл enctype="multipart/form-data"

    файлы загружаются в суперглобальный массив $_FILES, и никак не $_POST

    раздел фриланса ниже. там сделают быстро, качественно и, главное, недорого.
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я не сказал бы, что это зло. Просто это как жопой жрать. Простите за выражение.
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Согласен, но пути господни .... ©
     
  5. danila

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

    С нами с:
    11 мар 2011
    Сообщения:
    5
    Симпатии:
    0
    Gromo
    спасибо за совет.
    а все остальные видно ахзбуку забыли. я не просил вас критику расписывать, а написал чтобы получить помощь.
    о вас у меня скалось впечатление как о балаболах, кроме Gromo
     
  6. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    и такое в каждом первом посте про помощь)
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Мне пофиг на твое впечатление. Сегодня ты тут есть, завтра ты забудешь про форум.

    Просил - не просил. Это форум, тут говорят все, что хотят, только не нарушая правила. Тем более, что помощь бесплатная, поэтому приходиться довольствоваться тем, что есть, а не возмущаться. Это неуважение к нам.
     
  8. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Kreker
    абсолютно согласен.

    danila
    я тебе описал основные ошибки, и основные пути решения.
    добавлять было нечего, потому остальные просто приняли
    участие в обсуждении - они комментировали мой пост, а не твой.