Передача данных из страницы категории в PHP файл и запись данных

Автор piter, 04 июля 2016, 12:17:44

« назад - далее »

piter

Добрый день!
Прошу подсказать решение такого вопроса..
В блоке категорий передаются  данные в 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.
Подскажите,  как это можно сделать?

Спасибо!

DarinSr

Для сохрания данных в бд в pretsashop используют класс DB и его методы
Db::getInstance()->Execute('INSERT IGNORE INTO `'._DB_PREFIX_.'название таблицы`(`1-е поле`,`2-е поле`,`3-е поле`,...) VALUES ('.$a.', '.$b.', '.$c.',...)');

piter

#2
Спасибо за ответ!
Но при вставки данного кода в 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.')');


}
?>

Не работает.............

DarinSr

Ошибка может быть от того, что вы используете свой файл, а не контроллеры/модули prestashop. В таком случве сохраняйте данные в бд с помощью функций php
// подключение к серверу баз данных MySQL
mysql_connect($host, $user, $password)
// выбор бд
mysql_select_db($dbname,$dbcnct)
// выполнение запроса
mysql_query ($sql)

piter


piter

#5
Всем спасибо! Работает
Остался вопрос... При выполнении 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 то не обработает.
Спасибо!

Миколас


Mr.Sen

На кнопку формы вешаете событие click и обрабку запроса в своем файле.
$(document).ready(function()
{
$('#myform').click(function(){
                $.ajax({
type: 'POST',
url: baseDir + 'myfile.php',
async: true,
cache: false,
dataType : "json",
data: // все данные формы

piter


piter

#9
Всем добрый день!
Попробовал по примеру выше, поставил
$.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... не показывает.
Может еще что-то пропустил.. в чем проблемма?
Спасибо!

DarinSr

<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>

piter


piter

#12
Ребята.. что-то не то, как-то не получается у меня..
Передаю одну переменную в 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 файл не запускает..
В чем дело.
Спасибо!

piter

#13
Может в 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);

}
?>

piter

#14
Если на прямую запускать
<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>

То все нормально,запись есть...
Спасибо!