Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Schekhovtsov
0 / 0 / 3
Регистрация: 03.11.2012
Сообщений: 105

Конфликт

14.01.2013, 19:14. Показов 1129. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для нормальной работы сайта ко всем страницам нужно подключить functions.php (без него нельзя), вот с таким содержанием

Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
    function write_config_file(array $config, $file = '../conf.php')
{
    file_put_contents($file, ';<?php exit ?>' . PHP_EOL);
    
    foreach ($config as $key => $section) {
        if (is_array($section)) {
            
            $row = PHP_EOL . '[' . $key . ']' . PHP_EOL . PHP_EOL;
            file_put_contents($file, $row, FILE_APPEND);
        
            foreach ($section as $key => $item) {
                $row = $key . ' = ' . $item . PHP_EOL;
                file_put_contents($file, $row, FILE_APPEND);
            }
        }
    }
}
 
$config = parse_ini_file('../conf.php', TRUE);
 
if (isset($_POST['set_title'])) {
    $title = trim($_POST['set_title']);
    if (!empty($title)) {
        $config['site']['title'] = $title;
        write_config_file($config);
    }
}
?>


Но если его подключить перестают добавляться/удаляться сообщения из базы данных! Вот скрипты которые управляют сообщениями: вывод, добавление, удаление.

Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
            $sql = mysql_query("SELECT * FROM `table` ORDER BY datep DESC");
            echo mysql_error();
            while ($row = mysql_fetch_object($sql)) {
                $id_post = $row -> id;
                $date_post = $row -> datep;
                $title_post = $row -> title;
                $message_post = $row -> message;
                echo "<br><br>",                
                "<div id=\"title_post\"><a href=\"#\">$title_post</a>&nbsp;</div>",
                "<div id=\"date_post\"><div id=\"datebar_icon\"><img src=\"images/date_icon.png\" /></div>&nbsp;",$date_post, " <div id=\"datebar_icon\"><img src=\"images/user_icon.png\" /></div> $user_ok <div id=\"datebar_icon\"><a href=\"#\" title=\"Редактировать\"><img src=\"images/edit_icon.png\" /></a></div>&nbsp;<div id=\"datebar_icon\"><a href=\"del.php?id=$id_post\" title=\"Удалить запись\"><img src=\"images/delete_icon.png\" /></a></div></div><br>",
                "<div id=\"message_post\">", $message_post; "</div>";
            }
            mysql_close($db_connect);
            ?>


Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="action.php" name="myform" method="post">
                            Заголовок:</td></div>
                            <td class="gray"><input type="text" id="title_add" name="title_add"><br>
                            </td>
                        </tr>
                        <tr>
                            <td class="gray"><div id="message_text">Текст:</td></div>
                            <td class="gray_long"><textarea id="message_add" name="message_add"></textarea><br></td>
                        </tr>
                        <tr>
                            <td class="gray" colspan="2"><input type="submit" id="post_add_blue" name="post_add" value="Опубликовать запись">
                            <input type="submit" id="post_add_gray" name="post_add" value="Сброс"></td>
                        </tr>
                            </form>


Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
<?php   
    header("Location: index.php");
    include("index.php");
    include("configuration.php");
    include("functions.php");
    $id = $_GET['id_post'];
    $sql = "DELETE FROM `table` WHERE id =".$_GET['id'];
    $result = mysql_query ($sql);
?>


Где допущена ошибка? Как избежать конфликта? Пишу мини-cms и всё очень важно, выручайте!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2013, 19:14
Ответы с готовыми решениями:

Конфликт латиницы и кириллицы
Добрый день, возникла проблема. Сделал простую форму на основе html и php, выборка осуществляется с помощью LIKE '%вводимое слово%'....

Конфликт PHP-кода на двух разных ОС и локальных серверах при создании сайта
Использовал сборку на Windows OpenServer и на OS X использовал MAMP. Такое дело. Программирование сайта на локальном сервере. Все сделал,...

Конфликт ip
После того, как интернет проработает некоторый период времени, вылезает окошко с ошибкой, где написано о конфликте ip адресов, типо что в...

