adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Как распарсить post запрос в sqlite?
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ИНТЕРНЕТ/СЕТИ
Автор Сообщение
alexcom
Медвед-шатун
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 11-32    Заголовок сообщения: Как распарсить post запрос в sqlite? Ответить с цитатой

Собственно вопрос знающим php.
Есть некий скрипт который в результате своей работы делает post запрос вида
Код:
mode=blabla&db_ratio=blabla&freq=blabla&message=blabla&utc_time=blabla&dt_shift=blabla

Ну тобишь название параметра = значение и разделённое &. Это дело надо раскладывать в базу данных (sqlite например) для последующего просмотра в табличном виде.
КАК?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail Посетить сайт автора Jabber ID Номер ICQ
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 11-44    Заголовок сообщения: Ответить с цитатой

А как ты решил, что это POST запрос?

Так обычно записывают GET запрос, доступ к переменным(с POST так же будет):

$_GET['mode']
$_GET['db_ratio'] и т.д.

А почему sqlite? в связке с php обычно mysql используют, тут уже небольшой скрипт нужно будет писать, создавать перед этим таблицу.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
ДобрыйФей
Мечтатель
Предупреждений : 5
СообщениеДобавлено: Пт 17-06-16 : 11-45    Заголовок сообщения: Ответить с цитатой

PHP толком не знаю, но у тебя доступны пары key->value, составляешь запрос на добавление и выполняешь его. Профит.
http://php.net/manual/ru/language.variables.external.php
Я где-то ошибаюсь?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
alexcom
Медвед-шатун
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 11-52    Заголовок сообщения: Ответить с цитатой

Richard Ferlow писал(а):
А как ты решил, что это POST запрос?

В коде скрипта делающего запрос, именно post. Сниффер говорит тоже самое.
Richard Ferlow писал(а):
А почему sqlite

На самом деле без разницы какую базу, хоть текстовый файл. Главное что бы данные потом можно было отобразить в табличном виде...
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail Посетить сайт автора Jabber ID Номер ICQ
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 12-10    Заголовок сообщения: Ответить с цитатой

Тут от объема данных зависит. если их не дофига, то можно действительно в текстовый файл запись вести

создаешь в excel файл, где колонки называешь так, как у тебя переменные названы

т.е.
mode db_ratio и т.д.

вернее это не колонка, а первая строка будет. сохраняешь этот файл как csv файл разделителя запятые(если правильно помню), смотришь внутри что через блокнот - там будут данные в формате
mode;db_ratio;....


дальше делаем так (при обращении к скрипту дописывает новую строку в конце...



Код:
<?php
$filename = 'test.txt';
$somecontent = $_POST['mode'].';'.$_POST['db_ratio'].';'."\n";

// Вначале давайте убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {

    // В нашем примере мы открываем $filename в режиме "дописать в конец".
    // Таким образом, смещение установлено в конец файла и
    // наш $somecontent допишется в конец при использовании fwrite().
    if (!$handle = fopen($filename, 'a')) {
         echo "Не могу открыть файл ($filename)";
         exit;
    }

    // Записываем $somecontent в наш открытый файл.
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Не могу произвести запись в файл ($filename)";
        exit;
    }
   
    echo "Ура! Записали ($somecontent) в файл ($filename)";
   
    fclose($handle);

} else {
    echo "Файл $filename недоступен для записи";
}
?>


файл потом через excel можно смотреть
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
alexcom
Медвед-шатун
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 12-16    Заголовок сообщения: Ответить с цитатой

В таком случае можно вообще писать сразу html файл готовый к просмотру в браузере... Вопрос в том, что на web сервере разрешать запись в файл из php плохая идея.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Отправить e-mail Посетить сайт автора Jabber ID Номер ICQ
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 12-33    Заголовок сообщения: Ответить с цитатой

alexcom
ну как...тут проверки уже надо делать разные чтобы никто левый не писал. а то так и в базу запись бы шла, там тоже простор для манипуляций)))

можно и в html, тут как угодно, просто тогда к этим данным html Тэги прибавятся и в случае чего массивом данных оперировать значительно сложнее станет + размер файла увеличится.

csv можно потом в базу данных экспортировать и все.

