За последние 24 часа нас посетил 55791 программист и 1796 роботов. Сейчас ищет 901 программист ...

Модальное окно, не срабатывает код

Тема в разделе "PHP для новичков", создана пользователем Salvat, 4 мар 2016.

  1. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    Здравствуйте.
    Вызываю модальное окно таким образом.
    Код (PHP):
    1. <img id="button" style="margin-left:0px;margin-top:0px;" src="<?php echo $avatar; ?>" />
    2.  <div id="popupContact">
    3.         <a id="popupContactClose">x</a>
    4.        <?php include_once('photo.php'); ?>
    5.  </div>
    6.  
    7.     <div id="backgroundPopup"></div>
    photo.tpl содержание формы
    Код (PHP):
    1. <form method="post" action="photo.php"  target="frame_ajax" enctype="multipart/form-data">
    2. <input type="file" name="filename"><br> 
    3. <input type="submit" id="reload" name="image" value="Загрузить">
    4. </form>
    5. <iframe name="frame_ajax" src="photo.php" width="0"
    6. height="0" style="display:none"></iframe> 
    photo.php

    Код (PHP):
    1. <?php
    2. require_once('config.php');
    3. include_once('tpl/head.tpl');
    4.  
    5.  
    6. if($_POST['image']){
    7.  function is_valid_type($file) { 
    8.         $valid_types = array("image/jpg","image/jpeg", "image/bmp", "image/gif" , "image/png");
    9.                if (in_array($file['type'], $valid_types)) 
    10.                      return 1; 
    11.                      return 0; 
    12. }
    13.  
    14.  
    15.         $TARGET_PATH =  "/photo/";
    16.         $image = $_FILES['filename'];
    17.         $image['name'] = mysql_real_escape_string($image['name']);
    18.         $random = rand(1,100000000);
    19.         $image['name'] = $random . ".jpg";
    20.         $TARGET_PATH .= $image['name']; 
    21.  
    22.                if ($image['name'] == "" ) { 
    23.                     $errorimage= "Изображение не указано<br>"; 
    24.                     include_once('tpl/fullinfo.tpl');
    25.                     exit;
    26.                }
    27.                if (!is_valid_type($image)) {
    28.                     $errorimage .= "Вы можете загружать файлы jpeg, gif, bmp, png, jpg<br/>";
    29.                     include_once('tpl/photo.tpl');
    30.                     exit; 
    31.                }
    32.                if($_FILES['filename']["size"] > 1024*3*1024){
    33.                     $errorimage .= "Размер файла привышает три мегабайта<br/>";
    34.                     include_once('tpl/photo.tpl');
    35.                     exit;
    36.                }
    37.  
    38.                   if (move_uploaded_file($image['tmp_name'],$TARGET_PATH)) { 
    39.                             $sel = mysql_query("SELECT photo FROM `users` WHERE `id`='$id'") or die (mysql_error());
    40.                             $data = $image['name'] . ",";
    41.                                   while($row = mysql_fetch_array($sel)) {
    42.                                      $photos = $row['photo'];
    43.                                   }
    44.                                      $photo = $data.$photos;
    45.                             $res = mysql_query("UPDATE `users` SET `photo`='$photo' WHERE `id`='$id'") or die (mysql_error());
    46.  
    47.                                           $errorimage .= "Данные успешно сохранены<br/>";
    48.  
    49.                                  }else{
    50.                                           $errorimage .= "Невозможно загрузить файл. Проверьте права доступа к директории (чтение/запись)";
    51.                    include_once('tpl/photo.tpl');
    52.                    exit();
    53.                  }
    54.                 }
    55. // вывод изображений из базы
    56.   $exportimage = mysql_query("SELECT photo FROM `users` WHERE `id`='$id'") or die (mysql_error());
    57.       if(mysql_num_rows($exportimage)>0){
    58.            while($rowexport = mysql_fetch_array($exportimage)){
    59.               $export[] .= $rowexport['photo'];
    60.            }
    61.          $implode = implode(',',$export);
    62.          $explode = explode(",", $implode);
    63.          $explode_new = array_diff($explode, array(''));
    64.          // print_r ($explode_new);
    65.          $avatar_new =  current($explode_new);
    66.          if($avatar_new == ""){
    67.          $avatar = "http://www.cyberforum.ru/images/No-Avatar.png";
    68.          }else{
    69.          $avatar = "photo/" . $avatar_new;
    70.          }
    71.          $_SESSION['avatar'] = $avatar;
    72.          $js = "onclick = 'setBigImage(this)' ";
    73. echo "<center><table>";
    74.                foreach ($explode_new as $k => $v){
    75.                        echo "<tr><input type='image' name='submit' class='knopka' id=key-$v  value='".$v."' style='width:150px;height:200px;' " . $js." src='photo/" . $v, '' ."'/></tr>";
    76.                }
    77. echo "</table></center>";
    78.      }else{
    79.              $errorimage .= "У Вас пока нет изображений";
    80.      
    81.      } 
    82.      mysql_close();
    83. include_once('tpl/photo.tpl');
    84.  
    85. ?>
    Сначала открываю модальное окно, с помощью iframe отправляется форма для загрузки изображения на сервер. Изображение сохраняется, в базу MySQL данные о новых изображениях записываются. Но скрипт который выводит данные из базы данных не срабатывает. Скажите и укажите, пожалуйста на ошибку, ведь данные в базу записываются и изображения сохраняются на сервере, почему скрипт не показывает новые изображения которые заливает?

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    Спасибо за совет, перечитал FAQ по поиску ошибок в своем коде. Проверил исходный код, в коде присутствует.
    Код (PHP):
    1. <center>
    2. <table>
    3. <tr>
    4. <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'/>
    5. </tr>
    6. </table>
    7.  </center>
    8.  
    9. <div id="block">
    10.  
    11. <div id="page">
    12.  
    13. <div class="block_main rounded">
    14. <p>
    15.     <img  id="photo" src="photo/37539077.jpg" alt="" title="" style="margin: 0 0 0 10px;" />
    16.  
    17. </p>
    18.  
    19. <br /> 
    Но изображение не отображается.
    Код (PHP):
    1. <center>
    2. <table>
    3. <tr>
    4. <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'/>
    5. </tr>
    6. </table>
    7. </center>
    8.  
    Это вывод изображений с массива
    Код (PHP):
    1. echo "<center><table>";
    2.                foreach ($explode_new as $k => $v){ 
    Это полный photo.tpl
    Код (PHP):
    1. <div id="block">
    2. <div id="page">
    3. <div class="block_main rounded">
    4. <p>
    5.     <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;" />
    6.  
    7. </p>
    8. <?php echo $errorimage; ?>
    9.  
    10. <form method="post"  target="frame_ajax" enctype="multipart/form-data">
    11.  
    12. <input type="file" name="filename">
    13. <br> 
    14. <input type="submit" id="reload" name="image" value="Загрузить">
    15. </form>
    16. <iframe name="frame_ajax" src="photo.php" width="0"
    17. height="0" style="display:none"></iframe>
    18.  
    19.  
    20. <form action="crop.php" method="post">
    21.     <input type="hidden" name="x1" value="" />
    22.     <input type="hidden" name="y1" value="" />
    23.     <input type="hidden" name="x2" value="" />
    24.     <input type="hidden" name="y2" value="" />
    25.     <input type="hidden" name="w" value="" />
    26.     <input type="hidden" name="h" value="" />
    27.     <input type="hidden" name="arr" id="arr" value="">
    28.   <input type='submit' value='Crop' />
    29. </form>
    30. </div>
    31. </div>
    32. </div>
    33. <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
    34. <script type="text/javascript" src="js/jquery.imgareaselect.pack.js"></script>
    35. <script type="text/javascript"> 
    36. function preview(img, selection) {
    37.     var scaleX = 150 / (selection.width || 1);
    38.     var scaleY = 200 / (selection.height || 1);
    39.     $('#photo + div > img').css({
    40.         overflow: 'hidden',
    41.         width: Math.round(scaleX * 600) ,
    42.         height: Math.round(scaleY * 400) ,
    43.         marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
    44.         marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
    45.          
    46.     });
    47.  
    48. $(document).ready(function (arr) {
    49.     $('<div><img  src="<?php if(!isset($avatar)){ $avatar = 'images/No-Avatar.png'; echo $avatar; }else{ echo $avatar; } ?>" style="position: relative;" /><div>') .css({
    50.            float: 'left',
    51.         position: 'relative',
    52.         overflow: 'hidden',
    53.         width: '150px',
    54.         height: '200px'
    55.     }) .insertAfter($('#photo'));
    56.  
    57.     $('#photo').imgAreaSelect({
    58.         aspectRatio: '1:1',
    59.         handles: true,
    60.         onSelectChange: preview,
    61.         onSelectEnd: function ( image, selection ) {
    62.             $('input[name=x1]').val(selection.x1);
    63.             $('input[name=y1]').val(selection.y1);
    64.             $('input[name=x2]').val(selection.x2);
    65.             $('input[name=y2]').val(selection.y2);
    66.             $('input[name=w]').val(selection.width);
    67.             $('input[name=h]').val(selection.height);
    68.         }
    69.     });
    70. }); 
    71. </script>
    В 6 строчке должно выводиться изображение, в исходном коде оно имеется.
    Код (PHP):
    1.   <img  id="photo" src="photo/37539077.jpg" alt="" title="" style="margin: 0 0 0 10px;" /> 
    Только на странице его нет, подскажите, в чем может быть дело?
    Спасибо за подсказку, ивиняюсь, до этого не знал.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Если изображение не отображается, то что отвечает веб сервер на запрос изображения которое не отобразилось?
    Можно изображение открыть в новой вкладке или посмотреть в инструменте для разработчиков, например в google chrome можно вызвать по F12 , перейти на страницу и все запросы будут видны во вкладке networks. Нажми на запрос картинки и посмотри что там происходит.

    Добавлено спустя 1 минуту 10 секунд:
    Для этого форму и есть, чтобы показать как всё работает и как самостоятельно найти не стыковки, тут не за что извиняться.
     
  5. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    Загружаю изображение на сервер. В базу оно добавляется, на странице не отображается. Открываю networks в chrome, там видно, что изображение добавилось которое присутствует в базе данных. У одного статус 200, у другого 304. Может из-за такого статуса сразу не отображается? Перезагружаю страницу, картинка отображается и статус у всех изображений 200.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Salvat если у картинки статус 200 или 304, но они не отображаются, то что им сервер возвращает? Смотреть можно во вкладке preview когда нажал на этот запрос.
     
  7. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    denis01, что-то не получается найти preview в networks
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    В networks жми на запрос картинки и там откроется подробная информация о запросе, вкладка preview тоже будет.
     
  9. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    В preview картинка отображается нормальна, которая со статусов 304
    в header
    Только почему GET, когда она отправляется и принимается POST запросом.
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну если ты картинку через img тег подгружаешь, то это GET.
    Так что там во вкладке preview для картинки? Видно картинку? Может html код там? Или пусто?

    Может у тебя кэширование включено, тоже в заголовках cache посмотри, и тебе показывает что-то старое.
     
  11. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    [​IMG]
    [​IMG]
    [​IMG]
    Прикладываю скрин-шоты. Две отображаются в preview, одна на аватар должна идти, другая для работы с ней.
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Значит те что не отображаются на странице, они отображаются во вкладке preview?
     
  13. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    Все верно.

    Добавлено спустя 38 минут 47 секунд:
    Имеются подозрения на iframe который отправляет форму
    Код (PHP):
    1. <form method="post" action="addphoto.php"  target="frame_ajax" enctype="multipart/form-data">
    2. <input type="file" name="filename"><br> 
    3. <input type="submit" id="reload" name="image" value="Загрузить">
    4. </form>
    5. <iframe name="frame_ajax" src="addphoto.php" width="0"
    6. height="0" style="display:none"></iframe> 
    7.  
    Т.к. и скрипт отдельно с iframe не отображает сразу же изображение, только после перезагрузки. А iframe необходим чтобы отправить данные без перезагрузки страницы, потому, что окно модальное закроется. И дальше если думать, в исходнике есть, в preview тоже есть и отображается, а вот на страницу не подхватывает.
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Всё очень запутано, надо смотреть в живую, выложи не код, а чтобы работало как сайт.
     
  15. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    denis01, на счет бардака, там стиль который переписал давненько, перенес его в другое место в default.css, а его удалить с head забыл.
    Не совсем понял этот момент.
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Если я правильно понял, то ты делаешь post в iframe с картинкой, в невидимый iframe грузится страница.
    Вот и всё. Как я понял ты хочешь показать результат загрузки, тогда надо это сделать, например через javascript обратится к модальному окну из iframe addphoto.php и что-то сделать, фотку сменить или текст написать.

    Поищи: javascript iframe parent
     
  17. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    denis01, большое спасибо. Переделал чуть по другому. Не файл стал инклудить addphoto.php, а с помощью фрейма. Столько мучался, а надо было-то делов:) Спасибо еще раз.