10
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
15.01.2013, 01:15
Соединение с базой есть?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
15.01.2013, 01:26
строка
Цитата Сообщение от Schekhovtsov Посмотреть сообщение
header("Location: index.php");
по идее усылает сразу на страницу индекс.пхп, и код под ней насколько я понимаю, вообще не будет выполняться...
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
15.01.2013, 02:31
Цитата Сообщение от Dmitry Посмотреть сообщение
усылает сразу на страницу
Это всего лишь заголовок, который будет отправлен браузеру.
Сначала заголовок отправится, потом он должен быть принят браузером, после этого браузер решит запросить новую страницу и оборвёт соединение с этой.
За это врмя может весь код на страницы выполнится успеть, тем более в зависимости от буфера вэб сервера или прокси, отправка заголовка может быть уже вместе с отправкой всего кода страницы, и он будет оптравлен по завершении выполнения всего скрпита.

Что бы код дальше не выполнялся, после оптравки заголовка нужно ставить exit
0
 Аватар для Schekhovtsov
0 / 0 / 3
Регистрация: 03.11.2012
Сообщений: 105
15.01.2013, 23:38  [ТС]
Цитата Сообщение от Dolphin Посмотреть сообщение
Соединение с базой есть?
Похоже вы невнимательно читали первый пост, повторяю - все нормально ДО ТОГО как подключается functions.php. Соединение было и есть.
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
16.01.2013, 06:47
По такому пути вы никогда не найдете этот файл.. Ну или почти =)
Цитата Сообщение от Schekhovtsov Посмотреть сообщение
PHP
1
$config = parse_ini_file('../conf.php', TRUE);
Указывайте путь от корня сайта
PHP
1
$config = parse_ini_file('/conf.php', TRUE);
0
 Аватар для Schekhovtsov
0 / 0 / 3
Регистрация: 03.11.2012
Сообщений: 105
16.01.2013, 20:17  [ТС]
Цитата Сообщение от Dolphin Посмотреть сообщение
По такому пути вы никогда не найдете этот файл.. Ну или почти =)


