- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем привет!
Подскажите, пожалуйста, из-за чего не работает $GET параметр и как можно узнать причину?
Суть в следующем. Перехожу в админку (все статьи, что есть, нормально отображаются, ссылки на удалить/редактировать так-же корректно отображаются). Перехожу на шаблон с добавлением статьи. Заполняю поля и при нажатии на "Добавить" переходит просто на главную страницу в админке - статья не добавляется. В чем может быть дело?
Index.php в админке:
```
В модели функция:
function articles_new($link, $title, $date, $description){$title = trim($title);
$description = trim($description);
if ($title == '')
return false;
$t = "INSERT INTO articles (title, date, description) VALUES ('%s','%s','%s')";
$query = sprintf($t, mysqli_real_escape_string($link, $title),mysqli_real_escape_string($link,$date),mysqli_real_escape_string($description));
$result = mysqli_query($link, $query);
if (!result)
die(mysqli_error($link));
return true;
}
Страница с добавлением статьи:
var_dump($_GET); и var_dump($_REQUEST); выводит:
array(1) { ["action"]=> string(3) "add" }
var_dump($_POST) выводит:
array(0) { }
но и он не используется нигде. Только $_GET использовал.
Выводил все на странице добавление материалов.
Что не так в коде и как искать проблему?
Если кратко - надо смотреть исходники.
$_POST используется формой для отправки данных:
, может быть это поможет.
Grep, а с чего вы решили, что не работает? Возможно, в самом добавлении ошибка, а редирект прописан в коде, что в общем-то правильно, только его нужно делать не хз куда, а обратно на форму (или на крайняк на список при наличии соотв указания). После header Location нужно делать exit, если нет полного разветвления и в тек. ветке команда не последняя.
NellSEO, так есть же.
Почитайте про тернарный оператор, включая упрощенку в послед. версиях.---------- Добавлено 05.06.2017 в 13:52 ----------
$
---------- Добавлено 05.06.2017 в 13:56 ----------
Можно просто писать в конце вызова ф-ции or die, хотя в целом это конечно костыльный подход, так в продакшине не делают.
var_dump($_POST) выводит:
array(0) { }
но и он не используется нигде. Только $_GET использовал.
Может быть, я что-то недопонял, но в коде прописано условие добавления статьи
Сделал проверки:
if(isset($_GET['action']))
$action = $_GET['action'];
else
$action = "";
if($action == "add"){
if(!empty($_POST)){
echo "Данные успешно заполнены!".var_dump($_POST)." Статья добавлена, поздравляю!<br>";
articles_new($link, $_POST['title'], $_POST['date'], $_POST['description']);
header ("Location: in``dex.php");
}else echo "Пока-что все пусто...";
var_dump($_GET); и var_dump($_REQUEST); выводит:
array(1) { ["action"]=> string(3) "add" }
Request Method:POST
Content-Type:text/html; charset=UTF-8
title:asdasdasd
date:2017-06-14
description:asdad
Вроде все отправляется. Все, по идеи, должно работать.
Пришел к выводу, что не работает сама функция. Но не могу понять как произвести проверку.
Сама функция:
function articles_new($link, $title, $date, $description){
$title = trim($title);
$description = trim($description);
$t = "INSERT INTO articles (title, date, description) VALUES ('%s','%s','%s')";
$query = sprintf($t, mysqli_real_escape_string($link, $title),mysqli_real_escape_string($link,$date),mysqli_real_escape_string($description));
$result = mysqli_query($link, $query);
if (!result)
die(mysqli_error($link));
return true;
}
Взять, к примеру, две переменные тайтл и дескрипш:
$title = trim($title);
$description = trim($description);
и после $title = trim($title); выводим echo "Проверка заголовка"? И как проверить sprintf и переменную $t?
А попробуйте
Самый простой способ проверки (кроме error-лога), вставить echo и смотреть где обрывается выполнение.
Добавьте перед $result = mysqli_query($link, $query);
и посмотрите какой запрос формируется, попробуйте его выполнить руками в базе.
Добавьте после $result = mysqli_query($link, $query);
и посмотрите, выведется это сообщение или нет.
А вообще, включите отображение ошибок, проще с отладкой будет, в самом начале файла добавьте:
ini_set('display_errors', TRUE);ini_set('display_startup_errors', TRUE);
error_reporting(-1);
Если у вас есть какой-то главный файл, через который проходят все запросы, лучше добавьте это в него. Когда разберетесь, уберите эти строки.
p.s.
Кстати да, ссылки на соединение действительно не хватает.
Спасибо, ребята! Действительно проглядел подключение к базе в mysqli_real_escape_string. И еще пару моментов подправил. Ошибки пропали.
Теперь такая проблема, после попытки добавить в базу статью:
Incorrect date value: '' for column 'date' at row 1
Не верное значение в 'date' в строке 1, как я понимаю. Что не так?
Вид базы у меня следующий:
1) id
2) title
3) description
4) img
5) alt
6) anons
7) author
8) date
9) show
10) category
Пока-что вставляю через функцию только заголовок, дату, описание и картинку. Заголовок, описание, картинка - это строки. А как дату правильно прописать?
INSERT INTO articles (title, date, description, img) VALUES ('%s','%s','%s','%s')";
2017-06-07
Судя по ошибке, в поле даты вставляется пустое значение.
Спасибо всем, что помогаете! В админке статьи добавляются. Еще раз спасибо за помощь!
Только после отправки (нажатии на кнопку "Добавить") появляется ошибка. Не понимаю, пока-что, её значение. В файле index.php не обновляется информация в шапке или о чем эта ошибка? Как это можно исправить? И еще один момент.
Ошибка: Warning: Cannot modify header information - headers already sent by (output started at E:\OpenServer\OpenServer\domains\myblog\admin\index.php:13) in E:\OpenServer\OpenServer\domains\myblog\admin\index.php on line 15
index.php:
```
if(isset($_GET['action']))
$action = $_GET['action'];
else
$action = "";
if($action == "add"){
if(!empty($_POST)){
echo "Данные успешно заполнены!".var_dump($_POST)." Статья добавлена, поздравляю!<br>";
articles_new($link, $_POST['title'], $_POST['date'], $_POST['description']);
header ("Location: in``../views/admin/index.php");
}else echo "Пока-что все пусто...";
include ("../views/admin/add.php");
}else{
$articles = articles_all($link);
include("../views/admin/admin_panel.php");
}
```