За последние 24 часа нас посетили 22563 программиста и 1201 робот. Сейчас ищут 805 программистов ...

Не могу правильно обратиться к глобальной из инклюда

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

  1. nevajno22

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

    С нами с:
    14 янв 2012
    Сообщения:
    22
    Симпатии:
    1
    Добрый вечер!Функция выбора ссылок(страниц) меню,работает везде исправно.
    PHP:
    1. <?php
    2. function find_selected_page() {
    3.     global $current_subject;
    4.     global $current_page;
    5.     if (isset($_GET["subject_id"])) {
    6.         $current_subject = find_subject_id($_GET["subject_id"]);
    7.         $current_page = null;
    8.     }elseif (isset($_GET["page_id"])) {
    9.         $current_page = find_page_id($_GET["page_id"]);
    10.         $current_subject = null;
    11.     }else {
    12.         $current_page = null;
    13.         $current_subject = null;
    14.     }
    15.  
    16.  
    17. }
    18. //но при попытке обратиться к глобальной переменной $current_subject через проверку,
    19. //происходит переадресация,хотя ошибок нет.
    20. if(!$current_subject) {
    21.     redirect_to("manage_content.php");
    22. }
    23. //Стоит убрать восклицательный знак,или саму проверку,
    24. //и тот эффект что мне нужен в принципе дистигается,но не до конца,я по прежнему именно
    25. //на этой странице не могу работать с этой переменной,а в частности сделать это:
    26. <h2>Edit Subject:<?php// echo $current_subject["menu_name"]; ?></h2>
    27. //что бы при нажатии на любую ссылку,ее название появлялось справа от Edit Subject:
    28. //или это:
    29. <input type = "text" name = "menu_name" value = "<?php echo $current_subject["menu_name"]; ?>" />
    30. //к примеру на другой странице обращение к функции и переменной проходит отлично:
    31. <a href = "edit_subject.php?subjects=<?php
    32. echo $current_subject["menu_name"];?>">Редактировать страницу</a>
    33. //
    34. //Возможно дело в области на странице куда я пытаюсь впихнуть эту функцию?
     
    #1 nevajno22, 28 апр 2017
    Последнее редактирование модератором: 28 апр 2017
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
  3. nevajno22

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

    С нами с:
    14 янв 2012
    Сообщения:
    22
    Симпатии:
    1
    С документацией то все ясно,я не хотел спрашивать как с глобальными правильно обращаться.
    Все дело в том что на всех страницах глобальная работает нормально,а вот на одной ее словно клинит.
     
  4. nevajno22

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

    С нами с:
    14 янв 2012
    Сообщения:
    22
    Симпатии:
    1
    В общем скорей всего проблема в коде самой страницы,но точно не функции и ее вызове.Буду думать.
    Спасибо.
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Пожалуйста.
     
  6. nevajno22

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

    С нами с:
    14 янв 2012
    Сообщения:
    22
    Симпатии:
    1
    Так и не нашел решения,может полный код страницы и скажет что то.
    Проблема в том что я не могу использовать в двух местах строчку:
    <?php echo $current_subject["menu_name"]; ?>
    один раз в <h2>Edic subject
    второй в инпуте
    Если же перед ЭХО поставить восклицательный знак то вылезает true
    ,если без восклицательного,то фолс.А по задумке должна быть надпись из меню.
    На других страницах вывод <?php echo $current_subject["menu_name"]; ?> работает нормально.

    Код (Text):
    1.  
    2. <?php
    3. include("../includes/session.php");
    4. include("../includes/loyaots/header.php");
    5. require_once("../includes/db_connection.php");
    6. require_once("../includes/function.php");
    7.  
    8.  
    9. function find_selected_page() {
    10.     global $current_subject;
    11.     global $current_page;
    12.  
    13.     if (isset($_GET["subject_id"])) {
    14.         $current_subject = find_subject_id($_GET["subject_id"]);
    15.         $current_page = null;
    16.     }elseif (isset($_GET["page_id"])) {
    17.         $current_page = find_page_id($_GET["page_id"]);
    18.         $current_subject = null;
    19.     }else {
    20.         $current_page = null;
    21.         $current_subject = null;
    22.     }
    23.  
    24. }
    25.  
    26. function find_subject_id($subject_id) {
    27.     global $connection;
    28.  
    29.     $safe_subject_id = mysqli_real_escape_string($connection,$subject_id);
    30.     $query = "SELECT * ";
    31.     $query .= "FROM subjects ";
    32.     $query .= "WHERE id = {$safe_subject_id} ";
    33.     $query .= "LIMIT 1";
    34.     $result = mysqli_query($connection, $query);
    35.     confirm_query($result);
    36.     if ($subject = mysqli_fetch_assoc($result)) {
    37.        
    38.         return $subject;
    39.     }else {
    40.         return null;
    41.     }
    42. }
    43.  
    44. ?>
    45.  
    46.  
    47. <div id = "main">
    48.  
    49.     <div id = "navigation">
    50.  
    51.        
    52.         <?php echo navigation($current_subject,$current_page);
    53.  
    54.          ?>
    55.  
    56.     </div>
    57.     <div id = "page">
    58.  
    59.         echo message();
    60.         ?>
    61.         <?php $errors = errors(); ?>
    62.         <p><?php echo form_errors($errors); ?> </p>
    63.  
    64.         <h2>Edit Subject:<?php echo $current_subject{"menu_name"};?></h2>
    65.  
    66.         <form action = "create_subject.php" method = "post">
    67.             <p>Menu name:
    68.                 <input type = "text" name = "menu_name" value = "<?php echo $current_subject["menu_name"]; ?>" />
    69.             </p>
    70.  
    71.            
    72.             <p>Position:
    73.                 <select name = "position">
    74.                     <?php
    75.                    
    76.                     $subject_set = find_all_subjects();
    77.                
    78.                     $subject_count = mysqli_num_rows($subject_set);
    79.  
    80.                     for($count = 1; $count <= ($subject_count + 1); $count ++) {
    81.                         echo "<option value = \"$count\">$count</option>";
    82.                     }
    83.                     ?>
    84.                     <!--<option value = "{}">1</option>-->
    85.                 </select>
    86.             </p>
    87.             <p>Visible:
    88.                 <input type = "radio" name = "visible" value = "0" /> No
    89.                 &nbsp;
    90.                 <input type = "radio" name = "visible" value = "1" /> Yes
    91.             </p>
    92.             <input type = "submit" name = "submit" value = "Edit Subject" />
    93.         </form>
    94.         </br>
    95.         <a href = "manage_content.php">Cancel</a>
    96.     </div>
    97. </div>
    98.  
    99. <?php
    100.  
    101. include("../includes/loyaots/footer.php");
    102. ?>