Указывайте путь от корня сайта
PHP
1
$config = parse_ini_file('/conf.php', TRUE);
Путь тут явно не причём (к тому же ../ означает что файл находится в папке на каталог выше, так проще и понятнее чем прописывать полностью). Неужели ни у кого нет идей? Это оч важно(
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
16.01.2013, 20:47
Цитата Сообщение от Schekhovtsov Посмотреть сообщение
в папке на каталог выше
В папке на каталог выше чего?
Каталога из которого был запущен первый скрпит? Или файла в котором вызван инклуд?
Это очень большое различие, и не как не проще как Вы говорите.
Пример, есть файл
/var/www/functions.php
он инклудит конфиг
PHP
1
2
<?php
include './config/config.php';
Конфиг лежит тут
/var/www/config/config.php

Есть файл
/var/www/index.php
PHP
1
2
<?php
include './functions.php';
При открытии http://site/index.php у нас включится function.php и в нём включится config.php

Теперь нам нужно в форуме заюзать функции
/var/www/forum/index.php
PHP
1
2
<?php
include '../functions.php';
Что же будет при открытии http://site/forum/index.php ?
Естественно function.php лежит на уровень выше, и он включится.
А что дальше?
Как Вы считаете, внутри файла function.php инклуд где будет искать каталог config?
Думаете в /var/www/config/config.php? А вот и нет. Будет искать в /var/www/forum/config/config.php.
И не найдёт.
Вот по этому Вам и советуют писать полный путь.


Что же касается Вашей проблемы, то я вообще не вижу кода добавления в бд, хоть Вы и написали что код выложили.
Ну а искать ошибку Вам проще. Вставляйте var_damp'ы выводите в разных местах данные, выполняется ли код смотрите, и то ли он выводит что нужно, может где то что то перетирает.
Включите полный вывод ошибок и нотиков.
И смотрите логи.

Добавлено через 2 минуты
Цитата Сообщение от Schekhovtsov Посмотреть сообщение
PHP
1
2
header("Location: index.php");
* * include("index.php");
А это что вообще за код такой?
Вы в самом начале шлёте заголовок переадресации, соответственно если пинг очень маленький, то код ниже может даже не выполниться.
То есть тут рандомно возможно выполнение кода а возможно нет, может 100 раз удалится а 1 раз нет или на оборот
0
 Аватар для Schekhovtsov
0 / 0 / 3
Регистрация: 03.11.2012
Сообщений: 105
16.01.2013, 20:53  [ТС]
Код на добавление забыл выложить, но он работает. Инклюд на индекс использую чтобы пользователь оставался на этой же странице (0_о). Как включить полный вывод ошибок и "нотиков"?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
16.01.2013, 20:57
Цитата Сообщение от Schekhovtsov Посмотреть сообщение
Инклюд на индекс использую чтобы пользователь
Вы не поняли...
Я уже описывал выше что такое Location, в 4 сообщении.
Зачем там отправка заголовка переадресации верху? И я написал о чём я

Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
тут рандомно возможно выполнение кода а возможно нет
Нельзя такой код писать, надеясь, а вдруг сработает


Цитата Сообщение от Schekhovtsov Посмотреть сообщение
Как включить полный вывод ошибок
PHP
1
2
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
0
 Аватар для Schekhovtsov
0 / 0 / 3
Регистрация: 03.11.2012
Сообщений: 105
24.01.2013, 19:25  [ТС]
Проблема не решена. Прошу прощения за пути, но пока так, сейчас не до них. Коды:

Добавляем сообщение:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
<?php
    include("../database.php");
    include("../configuration.php");
    include("functions_adm.php");
    $sql = "INSERT INTO `database`.`table` (`id`, `datep`, `title`, `message`) VALUES (NULL, NOW(), '".$_POST['title_add']."', '".$_POST['message_add']."')";
    $result = mysql_query ($sql);
    ini_set('display_errors', 1);
    ini_set('error_reporting', E_ALL);
?>


Файл database.php каталогом выше:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php   
    $db_host = "localhost";
    $db_user = "root"; // Имя пользователя БД
    $db_pass = "Test"; // Пароль пользователя БД
    $db_name = "database"; // Имя БД 
    $db_connect = mysql_connect($db_host, $db_user, $db_pass);
    mysql_select_db($db_name, $db_connect);
    
    mysql_connect($db_host, $db_user, $db_pass) or die (mysql_error());
    mysql_select_db($db_name) or die (mysql_error());
    mysql_query("SET NAMES 'cp1251'");  
?>


Файл configuration.php каталогом выше:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
;<?php exit ?>
 
[site]
 
title = Название
description = Описание
user_ok = Admin
pass_ok = 1
 
[framework]
 
version = 0.1.3


Файл functions_adm.php:
Кликните здесь для просмотра всего текста

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
    $date = date("d F Y");
    $time = date("H:i");
    $year = date("Y");
    
    function write_config_file(array $config, $file = '../configuration.php')
{
    file_put_contents($file, ';<?php exit ?>' . PHP_EOL);
    
    foreach ($config as $key => $section) {
        if (is_array($section)) {
            
            $row = PHP_EOL . '[' . $key . ']' . PHP_EOL . PHP_EOL;
            file_put_contents($file, $row, FILE_APPEND);
        
            foreach ($section as $key => $item) {
                $row = $key . ' = ' . $item . PHP_EOL;
                file_put_contents($file, $row, FILE_APPEND);
            }
        }
    }
}
 
$config = parse_ini_file('../configuration.php', TRUE);
 
if (isset($_POST['set_title'])) {
    $title = trim($_POST['set_title']);
    if (!empty($title)) {
        $config['site']['title'] = $title;
        write_config_file($config);
    }
}
 
if (isset($_POST['set_description'])) {
    $description = trim($_POST['set_description']);
    if (!empty($description)) {
        $config['site']['description'] = $description;
        write_config_file($config);
    }
}
?>


Вывод ошибок ничего не показывает. При щелчке на "добавить сообщение" выводится страница с символом ";", а запись в БД не записывается.

Ну вот, только написал - нашлось решение! Можно не отвечать!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2013, 19:25
Помогаю со студенческими работами здесь

Конфликт с ПО
на работе поставил Geo vision v800. Но вот проблема что то с чемто конфликтует причем ни в отчетах ни в журнале не отображаются ошибки!!!! ...

Конфликт IP
пару месяцев назад возник Конфликт IP с другой системой в сети, звонил к админу районной сети, тупая баба (дура) присвоила мне статический...

Конфликт скриптов
Всем привет, при добавлении скрипта чатика на сайт, слайдер изображения отказывается работать, в JavaScript и jQuery очень плохо...

Конфликт Wi-Fi устройств
В сети есть две точки доступа level one wap-0003. Одна работает как точка доступа и соединена с adsl-модемом, а в торая работает в качестве...

Конфликт плагинов
Здравствуйте. Такая проблема. Сделан плагин плавающего меню по уроку http://ruseller.com/lessons.php?rub=32&amp;id=999. Подключился он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru