Здравствуйте. Вызываю модальное окно таким образом. Код (PHP): <img id="button" style="margin-left:0px;margin-top:0px;" src="<?php echo $avatar; ?>" /> <div id="popupContact"> <a id="popupContactClose">x</a> <?php include_once('photo.php'); ?> </div> <div id="backgroundPopup"></div> photo.tpl содержание формы Код (PHP): <form method="post" action="photo.php" target="frame_ajax" enctype="multipart/form-data"> <input type="file" name="filename"><br> <input type="submit" id="reload" name="image" value="Загрузить"> </form> <iframe name="frame_ajax" src="photo.php" width="0" height="0" style="display:none"></iframe> photo.php Код (PHP): <?php require_once('config.php'); include_once('tpl/head.tpl'); if($_POST['image']){ function is_valid_type($file) { $valid_types = array("image/jpg","image/jpeg", "image/bmp", "image/gif" , "image/png"); if (in_array($file['type'], $valid_types)) return 1; return 0; } $TARGET_PATH = "/photo/"; $image = $_FILES['filename']; $image['name'] = mysql_real_escape_string($image['name']); $random = rand(1,100000000); $image['name'] = $random . ".jpg"; $TARGET_PATH .= $image['name']; if ($image['name'] == "" ) { $errorimage= "Изображение не указано<br>"; include_once('tpl/fullinfo.tpl'); exit; } if (!is_valid_type($image)) { $errorimage .= "Вы можете загружать файлы jpeg, gif, bmp, png, jpg<br/>"; include_once('tpl/photo.tpl'); exit; } if($_FILES['filename']["size"] > 1024*3*1024){ $errorimage .= "Размер файла привышает три мегабайта<br/>"; include_once('tpl/photo.tpl'); exit; } if (move_uploaded_file($image['tmp_name'],$TARGET_PATH)) { $sel = mysql_query("SELECT photo FROM `users` WHERE `id`='$id'") or die (mysql_error()); $data = $image['name'] . ","; while($row = mysql_fetch_array($sel)) { $photos = $row['photo']; } $photo = $data.$photos; $res = mysql_query("UPDATE `users` SET `photo`='$photo' WHERE `id`='$id'") or die (mysql_error()); $errorimage .= "Данные успешно сохранены<br/>"; }else{ $errorimage .= "Невозможно загрузить файл. Проверьте права доступа к директории (чтение/запись)"; include_once('tpl/photo.tpl'); exit(); } } // вывод изображений из базы $exportimage = mysql_query("SELECT photo FROM `users` WHERE `id`='$id'") or die (mysql_error()); if(mysql_num_rows($exportimage)>0){ while($rowexport = mysql_fetch_array($exportimage)){ $export[] .= $rowexport['photo']; } $implode = implode(',',$export); $explode = explode(",", $implode); $explode_new = array_diff($explode, array('')); // print_r ($explode_new); $avatar_new = current($explode_new); if($avatar_new == ""){ $avatar = "http://www.cyberforum.ru/images/No-Avatar.png"; }else{ $avatar = "photo/" . $avatar_new; } $_SESSION['avatar'] = $avatar; $js = "onclick = 'setBigImage(this)' "; echo "<center><table>"; foreach ($explode_new as $k => $v){ echo "<tr><input type='image' name='submit' class='knopka' id=key-$v value='".$v."' style='width:150px;height:200px;' " . $js." src='photo/" . $v, '' ."'/></tr>"; } echo "</table></center>"; }else{ $errorimage .= "У Вас пока нет изображений"; } mysql_close(); include_once('tpl/photo.tpl'); ?> Сначала открываю модальное окно, с помощью iframe отправляется форма для загрузки изображения на сервер. Изображение сохраняется, в базу MySQL данные о новых изображениях записываются. Но скрипт который выводит данные из базы данных не срабатывает. Скажите и укажите, пожалуйста на ошибку, ведь данные в базу записываются и изображения сохраняются на сервере, почему скрипт не показывает новые изображения которые заливает? Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Отладку надо делать: http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html Ещё в google chrome и других есть инструменты разработчика, для отладки дополнительной
Спасибо за совет, перечитал FAQ по поиску ошибок в своем коде. Проверил исходный код, в коде присутствует. Код (PHP): <center> <table> <tr> <input type='image' name='submit' class='knopka' id=key-37539077.jpg value='37539077.jpg' style='width:150px;height:200px;' onclick = 'setBigImage(this)' src='photo/37539077.jpg'/> </tr> </table> </center> <div id="block"> <div id="page"> <div class="block_main rounded"> <p> <img id="photo" src="photo/37539077.jpg" alt="" title="" style="margin: 0 0 0 10px;" /> </p> <br /> Но изображение не отображается. Код (PHP): <center> <table> <tr> <input type='image' name='submit' class='knopka' id=key-37539077.jpg value='37539077.jpg' style='width:150px;height:200px;' onclick = 'setBigImage(this)' src='photo/37539077.jpg'/> </tr> </table> </center> Это вывод изображений с массива Код (PHP): echo "<center><table>"; foreach ($explode_new as $k => $v){ Это полный photo.tpl Код (PHP): <div id="block"> <div id="page"> <div class="block_main rounded"> <p> <img id="photo" src="<?php if(!isset($avatar)){ $avatar = 'images/No-Avatar.png'; echo $avatar; }else{ echo $avatar; } ?>" alt="" title="" style="margin: 0 0 0 10px;" /> </p> <?php echo $errorimage; ?> <form method="post" target="frame_ajax" enctype="multipart/form-data"> <input type="file" name="filename"> <br> <input type="submit" id="reload" name="image" value="Загрузить"> </form> <iframe name="frame_ajax" src="photo.php" width="0" height="0" style="display:none"></iframe> <form action="crop.php" method="post"> <input type="hidden" name="x1" value="" /> <input type="hidden" name="y1" value="" /> <input type="hidden" name="x2" value="" /> <input type="hidden" name="y2" value="" /> <input type="hidden" name="w" value="" /> <input type="hidden" name="h" value="" /> <input type="hidden" name="arr" id="arr" value=""> <input type='submit' value='Crop' /> </form> </div> </div> </div> <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script> <script type="text/javascript" src="js/jquery.imgareaselect.pack.js"></script> <script type="text/javascript"> function preview(img, selection) { var scaleX = 150 / (selection.width || 1); var scaleY = 200 / (selection.height || 1); $('#photo + div > img').css({ overflow: 'hidden', width: Math.round(scaleX * 600) , height: Math.round(scaleY * 400) , marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', marginTop: '-' + Math.round(scaleY * selection.y1) + 'px' }); } $(document).ready(function (arr) { $('<div><img src="<?php if(!isset($avatar)){ $avatar = 'images/No-Avatar.png'; echo $avatar; }else{ echo $avatar; } ?>" style="position: relative;" /><div>') .css({ float: 'left', position: 'relative', overflow: 'hidden', width: '150px', height: '200px' }) .insertAfter($('#photo')); $('#photo').imgAreaSelect({ aspectRatio: '1:1', handles: true, onSelectChange: preview, onSelectEnd: function ( image, selection ) { $('input[name=x1]').val(selection.x1); $('input[name=y1]').val(selection.y1); $('input[name=x2]').val(selection.x2); $('input[name=y2]').val(selection.y2); $('input[name=w]').val(selection.width); $('input[name=h]').val(selection.height); } }); }); </script> В 6 строчке должно выводиться изображение, в исходном коде оно имеется. Код (PHP): <img id="photo" src="photo/37539077.jpg" alt="" title="" style="margin: 0 0 0 10px;" /> Только на странице его нет, подскажите, в чем может быть дело? Спасибо за подсказку, ивиняюсь, до этого не знал.
Если изображение не отображается, то что отвечает веб сервер на запрос изображения которое не отобразилось? Можно изображение открыть в новой вкладке или посмотреть в инструменте для разработчиков, например в google chrome можно вызвать по F12 , перейти на страницу и все запросы будут видны во вкладке networks. Нажми на запрос картинки и посмотри что там происходит. Добавлено спустя 1 минуту 10 секунд: Для этого форму и есть, чтобы показать как всё работает и как самостоятельно найти не стыковки, тут не за что извиняться.
Загружаю изображение на сервер. В базу оно добавляется, на странице не отображается. Открываю networks в chrome, там видно, что изображение добавилось которое присутствует в базе данных. У одного статус 200, у другого 304. Может из-за такого статуса сразу не отображается? Перезагружаю страницу, картинка отображается и статус у всех изображений 200.
Salvat если у картинки статус 200 или 304, но они не отображаются, то что им сервер возвращает? Смотреть можно во вкладке preview когда нажал на этот запрос.
В networks жми на запрос картинки и там откроется подробная информация о запросе, вкладка preview тоже будет.
В preview картинка отображается нормальна, которая со статусов 304 в header Только почему GET, когда она отправляется и принимается POST запросом.
Ну если ты картинку через img тег подгружаешь, то это GET. Так что там во вкладке preview для картинки? Видно картинку? Может html код там? Или пусто? Может у тебя кэширование включено, тоже в заголовках cache посмотри, и тебе показывает что-то старое.
Прикладываю скрин-шоты. Две отображаются в preview, одна на аватар должна идти, другая для работы с ней.
Все верно. Добавлено спустя 38 минут 47 секунд: Имеются подозрения на iframe который отправляет форму Код (PHP): <form method="post" action="addphoto.php" target="frame_ajax" enctype="multipart/form-data"> <input type="file" name="filename"><br> <input type="submit" id="reload" name="image" value="Загрузить"> </form> <iframe name="frame_ajax" src="addphoto.php" width="0" height="0" style="display:none"></iframe> Т.к. и скрипт отдельно с iframe не отображает сразу же изображение, только после перезагрузки. А iframe необходим чтобы отправить данные без перезагрузки страницы, потому, что окно модальное закроется. И дальше если думать, в исходнике есть, в preview тоже есть и отображается, а вот на страницу не подхватывает.
denis01, на счет бардака, там стиль который переписал давненько, перенес его в другое место в default.css, а его удалить с head забыл. Не совсем понял этот момент.
Если я правильно понял, то ты делаешь post в iframe с картинкой, в невидимый iframe грузится страница. Вот и всё. Как я понял ты хочешь показать результат загрузки, тогда надо это сделать, например через javascript обратится к модальному окну из iframe addphoto.php и что-то сделать, фотку сменить или текст написать. Поищи: javascript iframe parent
denis01, большое спасибо. Переделал чуть по другому. Не файл стал инклудить addphoto.php, а с помощью фрейма. Столько мучался, а надо было-то делов Спасибо еще раз.