права на запись на тестовом файле только будут же.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
Aprelle
Гуру
СообщениеДобавлено: Пт 17-06-16 : 12-38    Заголовок сообщения: Ответить с цитатой

так и делай, пример на PHP+PDO и MySQL
Код:
// PDO
try

   # MySQL через PDO_MYSQL 
  $cn = new PDO("mysql:host=$host;dbname=$db", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
  $cn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

catch(PDOException $e)

    echo $e->getMessage();     
}

// Парсим входные данные
            $pid = $_POST['pid'];
            $sid = $_POST['sid'];
            $grp = $_POST['grp'];
// PDO            
try
{         
   $data = array( 'pid' => $pid, 'sid' => $sid, 'grp' => $grp);
   $q = $cn->prepare("INSERT INTO result (p_id, s_id, grp) VALUES(:pid, :sid, :grp)");
   $q->execute($data);         

catch(PDOException $e) { 
    echo $e->getMessage();     
}   
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
k0stE
Гуру
СообщениеДобавлено: Пт 17-06-16 : 12-55    Заголовок сообщения: Ответить с цитатой

Я потерял нить, надо то ли сразу печатать, то ли в базу, то ли в файл Smile

Печатает все аргументы и их значения с переносом строки.

Код:
<?php
$agent = $_SERVER['HTTP_USER_AGENT'];
foreach($_POST as $k=>$v) {
  if (preg_match('/curl/i', $agent)) {
    echo $k . "=" . $v . "\n";
  }
  else {
    echo $k . "=" . $v . "<br>";
  }
}
?>


Цитата:
[k0ste@WorkStation ~]$ curl -d "alex=com&richard=ferlow" php.execute.com/example.php
alex=com
richard=ferlow
[k0ste@WorkStation ~]$
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
icemind
Гуру
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 13-03    Заголовок сообщения: Ответить с цитатой

Так проблема распарсить или записать?

Код:

РАСПАРСИТЬ:
$post='mode=blabla&db_ratio=blabla&freq=blabla&message=blabla&utc_time=blabla&dt_shift=blabla';

$parcearr=explode('&',$post);
if(count($parcearr)>0)
{
     foreach($parcearr as $str)
     {
            $paramarr=explode('=', $str);
            $param=$paramarr[0];
            $val=$paramarr[1];

            ЗАПИСАТЬ:
            'Здесь пишем код для записи в базу данных параметров и их значений'

     }
}


UPD: исправил баги
Последний раз редактировалось: icemind (Пт 17-06-16 : 13-55), всего редактировалось 1 раз
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 13-13    Заголовок сообщения: Ответить с цитатой

icemind
ну и написали...
post данные так не выглядят и получать их нужно иначе.
у explode порядок аргументов перепутан...дальше тоже что-то непонятное
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
icemind
Гуру
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 14-00    Заголовок сообщения: Ответить с цитатой

Richard Ferlow писал(а):
post данные так не выглядят и получать их нужно иначе.


как я понял он получает данные в виде такой строки(типа $_POST[stroka]='mode=blabla&db_ratio=blabla&freq=blabla&message=blabla&utc_time=blabla&dt_shift=blabla')

Richard Ferlow писал(а):
у explode порядок аргументов перепутан

explode подправил

Richard Ferlow писал(а):
дальше тоже что-то непонятное

дальше разбиваем опять каждую пару и уже с каждым элементом пары делаем что хотим.

ЗЫ: единстенное условие, нужно на стороне клиента проверять, чтобы в значениях не было символов & и =
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Richard Ferlow
Гуру
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 14-17    Заголовок сообщения: Ответить с цитатой

icemind
если бы строкой было, то лучше сделать так

Код:
$post='mode=blabla&db_ratio=blabla&freq=blabla&message=blabla&utc_time=blabla&dt_shift=blabla';

parse_str($post, $output);




Код:
Array ( [mode] => blabla [db_ratio] => blabla [freq] => blabla [message] => blabla [utc_time] => blabla [dt_shift] => blabla )
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
icemind
Гуру
Предупреждений : 2
СообщениеДобавлено: Пт 17-06-16 : 14-21    Заголовок сообщения: Ответить с цитатой

Richard Ferlow писал(а):
если бы строкой было, то лучше сделать так


согласен, если только у него разделители всегда & и =
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ИНТЕРНЕТ/СЕТИ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы