Автор Тема: Передача данных из страницы категории в PHP файл и запись данных  (Прочитано 766 раз)

04 Июль 2016, 12:17:44
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день!
Прошу подсказать решение такого вопроса..
В блоке категорий передаются  данные в PHP.
<form action="путь к php" method="POST">
<textarea  style="margin: 10px 0 0 10px; width: 350px; height: 100px; " name="isbn"></textarea>
<input name="author"  >
<input name="title">
<input name="price" >
<input name="quantity" >
<input type="submit" value="OK">
</form>

В PHP получаю данные…….
<?php
error_reporting
(-1);
header('Content-Type: text/html; charset=utf-8');
if (!isset(
$_POST['isbn']) || !isset($_POST['author']) ||
    !isset(
$_POST['title']) || !isset($_POST['price']) ||
    !isset(
$_POST['quantity'])){
        die (
"Не все данные введены.<br>
                Пожалуйста, вернитесь назад и закончите ввод"
);
}
{
$isbn   trim $_POST['isbn'] );
$author trim $_POST['author'] );
$title  trim $_POST['title'] ) ;
$isbn   addslashes $isbn );
$author addslashes $author );
$title  addslashes $title ) ;
}
?>
Данные я получаю, все нормально.
В базе создана таблица  chek.
Мне необходимо в  PHP записать эти данные в таблицу базы chek.
Подскажите,  как это можно сделать?

Спасибо!
04 Июль 2016, 12:31:00
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для сохрания данных в бд в pretsashop используют класс DB и его методы
Db::getInstance()->Execute('INSERT IGNORE INTO `'._DB_PREFIX_.'название таблицы`(`1-е поле`,`2-е поле`,`3-е поле`,...) VALUES ('.$a.', '.$b.', '.$c.',...)');
04 Июль 2016, 13:03:36
Ответ #2
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответ!
Но при вставки данного кода в PHP со своими данными

Db::getInstance()->Execute('INSERT IGNORE INTO `'._DB_PREFIX_.'название таблицы`(`1-е поле`,`2-е поле`,`3-е поле`,...) VALUES ('.$a.', '.$b.', '.$c.',...)');
Страницу вообще не открывает. Выдает ошибку.
То-есть....
<?php

error_reporting
(-1);
header('Content-Type: text/html; charset=utf-8');

if (!isset(
$_POST['isbn']) || !isset($_POST['author']) ||
    !isset(
$_POST['title']) || !isset($_POST['price']) ||
    !isset(
$_POST['quantity'])){
        die (
"Не все данные введены.<br>
                Пожалуйста, вернитесь назад и закончите ввод"
);
}
{
$isbn   trim $_POST['isbn'] );
$author trim $_POST['author'] );
$title  trim $_POST['title'] ) ;
$price  trim $_POST['price'] ) ;



Db::getInstance()->Execute('INSERT IGNORE INTO `chek`(`name`,`text`,`email`) VALUES ('.$isbn.', '.$isbn.', '.$isbn.')');


}
?>
Не работает.............
04 Июль 2016, 13:27:32
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ошибка может быть от того, что вы используете свой файл, а не контроллеры/модули prestashop. В таком случве сохраняйте данные в бд с помощью функций php
// подключение к серверу баз данных MySQL
mysql_connect($host, $user, $password)
// выбор бд
mysql_select_db($dbname,$dbcnct)
// выполнение запроса
mysql_query ($sql)
04 Июль 2016, 13:42:32
Ответ #4
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
04 Июль 2016, 15:20:10
Ответ #5
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем спасибо! Работает
Остался вопрос... При выполнении PHP не престы открывается страница PHP.
Как сделать что-бы она не показывалась а выполнить и остаться на странице категорий.
То-есть вот сдесь переход в PHP
<form action="http://localhost/0012avd/themes/default-bootstrap/my.php " method="POST" >
<textarea  style="margin: 10px 0 0 10px; width: 350px; height: 100px; " name="isbn"></textarea>
<input name="author"  >
<input name="title">
<input name="price" >
<input name="quantity" >
<input type="submit" value="OK">
</form>
Можно конечно так..
<form action="" method="POST" >
Тогда останется на странице категорий но PHP то не обработает.
Спасибо!
04 Июль 2016, 15:36:49
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Без перезагрузки через Ajax, по другому никак.
04 Июль 2016, 15:44:25
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
На кнопку формы вешаете событие click и обрабку запроса в своем файле.
$(document).ready(function()
{
$('#myform').click(function(){
                $.ajax({
type: 'POST',
url: baseDir + 'myfile.php',
async: true,
cache: false,
dataType : "json",
data: // все данные формы
04 Июль 2016, 16:41:10
Ответ #8
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
05 Июль 2016, 10:23:39
Ответ #9
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем добрый день!
Попробовал по примеру выше, поставил
$.ajax({
type: 'POST',
url: baseDir+'themes/default-bootstrap/my.php',
async: true,
cache: false,
dataType : "json",
data:
{
name: 'rrrr',
text: 'oooo',
email: 'tttt',
data: '0000-00-00'
}
});

По идее данные
name: 'rrrr',
text: 'oooo',
email: 'tttt',
data: '0000-00-00'
должны передаться в my.php
и там обработка.
Но вот вопрос..
Обработки не какой не происходит, не переходит в my.php
Пробовал в PHP ставить вывод на экран echo... не показывает.
Может еще что-то пропустил.. в чем проблемма?
Спасибо!
05 Июль 2016, 11:26:30
Ответ #10
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
<form action="http://mysite.ru/myphp.php" method="POST">
<textarea  style="margin: 10px 0 0 10px; width: 350px; height: 100px; " name="isbn"></textarea>
<input name="myauthor" id="myauthor"><br>
<input name="mytitle" id="mytitle"><br>
<input name="myprice" id="myprice"><br>
<input name="myquantity" id="myquantity"><br>
<input type="submit" value="OK" id="mysubmit">
</form>
<script type="text/javascript">
{literal}
$(document).on('click', '#mysubmit', function(e){
e.preventDefault();
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: baseUri + 'myphp.php', // файл в корне сайта
async: true,
cache: false,
dataType : "json",
data: '&myqty=' + myquantity + '&myprice=' + myprice + '&mytitle=' + mytitle + '&myauthor=' + myauthor,
success: function(jsonData,textStatus,jqXHR)
{
var messuccess = "Данные переданны без ошибок";
if (!!$.prototype.fancybox)
$.fancybox.open([
{
type: 'inline',
autoScale: true,
minHeight: 30,
content: '<p class="fancybox-error">' + messuccess + '</p>'
}],
{
padding: 0
});
else
alert(messuccess);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
var error = "Ошибка сохранения данных.<br/>textStatus: '" + textStatus + "'<br/>errorThrown: '" + errorThrown + "'<br/>responseText:<br/>" + XMLHttpRequest.responseText;
if (!!$.prototype.fancybox)
$.fancybox.open([
{
type: 'inline',
autoScale: true,
minHeight: 30,
content: '<p class="fancybox-error">' + error + '</p>'
}],
{
padding: 0
});
else
alert(error);
}
});
});
{/literal}
</script>
05 Июль 2016, 11:42:23
Ответ #11
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
05 Июль 2016, 17:31:38
Ответ #12
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ребята.. что-то не то, как-то не получается у меня..
Передаю одну переменную в PHP
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: baseDir + 'themes/default-bootstrap/suslik.php',
async: true,
cache: false,
data: '&isbn='+'Мой текст', // передаю
success: function(jsonData)
{
var messuccess = "Данные переданны без ошибок";
if (!!$.prototype.fancybox)
$.fancybox.open([
{
type: 'inline',
autoScale: true,
minHeight: 30,
content: '<p class="fancybox-error">' + messuccess + '</p>'
}],
{
padding: 0
});
else
alert(messuccess);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
var error = "Ошибка сохранения данных.<br/>textStatus: '" + textStatus + "'<br/>errorThrown: '" + errorThrown + "'<br/>responseText:<br/>" + XMLHttpRequest.responseText;
if (!!$.prototype.fancybox)
$.fancybox.open([
{
type: 'inline',
autoScale: true,
minHeight: 30,
content: '<p class="fancybox-error">' + error + '</p>'
}],
{
padding: 0
});
else
alert(error);
}
});
Пишет что Данные переданны без ошибок
В PHP должна производиться запись, но она не записывает...
кажеться  что она вообще PHP файл не запускает..
В чем дело.
Спасибо!
05 Июль 2016, 17:52:42
Ответ #13
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Может в PHP не так что-то...
--PHP--
<?php

error_reporting
(-1);
header('Content-Type: text/html; charset=utf-8');

if (!isset(
$_POST['isbn'])){
        die (
"Не все данные введены.<br>
                Пожалуйста, вернитесь назад и закончите ввод"
);
}
{
$text   trim $_POST['isbn'] );
$link mysql_connect('****''***''***');
if (!
$link) {
    die(
'Ошибка: ' mysql_error());

}

mysql_select_db('***',$link);
$sql "INSERT INTO `chat`(`name`, `text`, `email`, `data`) VALUES ('".$text."','".$text."','".$text."','0000-00-00')" ;
$result mysql_query($sql);

mysql_close($link);

}
?>

05 Июль 2016, 18:00:17
Ответ #14
  • Старожил
  • ****
  • Сообщений: 380
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если на прямую запускать
<form action="http://localhost/0012avd/themes/default-bootstrap/suslik.php" method="POST">
<textarea  style="margin: 10px 0 0 10px; width: 350px; height: 100px; " name="isbn" id="isbn"></textarea>
<input type="submit" value="OK" id="mysubmit">
</form>
То все нормально,запись есть...
Спасибо!