За последние 24 часа нас посетили 36506 программистов и 1702 робота. Сейчас ищут 1149 программистов ...

Правильная организация кода обновления страницы.

Тема в разделе "PHP для новичков", создана пользователем Зингер, 11 дек 2017.

  1. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Попытаюсь наиболее достпно пояснить суть проблемы.

    Кнопка в otdel_view.php:
    HTML:
    1. <input type="submit" class="submit_for_refresh" name="Refresh_submit" value="Обновить" formaction="otdel_controller.php">
    otdel_controller.php :
    PHP:
    1. <?
    2. if (isset($_POST['Refresh_submit'])){ //Если нажата клавиша обновить
    3.     include_once $_SERVER['DOCUMENT_ROOT']."/Classes/connected_class.php";        //Подключаем класс, который подключается к MySQL
    4.     $obj=new connected_class(); //Создаем объект подключения на основе класса
    5.     $obj_podkl=$obj->mysql_pdo;
    6.     $obj_podkl->beginTransaction();     //Начинаем транзакцию
    7.     if (!empty($_POST['checkbox1'])){ //Если выбран флажок "Показывать только активные записи" (checkbox1)
    8.         $command_string="UPDATE NASTR SET Prizn3=NULL WHERE Prizn1 IN (SELECT prizn1 FROM POLZOVATEL WHERE prizn8=1)";
    9.     } //Конец Если выбран флажок "Показывать только активные записи" (checkbox1)
    10.     else { //Если НЕ(!) выбран флажок "Показывать только активные записи" (checkbox1)
    11.         $command_string="UPDATE NASTR SET Prizn3=1 WHERE Prizn1 IN (SELECT prizn1 FROM POLZOVATEL WHERE prizn8=1)";
    12.     } //Конец Если НЕ(!) выбран флажок "Показывать только активные записи" (checkbox1)
    13.     $stmt=$obj_podkl->prepare($command_string);
    14.     $stmt->execute();
    15.     $obj_podkl->commit();
    16.     header("Location: ".$_SERVER['DOCUMENT_ROOT']."\Admin\otdel_view.php"); //Здесь не переходит
    17.     exit;
    18. } //Конец Если нажата клавиша обновить
    19. ?>
    Насколько я полазил по инету, строка
    PHP:
    1. header("Location: ".$_SERVER['DOCUMENT_ROOT']."\Admin\otdel_view.php");
    должна обновить страницу otdel_view.php. Но не обновляет...
    Firefox просто дергается, а встроенный в NetBeans браузер ругается: "Не возможно открыть http://.../otdel_controller.php".

    Подскажите пож-та, как правильно организовать код кнопки "Обновить" ?
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
  3. vaajnur

    vaajnur Новичок

    С нами с:
    15 май 2017
    Сообщения:
    40
    Симпатии:
    3
    тег input должен жить в форме,с правильными параметрами типа action, method
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    один хер - мб пропачтен чтобы отслеживал ajax. Дело в том что у него header отправляет урл с корнем хостинга в браузер для переадресации.

    разве мы так прописываем урл? 20 век
    \www\host\site\Admin\otdel_view.php
     
  5. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    У меня вот тоже такая проблема, и видимо тоже в какой-то мелочи. Тут вот понятно что обратный слэш экранирует символы.
    Я решил немного поменять логику работы сайта, и у меня на каждой странице
    PHP:
    1. include_once $_SERVER['DOCUMENT_ROOT'].'/php/body/header.php';
    но в header же подключается таблица стилей style.css, которую я хотел подключить так
    Код (Text):
    1. <link rel="stylesheet" href="<? echo $_SERVER['DOCUMENT_ROOT'] . '/css/style.css' ">
    но тут ничего не выходит, причем если вывести на экран echo $_SERVER['DOCUMENT_ROOT']. '/css/style.css' , то выводится вполне конкретный адрес, вставив который в адресную строку браузера я вижу таблицу стилей. сейчас пока у меня все работает на localhost в виде
    Код (Text):
    1.     <link rel="stylesheet" href="/css/style.css">
    , но если это залить на хостинг, то есстественно работать не будет, где я не вижу ошибку??
    спустя 30 мин..
    Почитал соседнюю тему сделал вывод, что не существует некоего универсального решения, что если я сделал функционал на localhost, нельзя просто взять его и скопировать на хостинг, надо еще помнить все моменты, которые надо подпилить, чтобы все работало, так??
     
    #5 karmay, 12 дек 2017
    Последнее редактирование: 12 дек 2017
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Откуда вам всем идея лезет стили подключать с полным серверным путём? Вот вопрос на засыпку: кто грузит стили, сервер или клиент (браузер)?
    С чего вдруг это на хостинге не будет работать? Разве что папка css будет не в корневой папке сайта.
     
    karmay нравится это.
  7. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    На самом деле, сейчас посмотрел, у меня на хосте все от корня " / ", но блин, когда я первый раз залил на хостинг свои php-скриптики, у меня в браузер вывалилась куча ошибок, я тогда еще не знал про массив $_SERVER и всюду писал
    Код (Text):
    1. include("/var/www/vh128583/data/www/nn-tour.ru/php/function.....");
    .... еще немного, еще чуть чуть..и придет озарение, что надо разделять, то что подключает браузер (это css и js) и сервер (функции php), и для подключения стилей и javaScript писать "/css/style.css" , а для подключения php функций "$_SERVER['DOCUMENT_ROOT'].'/php/function/link_bd.php' ".
    Всем спасибо за разъяснения, вот вроде бывают элементарные вещи, а сидишь и тупишь, и никак...
     
  8. Зингер

    Зингер Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7
    Вобщем, тысячный раз прочитал
    ввел
    PHP:
    1. header("Location: otdel_view.php");
    и поехали дальше.
    Всем спасибо. До встречи в следующих темах.