Версия для печати темы
forum.0day.community _ Web-программирование _ Вопросы по PHP
Автор: PRIHOD Feb 11 2015, 13:21
Приветствую!
Joomla
Хочу, что бы в корзине, выводило сообщение о том, что доставка бесплатная, при условии, если цена выше 200грн
имеем $pricesum - сумма к оплате
пишу
<?php if ($pricesum >= 200){ ?>
<?php $freedelivery = 'Для этого товара доставка бесплатная'; ?>
<?php }else{?>
<?php $freedelivery = 'фиксированная стоимость'; ?>
<?php } ?>
и вывожу ее
echo"<tr>
<td colspan=\"2\" align=\"right\">".$freedelivery."</td>;
но так не воркает.
Подскажете?
Автор: Navern Feb 11 2015, 15:09
(PRIHOD @ Feb 11 2015, 13:21)

Приветствую!
Joomla
Хочу, что бы в корзине, выводило сообщение о том, что доставка бесплатная, при условии, если цена выше 200грн
имеем $pricesum - сумма к оплате
пишу
<?php if ($pricesum >= 200){ ?>
<?php $freedelivery = 'Для этого товара доставка бесплатная'; ?>
<?php }else{?>
<?php $freedelivery = 'фиксированная стоимость'; ?>
<?php } ?>
и вывожу ее
echo"<tr>
<td colspan=\"2\" align=\"right\">".$freedelivery."</td>;
но так не воркает.
Подскажете?
Проверь $pricesum попадает вообще в шаблон, не пустая ли?
Автор: PRIHOD Feb 12 2015, 10:04
(Navern @ Feb 11 2015, 15:09)

Проверь $pricesum попадает вообще в шаблон, не пустая ли?
с ней все в порядке.
Автор: Olton Apr 26 2015, 8:58
(PRIHOD @ Feb 11 2015, 14:21)

Приветствую!
Joomla
Хочу, что бы в корзине, выводило сообщение о том, что доставка бесплатная, при условии, если цена выше 200грн
имеем $pricesum - сумма к оплате
пишу
<?php if ($pricesum >= 200){ ?>
<?php $freedelivery = 'Для этого товара доставка бесплатная'; ?>
<?php }else{?>
<?php $freedelivery = 'фиксированная стоимость'; ?>
<?php } ?>
и вывожу ее
echo"<tr>
<td colspan=\"2\" align=\"right\">".$freedelivery."</td>;
но так не воркает.
Подскажете?
Привет.
1) Ваш IF можно написать короче

<? $freedelivery = $pricesum >= 200 ? 'Бесплатно' : 'Фиксировано' ?>
2) нужно проверить, есть ли значение в $pricesum перед условием
3) и само условие там же где и вывод ? Перед выводом ничего больше не происходит с $freedelivery ?
Автор: PRIHOD Jun 24 2015, 16:43
Wordpress
Задача: на главной вывести название и изображение рубрики
Прикрутил Advanced Custom Fields, для рубрик загрузил фотки.
Вывожу
<?php $categories = get_categories(array('hide_empty' => 0, 'include' => 1, 'parent' => 0));
foreach ($categories as $cat) {
$id = $cat->cat_ID;
$link = get_category_link($id);
$img_arr = get_field('imagecat', 'category_'.$id);
echo '
<a href="'.$link.'" title="'.$cat->cat_name.'">
<img src="'.$img_arr['sizes']['thumbnail'].'" alt="'.$img_arr['alt'].'" />
<span>'.$cat->cat_name.'</span>
</a>';
}
?>
Получаю
<div>
<a title="категория1" href="/cat1/">
<img alt="" src="">
<span>категория1</span>
</a>
</div>
почему не вывело пикчу?
Автор: miniden Dec 14 2015, 12:52
(PRIHOD @ Jun 24 2015, 17:43)

Wordpress
Задача: на главной вывести название и изображение рубрики
Прикрутил Advanced Custom Fields, для рубрик загрузил фотки.
Вывожу
<?php $categories = get_categories(array('hide_empty' => 0, 'include' => 1, 'parent' => 0));
foreach ($categories as $cat) {
$id = $cat->cat_ID;
$link = get_category_link($id);
$img_arr = get_field('imagecat', 'category_'.$id);
echo '
<a href="'.$link.'" title="'.$cat->cat_name.'">
<img src="'.$img_arr['sizes']['thumbnail'].'" alt="'.$img_arr['alt'].'" />
<span>'.$cat->cat_name.'</span>
</a>';
}
?>
Получаю
<div>
<a title="категория1" href="/cat1/">
<img alt="" src="">
<span>категория1</span>
</a>
</div>
почему не вывело пикчу?
ну сперва пробуем
print_r($img_arr);
и смотрим что там лежит
Автор: Vo1 Dec 14 2015, 18:50
(Olton @ Apr 26 2015, 7:58)

Привет.
1) Ваш IF можно написать короче

<? $freedelivery = $pricesum >= 200 ? 'Бесплатно' : 'Фиксировано' ?>
Совет начинающим (и не только) программистам: старайтесь не использовать такую конструкцию.
Автор: RipperR Dec 7 2016, 18:55
Есть ли какой-то конвертер php5 в php7 ... вручную фиксить уже мозг закипает ..
кокретно перезд с MySQL на mysqli
При тупой замене одного на другое получаем кучу ощибок ...
Автор: Gamer_2007 Dec 8 2016, 10:28
(RipperR @ Dec 7 2016, 18:55)

Есть ли какой-то конвертер php5 в php7 ... вручную фиксить уже мозг закипает ..
кокретно перезд с MySQL на mysqli
При тупой замене одного на другое получаем кучу ощибок ...

Каков тогда мотив был делать php7?
Надо понимать общую архитектуру для этого, и понять что изменилось и на что и переписывать ручками
Автор: vas1 Dec 8 2016, 11:39
(RipperR @ Dec 7 2016, 18:55)

Есть ли какой-то конвертер php5 в php7 ... вручную фиксить уже мозг закипает ..
кокретно перезд с MySQL на mysqli
При тупой замене одного на другое получаем кучу ощибок ...
Конвертера нету, есть тулза которая подсказывает какие части кода не готовы к пхп7: https://github.com/Alexia/php7mar
А насколько большой проект? Может проще будет взять какой-нибудь laravel или yii?
Автор: RipperR Dec 8 2016, 11:48
Апнул из-за того что нужно было поставить gsm sms шлюз api там был написан под php7 масивы описанны подругому итд итп... Поставил и началось из 4 сайтов откачал вчера один... Второй намного сложнее... + куча стороних api от железа там тоже возможны танцы.
они походу даже с gd2 библиотекой что-то на творили ... примитивная отрисовка графика не работает ... не ощибок нечего ... туоп крестик вместо картинки хотя с бд данные через mysqli выгребло ...
и не могу понят эта конструкция уже не рабочая в php7 оно требует mysqli_result ....
$result=mysqli_fetch_array(mysqli_query($dbcnx,"SELECT id FROM users WHERE nickname = \"".$user."\" AND password = \"".$password."\" "));
print_r $result;
и по маре я так и не понял репорт
2016-12-08T13:22:19+02:00 Scanning /dev/example_simple_v100.php Including file extensions: php Processed 121 lines contained in 1 files. Processing took 0.13464379310608 seconds.
это типо ок или че
if($_POST['username'] || $_POST['password'])
Undefined index username дает ошибку что ему не нравится ...
основная ощибка
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /site/include/login.php on line 7
$result=mysqli_fetch_array(mysqli_query($dbcnx,"SELECT id FROM users WHERE nickname = \"".$user."\" AND password = \"".$password."\" "));
и Undefined variable: dbcnx in
Формально оно жалуется на переменную $dbcnx которая является непосредственным конектом с бд и оно прописанно в config файле в инклюде к этому ...
Автор: vas1 Dec 8 2016, 15:39
(RipperR @ Dec 8 2016, 11:48)

они походу даже с gd2 библиотекой что-то на творили ... примитивная отрисовка графика не работает ... не ощибок нечего ... туоп крестик вместо картинки хотя с бд данные через mysqli выгребло ...
Возможно пхп собран без поддержки gd2 - он есть в phpinfo()?
(RipperR @ Dec 8 2016, 11:48)

и по маре я так и не понял репорт
2016-12-08T13:22:19+02:00 Scanning /dev/example_simple_v100.php Including file extensions: php Processed 121 lines contained in 1 files. Processing took 0.13464379310608 seconds.
это типо ок или че
Да, это ок
(RipperR @ Dec 8 2016, 11:48)

if($_POST['username'] || $_POST['password'])
Undefined index username дает ошибку что ему не нравится ...
Скорее всего username не передается в скрипт - опять же phpinfo() или var_dump($_POST); должны точно сказать
(RipperR @ Dec 8 2016, 11:48)

основная ощибка
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /site/include/login.php on line 7
$result=mysqli_fetch_array(mysqli_query($dbcnx,"SELECT id FROM users WHERE nickname = \"".$user."\" AND password = \"".$password."\" "));
и Undefined variable: dbcnx in
Формально оно жалуется на переменную $dbcnx которая является непосредственным конектом с бд и оно прописанно в config файле в инклюде к этому ...
Скорее всего не происходит подключения к mysql - надо проверить что происходит в файле который инклюдится. Сразу после вызова функции коннекта написать что-то типа
var_dump([mysqli_connect_errno(), mysqli_connect_error()]);
Автор: RipperR Dec 8 2016, 19:15
GD2 поидее есть ...
gd
GD Support enabled
GD headers Version 2.2.3
GD library Version 2.2.3
По POST
enable_post_data_reading On On если я правильно понял ...
Да пост переменные приходят var_dump их возвращает ...
нотисы поубирал фукнцией isset() (не уверен что она работает также у меня проверка в тех местах POST() переменная существует или пуста ..
Прикол в том что код 100% рабочий на машине с php 5.4 работал ... после апа в php7 завалился ...
а ощибка с подключением все ще есть ...
var_dump([mysqli_connect_errno(), mysqli_connect_error()]);
нечего не возвращает ....
Пока по ощибкам
Notice: Undefined variable: dbcnx in /var/site/include/login.php on line 7
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /var/site/include/login.php on line 7
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /var/site/include/login.php on line 7
Я так полагаю с инклюда не приходит dbcnx
Есть подозрение что его надо передавть в метод ибо он как-то изолирован ...
Да если скопировать текст конфига с подключением к дб оно начинает частично работать ... тоесть переменные не предаются с корневого файла в методы которые тоже находятся в инклюдах ... что-то они там намудрили ...
какие вашы мысли
Основной файл
include mysqlconfig
include methods
include some staff
metod()
{
переменная с mysqlconfig
}
почемуто это не работает теперь
....
Короче говоря проблемы с областью видимости переменных ... я не понимаю что не так (тоесть ввиду необходимости передачи новой переменной mysqli_query($dbcnx, "SQL QUERY"); и ее не видиости в функциях ...
$a =5;
function newfuncion($z, $y)
{
$v=$z*$a; -- тут уже нет доступа к переменной $a ... что они намудрили
}
Тоесть чтобы все работало надо процедуру коннекта к бд вынесенную в include проводить в каждой функции внутри ...
И что-то сломалось ощибки теперь он не выводит вообще некакие ... ему всеравно ...
Автор: vas1 Dec 9 2016, 11:18
(RipperR @ Dec 8 2016, 19:15)

$a =5;
function newfuncion($z, $y)
{
$v=$z*$a; -- тут уже нет доступа к переменной $a ... что они намудрили
}
Навскидку даже не могу сказать как это могло работать в предыдущей версии, не помню настройки в php.ini которая бы делала все переменные глобальными. Сделайте
global $dbcnx;
в начале функций где нужно подключение - поможет.
Откройте картинку которая должна быть сгенерирована в новом окне браузера - там должны быть ошибки по идее.
Автор: RipperR Dec 9 2016, 13:54
Да ты прав все заработало...
А раньше оно работало ибо в функции MySQL_query небыло необходимости передавать каждый раз параметры коннекта ...
еще заменил функцию ereg_replace на preg_replace и все заработало
(как минимум визуальная часть)
по GD2 непонятно что это было закоментил потыкал тестовых примеров нечего не работало сделал вар дамп gd_info(); увидел что все ок ...
удалил раскоментил и о магия все заработало ...
короче процес перезда на php7 идет полным ходом ... большую часть оживил ... даже GSM шлюз теперь работает =) ... так что пока все ок ... API для работы с железом почти все функциклируют ... ssh команды тоже выполняются так что вроде жить можно только надо уделить немного времени ...
Автор: RipperR Dec 14 2016, 21:24
Народ такой вопрос не отборажаються ощибки синтаксиса и прорчее ... просто белая страница в браузерах кроме ЕДЖА в эдже ощибка 500
error_reporting(E_ALL);
ini_set("display_errors", 1);
не спасают
точнее оно работает если код живой и щибка в функциях или еще в какой мелочевке ... иначе белый экран
Автор: Powerhead Dec 22 2016, 12:41
(RipperR @ Dec 14 2016, 21:24)

Народ такой вопрос не отборажаються ощибки синтаксиса и прорчее ... просто белая страница в браузерах кроме ЕДЖА в эдже ощибка 500
error_reporting(E_ALL);
ini_set("display_errors", 1);
не спасают
точнее оно работает если код живой и щибка в функциях или еще в какой мелочевке ... иначе белый экран
проверь в php.ini display_startup_errors должно быть включено. Там же установи и error_reporting и display_errors
Автор: Чапик May 19 2017, 6:28
Хелоу. Есть обработчик форм, который отправляет форму на одну почту, а нужно, чтобы он отправлял на 3 адреса. Буду признателен за помощь.
<?php
$method = $_SERVER['REQUEST_METHOD'];
//Script Foreach
$c = true;
if ( $method === 'POST' ) {
$project_name = trim($_POST["project_name"]);
$admin_email = trim($_POST["admin_email"]);
$form_subject = trim($_POST["form_subject"]);
foreach ( $_POST as $key => $value ) {
if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
$message .= "
" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
</tr>
";
}
}
} else if ( $method === 'GET' ) {
$project_name = trim($_GET["project_name"]);
$admin_email = trim($_GET["admin_email"]);
$form_subject = trim($_GET["form_subject"]);
foreach ( $_GET as $key => $value ) {
if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
$message .= "
" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
</tr>
";
}
}
}
$message = "<table style='width: 100%; border-collapse: collapse;'>$message</table>";
function adopt($text) {
return '=?UTF-8?B?'.Base64_encode($text).'?=';
}
$headers = "MIME-Version: 1.0" . PHP_EOL .
"Content-Type: text/html; charset=utf-8" . PHP_EOL .
'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
'Reply-To: '.$admin_email.'' . PHP_EOL;
mail($admin_email, adopt($form_subject), $message, $headers );
Автор: mzk Feb 10 2018, 17:16
Камрады, помогите начинающему:
Виндовый сервер Апач 2.4 + пхп 7.2
Есть вот такая структура файлов в папка htdocs:
---htdos (folder)
------index.php
------login.php
------access (folder)
---------checkorders.php
На данный момент есть базовая аутентификация, которая в случае правильного логина и пароля редиректит пользователя в checkorders.php, где вся логика и лежит
Проблема в том, что я могу открыть файл checkorders.php сразу прямой ссылкой, без аутентификации
Вопрос: как запретить прямой доступ к файлу и делать редирект на index.php и пропускать только через аутентификацию?
Вот код в файлах:
index.php
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}
/* Full-width input fields */
input[type=text], input[type=password] {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
box-sizing: border-box;
}
/* Set a style for all buttons */
button {
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
cursor: pointer;
width: 100%;
}
button:hover {
opacity: 0.8;
}
/* Extra styles for the cancel button */
.cancelbtn {
width: auto;
padding: 10px 18px;
background-color: #f44336;
}
/* Center the image and position the close button */
.imgcontainer {
text-align: center;
margin: 24px 0 12px 0;
position: relative;
}
img.avatar {
width: 40%;
border-radius: 50%;
}
.container {
padding: 16px;
}
span.psw {
float: right;
padding-top: 16px;
}
/* The Modal (background) */
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
padding-top: 60px;
}
/* Modal Content/Box */
.modal-content {
background-color: #fefefe;
margin: 5% auto 15% auto; /* 5% from the top, 15% from the bottom and centered */
border: 1px solid #888;
width: 80%; /* Could be more or less, depending on screen size */
}
/* The Close Button (x) */
.close {
position: absolute;
right: 25px;
top: 0;
color: #000;
font-size: 35px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: red;
cursor: pointer;
}
/* Add Zoom Animation */
.animate {
-webkit-animation: animatezoom 0.6s;
animation: animatezoom 0.6s
}
@-webkit-keyframes animatezoom {
from {-webkit-transform: scale(0)}
to {-webkit-transform: scale(1)}
}
@keyframes animatezoom {
from {transform: scale(0)}
to {transform: scale(1)}
}
/* Change styles for span and cancel button on extra small screens */
@media screen and (max-width: 300px) {
span.psw {
display: block;
float: none;
}
.cancelbtn {
width: 100%;
}
}
</style>
</head>
<body onload="document.getElementById('id01').style.display='block'" style="width:auto;">
<!--<button onload="document.getElementById('id01').style.display='block'" style="width:auto;">Вхід</button> -->
<div id="id01" class="modal">
<form class="modal-content animate" action="/login.php" method="POST">
<div class="imgcontainer">
<span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">×</span>
</div>
<div class="container">
<label for="username"><b>Логін</b></label>
<input type="text" placeholder="Ім'я" name="username" required >
<label for="password"><b>Пароль</b></label>
<input type="password" placeholder="Пароль" name="password" required >
<button type="submit">Вхід</button>
<label>
<input type="checkbox" checked="checked" name="remember"> Запам'ятати мене
</label>
</div>
</form>
</div>
<script>
// Get the modal
var modal = document.getElementById('id01');
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
</script>
</body>
</html>
login.php
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<?php
$usr="asd";
$pwd="123";
if(isset($_POST['username']) && !empty($_POST['username']) && isset($_POST['password']) && !empty($_POST['password']) ){
$username=$_POST['username'];
$password=$_POST['password'];
if(($username==$usr) && ($password==$pwd) ){
header('Location: /access/checkorders.php');
}else{
echo '<br><h2>Не вірний пароль!</h2>';
}
}else{
defined('_JEXEC') or die('Ай-яй-яй, сюда нельзя!');
echo "<br> <h2>Введіть логін та пароль</h2>";
}
?>
checkorders.php
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<?php
50 запросов в бд с выводом в таблицу
?>
Автор: YaAllex Feb 10 2018, 17:23
Первое что приходит на ум - это использование сессий(наверное самый правильный вариант). Те в checkorders.php вы проверяете зашел ли существует ли такой пользователь и авторизирован ли он - и если нет, то редирект на login.php
Автор: mzk Feb 11 2018, 10:24
(YaAllex @ Feb 10 2018, 17:23)

Первое что приходит на ум - это использование сессий(наверное самый правильный вариант). Те в checkorders.php вы проверяете зашел ли существует ли такой пользователь и авторизирован ли он - и если нет, то редирект на login.php
Спасибо за подсказку, получилось
Автор: mzk Feb 26 2018, 0:20
Камрады, нужна помощь с дефолтным календарем.
Имею строку в коде, которая показывает календрь в качестве инпута:
<input id="date" type="date" name="date_to" value="10-10-10">
И которая показывает вот такой календарь:
http://piccy.info/view3/12099530/9a997ec4b21e6bbeb00ea149107e5cc8/http://i.piccy.info/a3c/2018-02-25-22-17/i9-12099530/277x236-r
Вопрос: возможно ли каким-то образом перевести название месяцев и дней на украинский ?
Сменить локализацию или еще чего...
Заранее спасибо!
Автор: Анттошка Feb 26 2018, 9:53
Так это же должно зависеть от настроек системы. Пользуйтесь плагинами на JS.
Автор: mzk Feb 26 2018, 10:05
(Анттошка @ Feb 26 2018, 9:53)

Так это же должно зависеть от настроек системы. Пользуйтесь плагинами на JS.
А какие именно настройки системы нужны? А то я пока связь не улавливаю.
Локализацию в настройках региона в панеле управления?
А JS это хорошо и календари классные, но нужен именно вариант на php
Автор: antonio2000 Feb 26 2018, 12:22
вы бы код выложили чтобы не гадать.
Автор: Анттошка Feb 26 2018, 15:16
(mzk @ Feb 26 2018, 10:05)

А какие именно настройки системы нужны? А то я пока связь не улавливаю.
Локализацию в настройках региона в панеле управления?
А JS это хорошо и календари классные, но нужен именно вариант на php
Ну да, вы своим кодом говорите браузеру, что нужно отобразить инпут типа календарь. Настройки отображения у него свои. Языковые настройки может взять как из настроек системы, так и свои. Этим управлять невозможно. Поэтому и используются самописные календари на js.
Автор: mzk Mar 9 2018, 18:41
Ребят, опять вопрос возник:
Есть html форма, которая передает введенные данные в php и потом делается sql запрос в бд по кнопке "Поиск"
Задача:
Нужно автоматически нажимать кнопку "Поиск" каждые 2 минуты и видеть результат.
Нашел просто обновление старницы, но это совсем не то...
Форма:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<form id="myform" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<div class="h4">
<div class="h4">Тип документу:</div>
<select name="documenttype">
<option value="1" <?php if ($_POST['documenttype'] == "1") echo 'selected="selected" '; ?>>Інтернет</option>
<option value="2" <?php if ($_POST['documenttype'] == "2") echo 'selected="selected" '; ?>>Замовлення</option>
<option value="3" <?php if ($_POST['documenttype'] == "3") echo 'selected="selected" '; ?>>Фактура</option>
<option value="4" <?php if ($_POST['documenttype'] == "4") echo 'selected="selected" '; ?>>Витяг</option>
<option value="5" <?php if ($_POST['documenttype'] == "5") echo 'selected="selected" '; ?>>Інші..</option>
</select><br>
<br><select name="store">
<option value="">Обрати магазин...</option>
<option value="1" <?php if ($_POST['store'] == "1") echo 'selected="selected" '; ?>>1 - Київ</option>
<option value="2" <?php if ($_POST['store'] == "2") echo 'selected="selected" '; ?>>2 - Одеса</option>
<option value="3" <?php if ($_POST['store'] == "3") echo 'selected="selected" '; ?>>3 - Дніпро</option>
<option value="4" <?php if ($_POST['store'] == "4") echo 'selected="selected" '; ?>>4 - Житомир</option>
</select>
<span class="error">* <?php echo $storeErr;?></span><br>
<br><input type="text" name="order" placeholder="№ Замовлення.." value="<?php echo $order;?>">
<span class="error"> <?php echo $orderErr;?></span><br>
</div>
<div class="h4">
Дата з:<br><input id="date_from" type="text" name="date_from" readonly="readonly" value="<?php echo $date_from;?>">
<span class="error">* <?php echo $date_fromErr;?></span><br>
<div class="h4">
Дата по:<br><input id="date_to" type="text" name="date_to" readonly="readonly" value="<?php echo $date_to;?>">
<span class="error">* <?php echo $date_toErr;?></span>
</div>
</div>
<div class="h3">Показати товари в документі:<input type="checkbox" name="checkbox_prod" value="1"></div>
<br>
<input style="border-radius: 5px;"type="submit" class="button" name="submit" value="Пошук">
</form>
Как можно сделать посредством php или тоже js нужен ?
Автор: Анттошка Mar 9 2018, 21:29
Да, нужен js чтобы отправлять данные формы и получать результат (обновлять страницу с результатом запроса).
Автор: rabbit1991 Mar 10 2018, 20:55
https://learn.javascript.ru/settimeout-setinterval
Страницу обновлять не нужно. Создаешь див для данных и меняешь его содержимое html, если данные изменились.
Если уже используешь jQuery, то там в нем есть более удобные готовые вещи. Но я не программист .
Автор: mzk Mar 13 2018, 9:50
Так, разобрался с jquery. Как-то не просто все
Возникла еще задачка:
Ниже схема отрисовки таблицы в html.
Инфа берется из базы на PG.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
http://piccy.info/view3/12147108/9afde372d87e49f4a22719ef7b159db6/http://i.piccy.info/a3c/2018-03-13-07-49/i9-12147108/500x149-r
Справа прилеплено поле ввода и кнопка, по нажатию которой значение должно записаться в базу уже на mysql без рефреша страницы
Криво-косо, но все в базу PG пулить не могу - права только на чтение.
Опять нужен jquery и вот, что я попробовал, но пока не получается:
Код самого инпута и кнопки на html:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<form id="update_mysql" onsubmit="return false">
<input id="ldap" type="text" placeholder="LDAP...">
<button style="border-radius: 5px;" class="button" onclick="insertData()">Зібрати</button>
</form>
Код на js:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
function insertData()
{
var name = $("#ldap").val();
$.ajax({
type :"POST",
url :"insert_mysql.php",
data :"input_ldap="+ldap,
success : function(data){
alert("data saved successfully");
}
})
}
Код в insert_mysql.php:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
$servername = "blabla";
$username = "bla";
$password = "bla";
$dbname = "bla";
$input_ldap=$_POST['ldap'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
echo "Connected successfully"."<br>";
$sql = "INSERT INTO bla.bla (input_ldap)
VALUES ('$input_ldap')";
$conn->query($sql);
$conn->close();
Автор: vas1 Mar 13 2018, 10:29
Имя параметра которое отправляется в яваскрипте не совпадает с тем которое пытается использовать ПХП
data :"input_ldap="+ldap,
$input_ldap=$_POST['ldap'];
Надо или input_ldap или ldap везде
Автор: mzk Mar 13 2018, 13:21
Спасибо, все поправил и закрутилось-завертелось
Автор: mzk Mar 13 2018, 21:25
$(document).ready(function(e) {
$('#send_change').click(function(){
var sel = $('#sel').val();
var lmorder = $('#lmorder').val();
var lmstore = $('#lmstore').val();
$.ajax({
type : 'POST',
data : {lmorder:lmorder,lmstore:lmstore,sel:sel},
url : "update_mysql.php",
success : function(result){
alert(result);
}
})
});
});
Подскажите, как в этом коде обнулять переменные после каждого успешного нажатия\апдейта ?
А то апдейтит одно и то же
Автор: Анттошка Mar 13 2018, 22:17
(mzk @ Mar 13 2018, 21:25)

Подскажите, как в этом коде обнулять переменные после каждого успешного нажатия\апдейта ?
А то апдейтит одно и то же

$(document).ready(function(e) {
$('#send_change').click(function(){
var sel = $('#sel').val();
var lmorder = $('#lmorder').val();
var lmstore = $('#lmstore').val();
$.ajax({
type : 'POST',
data : {lmorder:lmorder,lmstore:lmstore,sel:sel},
url : "update_mysql.php",
success : function(result){
alert(result);
$('#sel').val('');
$('#lmorder').val('');
$('#lmstore').val('');
}
})
});
});
Автор: mzk Mar 14 2018, 8:33
Здорово. Работает, спасибо.
По ходу дела натолкнулся еще на одну вещь и не знаю как обработать в jquery такое и как правильно отдавать значения в update_mysql.php
Вся таблица PG, которая ниже в спойлере, отрисовывается функцией foreach в пхп.
Кусочек из mysql отрисовывается c помощью цикла while внутри forearch.
Сам код отрисовки прилагаю (не маленький получился):
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
if (empty($resultArr)) {
echo "<p style=\"color:#FFFFFF\">Nothing to display because of no connection";
} else {
echo "<h2 class=\"h2\">Результат пошуку:</h2> ";
?>
<?php
echo "<table class=\"blueTable\">
<thead>
<tr>
<th>№</th>
<th>Магазин</th>
<th>Замовлення</th>
<th>Дата замовлення</th>
<th>Час</th>
<th>Статус Замовлення</th>
<th>Статус Оплати</th>
<th>Дата останньої зміни</th>
<th>Час</th>
<th>Сумма замовлення</th>
<th>Прізвище</th>
<th>Ім'я</th>
<th>Телефон</th>
</tr>
</thead>";
$i=1;
foreach($resultArr as $array)
{
if ($array['tra_eta_pay_id'] != 2) {
$color = "bgcolor=#FFEAE6";
} else {
$color = "bgcolor=#CEFFB4";
}
echo "<tr $color>
<td>". $i."</td>
<td>". $array['tra_mag_id']."</td>
<td>". $array['tra_id']."</td>
<td>". $array['date']."</td>
<td>". $array['time']."</td>
<td>". $array['order_status']."</td>
<td>". $array['internet_status']."</td>
<td>". $array['datelast']."</td>
<td>". $array['timelast']."</td>
<td>". $array['tra_mnt_total']."</td>
<td>". $array['tra_nom']."</td>
<td>". $array['tra_prenom']."</td>
<td>". $array['tra_valeur_media_relance']."</td>
<td bgcolor='#fff' >";?>
<?php
$servername = "блабла";
$username = "блабла";
$password = "траляля";
$dbname = "lmorder";
$or=$array['tra_id'];
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "select manual_status,input_ldap from lmorder.logistics where `order`='$or'";
$mysql_resut = $conn->query($sql);
if ($mysql_resut->num_rows > 0) {
while($row = $mysql_resut->fetch_assoc()) {
?>
<input type="text" readonly="readonly" value="<?php echo $row['input_ldap'];?>"><br>
<input id="sel<?php echo $i;?>" type="text" <?php if ($row['manual_status']) {echo 'readonly="readonly"';} ?> value="<?php if ($row['manual_status']) {echo $row['manual_status'];} ?>" placeholder="Статус">
<input id="lmorder<?php echo $i;?>" type="hidden" readonly="readonly" value="<?php echo $array['tra_id'];?>"> <br>
<input id="lmstore<?php echo $i;?>" type="hidden" readonly="readonly" value="<?php echo $array['tra_mag_id'];?>">
<button id="send_change<?php echo $i;?>" style="border-radius: 5px;" class="button">Оновити статус</button>
<?php
}
} else {
//echo "0 results";
?>
<form id="update_mysql" onsubmit="return false">
<input id="lmorder" type="hidden" readonly="readonly" value="<?php echo $array['tra_id'];?>">
<input id="lmstore" type="hidden" readonly="readonly" value="<?php echo $array['tra_mag_id'];?>">
<input id="ldap" type="text" placeholder="LDAP...">
<button id="send" style="border-radius: 5px;" class="button">Зібрати</button>
</form>
<?php }?>
<?php echo "</td>
</tr>";
$i++;
}
echo "</table>";
};
Таблица
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
http://piccy.info/view3/12150178/e5a68c206eaad9b2ffbbf8a5b6f995c1/http://i.piccy.info/a3c/2018-03-14-06-23/i9-12150178/500x146-r
update_mysql.php
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<?php
$servername = "блабла";
$username = "блабла";
$password = "бла";
$dbname = "lmorder";
$conn = new mysqli($servername, $username, $password, $dbname);
$lmorder = $_POST['lmorder1'];
$lmstore = $_POST['lmstore1'];
$sel = $_POST['sel1'];
$sql = "update lmorder.logistics
set manual_status=$sel where `order`='$lmorder' and store='$lmstore'";
$conn->query($sql);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
echo "Статус Замовлення $sel - $lmstore - $lmorder оновлено.";
}
?>
Кнопки справа отрисовываются в зависимости от данных, которые уже есть в таблице mysql.
Если данных LDAP нет, то рисуется кнопка "Зібрати", если они уже есть, то рисуется поле инпута кнопка "Оновити статус.
Я понял, что для нормального функционирования айдишки кнопок и инпутов должны быть уникальными для каждой строки, поэтому $i добавляет к ним 1, 2, 3...
Не могу сообразить как мне в Jquery передавать так много айдишек и как потом правильно обработать эти значение в update_mysql.php
Помогите, пожалуйста
Автор: Анттошка Mar 14 2018, 9:57
Что-то я не совсем вкурил в чем проблема. Как вариант указывай id в hidden input и отправляй форму с ним. Собрать все инпуты с указанным name можно через $(form).serializeArray();
Автор: mzk Mar 14 2018, 10:58
Чуть обновил код и уже для полей, которые есть в базе mysql и ставлю айдишки 100+
Таблица и хтмл:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
http://piccy.info/view3/12150569/baa8622ed6cea61c53315710ddebbf83/http://i.piccy.info/a3c/2018-03-14-08-52/i9-12150569/500x253-r
В запросе максимум можно вывести 50 строк.
Значит айдишки могут быть либо 1-50, либо 100-150
Мне нужно каким-то образом получать все инпуты от 1-50 (и кнопки 1-50) и передавать их через jquery и потом хендлить в update_mysql.php
Код на JS выглдяит так:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
$(document).ready(function(e) {
$('#send_change1, #send_change2, #send_change3, #send_change4').click(function(){
var sel1 = $('#sel1').val();
var lmorder1 = $('#lmorder1').val();
var lmstore1 = $('#lmstore1').val();
$.ajax({
type : 'POST',
data : {lmorder1:lmorder1,lmstore1:lmstore1,sel1:sel1},
url : "update_mysql.php",
success : function(result){
alert(result);
$("#sel1").val("");
$("#lmorder1").val("");
$("#lmstore1").val("");
}
})
});
});
Как мне адекватно передавать значения из инпутов:
sel2, lmorder2, lmstore2
sel3, lmorder3, lmstore3
sel3, lmorder3, lmstore3
...
sel50, lmorder50, lmstore50
Не соображаю...
Автор: SyntaxError Mar 14 2018, 11:10
$('.table-class').on('click', '.button-class', function( event ) {
var $button = $(event.target);
var $row = $button.closest('.table-row-class');
var $elements = $row.find('input');
var data = $elements.serialize();
$.ajax({
type : 'POST',
data : data,
url : "update_mysql.php",
success : function(result){
alert(result);
$elements.val('');
}
});
});
Автор: mzk Mar 14 2018, 12:05
SyntaxError,
Если использовать этот код, то как мне в файле update_mysql.php дергать эти значения?
Как пример:
$lmorder1 = $_POST['lmorder1'];
$lmorder2 = $_POST['lmorder2'];
...
$lmstore1 = $_POST['lmstore1'];
$lmstore2 = $_POST['lmstore2'];
...
$sel1 = $_POST['sel1'];
$sel2 = $_POST['sel2'];
...
Так ?
Автор: SyntaxError Mar 14 2018, 12:21
(mzk @ Mar 14 2018, 12:05)

SyntaxError,Если использовать этот код, то как мне в файле update_mysql.php дергать эти значения?
Как пример:
$lmorder1 = $_POST['lmorder1'];
$lmorder2 = $_POST['lmorder2'];
...
$lmstore1 = $_POST['lmstore1'];
$lmstore2 = $_POST['lmstore2'];
...
$sel1 = $_POST['sel1'];
$sel2 = $_POST['sel2'];
...
Так ?
Насколько я понял тебе нужно при клике на кнопку в конкретной строке таблицы обновить данные этой строки. Если так, то в этом случае тебе нужно передать ID строки и значения полей. И на бэкэнде получать их:
$row_id = $_POST['row_id'];
$lmorder = $_POST['lmorder'];
$lmstore = $_POST['lmstore'];
$sel = $_POST['sel'];
И в зависимости от $row_id записывать в базу.
Автор: mzk Mar 14 2018, 12:51
Да, совершенно верно
Получается, айдишки полей инпута в каждой строке должны быть одинаковыми ?
Выделил красными прямоугольниками:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
http://piccy.info/view3/12151055/b06b9ae19460f82a282142f5e53297db/http://i.piccy.info/a3c/2018-03-14-10-50/i9-12151055/500x253-r
И еще вопрос, как я узнаю айдишку строки ?
Автор: SyntaxError Mar 14 2018, 12:57
(mzk @ Mar 14 2018, 12:51)

Да, совершенно верно
Получается, айдишки полей инпута в каждой строке должны быть одинаковыми ?
Выделил красными прямоугольниками:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
http://piccy.info/view3/12151055/b06b9ae19460f82a282142f5e53297db/http://i.piccy.info/a3c/2018-03-14-10-50/i9-12151055/500x253-r
И еще вопрос, как я узнаю айдишку строки ?
Для инпутов вместо id используй name. id не может повторятся больше одного раза на странице. Также, name берется как ключ при вызове метода serialize или serializeArray.
Когда ты рендеришь таблицу ты можешь указать id для каждой строки:
<table>
<tr id="1"> ... </tr>
<tr id="2"> ... </tr>
<tr id="3"> ... </tr>
...
<tr id="100"> ... </tr>
</table>
Автор: mzk Mar 14 2018, 13:15
С id строки понял, добавил, рисуется.
Но как мне использовать эту id на стороне update_mysql.php - не понятно. Или тут оно и не нужно?
Как ключи поиска в бд для апдейта я использую только это:
$lmorder = $_POST['lmorder'];
$lmstore = $_POST['lmstore'];
и делаю апдейт из этого инпута:
$sel = $_POST['sel'];
И еще, если
id не может повторятся, то
name может ?
Автор: SyntaxError Mar 14 2018, 14:16
(mzk @ Mar 14 2018, 13:15)

С id строки понял, добавил, рисуется.
Но как мне использовать эту id на стороне update_mysql.php - не понятно. Или тут оно и не нужно?
Как ключи поиска в бд для апдейта я использую только это:
$lmorder = $_POST['lmorder'];
$lmstore = $_POST['lmstore'];
и делаю апдейт из этого инпута:
$sel = $_POST['sel'];
И еще, если
id не может повторятся, то
name может ?
Тогда id для строки тебе не нужен, т.к. у тебя уже все есть.
На бэкенде ты получаешь так:
$lmorder = $_POST['lmorder'];
$lmstore = $_POST['lmstore'];
$sel = $_POST['sel'];
И дальше делаешь апдейт базы, где ключи у тебя lmorder и lmstore.
Каждый раз как ты будешь кликать на кнопку конкретной строки таблицы ты будешь передавать в update_mysql.php новые значения.
Да, name может повторяться.
Автор: mzk Mar 14 2018, 14:48
Что-то не едут лыжи, где-то напартачил...
Вот кусок кода выводом инпутов и кнопок
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
if ($mysql_resut->num_rows > 0) {
while($row = $mysql_resut->fetch_assoc()) {
?>
<input type="text" readonly="readonly" value="<?php echo $row['input_ldap'];?>"><br>
<input name ="sel" type="text" value="<?php if ($row['manual_status']) {echo $row['manual_status'];} ?>" placeholder="Статус">
<input name ="lmorder" type="hidden" readonly="readonly" value="<?php echo $array['tra_id'];?>"> <br>
<input name ="lmstore" type="hidden" readonly="readonly" value="<?php echo $array['tra_mag_id'];?>">
<button id="send_change<?php echo $i;?>" style="border-radius: 5px;" class="button">Оновити статус</button>
<?php
}
} else {
//echo "0 results";
?>
<form id="update_mysql" onsubmit="return false">
<input id="lmorder" type="hidden" readonly="readonly" value="<?php echo $array['tra_id'];?>">
<input id="lmstore" type="hidden" readonly="readonly" value="<?php echo $array['tra_mag_id'];?>">
<input id="ldap" type="text" placeholder="LDAP...">
<button id="send" style="border-radius: 5px;" class="button">Зібрати</button>
</form>
В цикле while я убрал все айдишки и поставил атрибут name
После того, как таблица отрисовывается, я нажимаю на кнопку "оновити статус" но ничего не происходит. Не отрабатывает скрипт:
$('.table-class').on('click', '.button-class', function( event ) {
var $button = $(event.target);
var $row = $button.closest('.table-row-class');
var $elements = $row.find('input');
var data = $elements.serialize();
$.ajax({
type : 'POST',
data : data,
url : "update_mysql.php",
success : function(result){
alert(result);
$elements.val('');
}
});
});
Есть подозрение на эти строки:
var data = $elements.serialize(); $.ajax({
type : 'POST',
data : data,Прошу прощения, но совсем не силен в js
Автор: SyntaxError Mar 14 2018, 15:33
Классы в JS скрипте поменяй на свои.
Автор: mzk Mar 14 2018, 15:46
(SyntaxError @ Mar 14 2018, 15:33)

Классы в JS скрипте поменяй на свои.
Помоги, пожалуйста, я подставил как у меня здесь:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
table.blueTable {
font-family: Verdana, Geneva, sans-serif;
border: 1px solid #1C6EA4;
background-color: #FFFFFF;
text-align: left;
border-collapse: collapse;
}
table.blueTable td, table.blueTable th {
border: 1px solid #AAAAAA;
padding: 3px 7px;
}
table.blueTable tbody td {
font-size: 13px;
color: #000000;
}
table.blueTable thead {
background: #02B01B;
background: -moz-linear-gradient(top, #41c454 0%, #1bb831 66%, #02B01B 100%);
background: -webkit-linear-gradient(top, #41c454 0%, #1bb831 66%, #02B01B 100%);
background: linear-gradient(to bottom, #41c454 0%, #1bb831 66%, #02B01B 100%);
border-bottom: 1px solid #000000;
}
table.blueTable thead th {
font-size: 14px;
font-weight: normal;
color: #FFFFFF;
text-align: left;
border-left: 1px solid #000000;
}
table.blueTable thead th:first-child {
border-left: none;
border-radius:7px 0 0 0px;
}
table th:last-child{
border-radius:0 7px 0px 0;
}
.button {
background-color: #4CAF50;
border: none;
color: white;
padding: 8px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
Вышло вот что, но все равно не работает:
$('.blueTable').on('click', '.button', function( event ) {
var $button = $(event.target);
var $row = $button.closest('.table-row-class');
var $elements = $row.find('input');
var data = $elements.serialize();
$.ajax({
type : 'POST',
data : data,
url : "update_mysql.php",
success : function(result){
alert(result);
$elements.val('');
}
});
});
Автор: SyntaxError Mar 14 2018, 16:00
Вместо .table-row-class поставь класс с <TR>, или просто укажи 'tr'.
А вообще можешь использовать console.log() для дебага JS в браузере и смотреть что у тебе приходит в переменную.
Автор: mzk Mar 14 2018, 17:02
Испавил, для теста поставил console.log статический, но уведомление не прилетает.. Видать не доходит дело до этого. Где я напартачил?
$('.blueTable').on('click', '.button', function( event ) {
var $button = $(event.target);
var $row = $button.closest('tr');
var $elements = $row.find('input');
console.log('haha');
var data = $elements.serialize();
$.ajax({
type : 'POST',
data : data,
url : "update_mysql.php",
success : function(result){
alert(result);
$elements.val('');
}
});
});
Автор: SyntaxError Mar 14 2018, 17:17
(mzk @ Mar 14 2018, 17:02)

Испавил, для теста поставил console.log статический, но уведомление не прилетает.. Видать не доходит дело до этого. Где я напартачил?
$('.blueTable').on('click', '.button', function( event ) {
var $button = $(event.target);
var $row = $button.closest('tr');
var $elements = $row.find('input');
console.log('haha');
var data = $elements.serialize();
$.ajax({
type : 'POST',
data : data,
url : "update_mysql.php",
success : function(result){
alert(result);
$elements.val('');
}
});
});
скинь кусок html своей таблицы. а то вслепую тяжело сказать.
Автор: mzk Mar 14 2018, 17:53
Скопировал элемент из гугл хрома:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<table class="blueTable">
<thead>
<tr>
<th>№</th>
<th>Магазин</th>
<th>Замовлення</th>
<th>Дата замовлення</th>
<th>Час</th>
<th>Статус Замовлення</th>
<th>Статус Оплати</th>
<th>Дата останньої зміни</th>
<th>Час</th>
<th>Сумма замовлення</th>
<th>Прізвище</th>
<th>Ім'я</th>
<th>Телефон</th>
</tr>
</thead>
<tbody>
<tr id="1" bgcolor="#CEFFB4">
<td>1</td>
<td>2</td>
<td>361303</td>
<td>2018-03-12</td>
<td>10:20:20</td>
<td>100</td>
<td>100</td>
<td>2018-03-14</td>
<td>01:32:52</td>
<td>100</td>
<td>100</td>
<td>100</td>
<td>100</td>
<td bgcolor="#fff">
<input type="text" readonly="readonly" value="12000907"><br>
<input name="sel" type="text" value="" placeholder="Статус">
<input name="lmorder" type="hidden" readonly="readonly" value="361303"> <br>
<input name="lmstore" type="hidden" readonly="readonly" value="2">
<button id="send_change" style="border-radius: 5px;" class="button">Оновити статус</button>
</td>
</tr>
<tr id="2" bgcolor="#CEFFB4">
<td>2</td>
<td>2</td>
<td>361331</td>
<td>2018-03-12</td>
<td>12:30:09</td>
<td>200</td>
<td>200</td>
<td>200</td>
<td>200</td>
<td>200</td>
<td>200</td>
<td>200</td>
<td>200</td>
<td bgcolor="#fff">
<form id="update_mysql" onsubmit="return false">
<input id="lmorder" type="hidden" readonly="readonly" value="361331">
<input id="lmstore" type="hidden" readonly="readonly" value="2">
<input id="ldap" type="text" placeholder="LDAP...">
<button id="send" style="border-radius: 5px;" class="button">Зібрати</button>
</form>
</td>
</tr>
<tr id="3" bgcolor="#CEFFB4">
<td>3</td>
<td>2</td>
<td>361346</td>
<td>2018-03-12</td>
<td>13:14:49</td>
<td>300</td>
<td>300</td>
<td>2018-03-14</td>
<td>01:32:54</td>
<td>1492.7</td>
<td>300</td>
<td>300</td>
<td>300</td>
<td bgcolor="#fff">
<form id="update_mysql" onsubmit="return false">
<input id="lmorder" type="hidden" readonly="readonly" value="361346">
<input id="lmstore" type="hidden" readonly="readonly" value="2">
<input id="ldap" type="text" placeholder="LDAP...">
<button id="send" style="border-radius: 5px;" class="button">Зібрати</button>
</form>
</td>
</tr>
<tr id="4" bgcolor="#FFEAE6">
<td>4</td>
<td>2</td>
<td>361350</td>
<td>2018-03-12</td>
<td>13:32:59</td>
<td>400</td>
<td>400</td>
<td>2018-03-13</td>
<td>11:38:50</td>
<td>0</td>
<td>400</td>
<td>400</td>
<td></td>
<td bgcolor="#fff">
<form id="update_mysql" onsubmit="return false">
<input id="lmorder" type="hidden" readonly="readonly" value="361350">
<input id="lmstore" type="hidden" readonly="readonly" value="2">
<input id="ldap" type="text" placeholder="LDAP...">
<button id="send" style="border-radius: 5px;" class="button">Зібрати</button>
</form>
</td>
</tr>
<tr id="5" bgcolor="#CEFFB4">
<td>5</td>
<td>2</td>
<td>361394</td>
<td>2018-03-12</td>
<td>16:49:54</td>
<td>500</td>
<td>500</td>
<td>2018-03-12</td>
<td>16:53:08</td>
<td>500</td>
<td>500</td>
<td>500</td>
<td>500</td>
<td bgcolor="#fff">
<form id="update_mysql" onsubmit="return false">
<input id="lmorder" type="hidden" readonly="readonly" value="361394">
<input id="lmstore" type="hidden" readonly="readonly" value="2">
<input id="ldap" type="text" placeholder="LDAP...">
<button id="send" style="border-radius: 5px;" class="button">Зібрати</button>
</form>
</td>
</tr>
<tr id="6" bgcolor="#FFEAE6">
<td>6</td>
<td>2</td>
<td>361446</td>
<td>2018-03-13</td>
<td>09:15:05</td>
<td>600</td>
<td>600</td>
<td>2018-03-14</td>
<td>01:32:59</td>
<td>600</td>
<td>600</td>
<td>600</td>
<td>600</td>
<td bgcolor="#fff">
<form id="update_mysql" onsubmit="return false">
<input id="lmorder" type="hidden" readonly="readonly" value="361446">
<input id="lmstore" type="hidden" readonly="readonly" value="2">
<input id="ldap" type="text" placeholder="LDAP...">
<button id="send" style="border-radius: 5px;" class="button">Зібрати</button>
</form>
</td>
</tr>
</tbody>
</table>
кнопка "Оновити статус" рисуется только есть в базе mysql есть значение статуса для этого заказа.
в другом случае - рисуется кнопка "зібрати"
Автор: mzk Mar 14 2018, 22:24
Хух, ребята.
Методом тыка и гугла, я решил вопрос. Проблема была вот здесь:
Было:
$('.blueTable').on('click', '.button', function( event ) {
Стало:
$(document).on('click', '.button', function( event ) {
Так же, я сделал еще 2 отдельных класса для кнопки "Оновити статус" и "Зібрати" чтобы хендлить запросы точно так же.
Апдейты запустились

Осталось разобраться только в одном:
Почему русские буквы не уходят из этого инпута в БД ?
Алерты jquery возвращает с русскими буквами, а когда проверяю таблицу, то апдейт не проходит.
Через сам mysql workbench апдейты работают, таблицы с кодировкой uft8_general_ci
html и рhp тоже с кодировкой uft8[s]
Всем большое спасибо!
Автор: mzk Jun 19 2018, 18:22
Камрады, каким образом с помощью PHP можно разделить следующую траблицу?
http://piccy.info/view3/12425995/8d4108bb5af674364cb8ab82740a7a06/http://i.piccy.info/a3c/2018-06-19-16-19/i9-12425995/467x222-r
Делаю селект из БД за последние N-минут и получаю результат, как на скрине.
Уникальное значение - первый столбик
Нужно условно "загнать" эти четыре разные части в переменные\массивы. Как?
Спасибо
Автор: YaAllex Jun 20 2018, 20:54
(mzk @ Jun 19 2018, 19:22)

Делаю селект из БД за последние N-минут и получаю результат, как на скрине.
Результат селекта в виде чего получаете(массив, массив объектов)?
Автор: mzk Jul 27 2018, 17:57
Парни, застрял... Не могу сообразить как мне получить инфу со всех массивов внутри массива...
Как пример, кусок массива:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
Array
(
[0] => Array
(
[0] => Array
(
[tra_mag_id] => 1
[tra_id] => 1037214
[tra_eta_id] => 90
[tra_eta_pay_id] => 1
[order_status] => Анульований
[internet_status] => В процесі - Помилка
[tra_date_creation] => 2018-07-27 08:31:22.164+03
[date_creation] => 2018-07-27 08:31:22
[date] => 2018-07-27
[time] => 08:31:22
[datelast] => 2018-07-27
[timelast] => 08:32:25
)
[1] => Array
(
[tra_mag_id] => 1
[tra_id] => 1037254
[tra_eta_id] => 10
[tra_eta_pay_id] => 5
[order_status] => Не найдійшло на кассу
[internet_status] => Оффлайн замовлення
[tra_date_creation] => 2018-07-27 11:06:40.364+03
[date_creation] => 2018-07-27 11:06:40
[date] => 2018-07-27
[time] => 11:06:40
[datelast] => 2018-07-27
[timelast] => 11:06:40
)
[2] => Array
(
[tra_mag_id] => 1
[tra_id] => 1037266
[tra_eta_id] => 20
[tra_eta_pay_id] => 2
[order_status] => Надійшло на кассу
[internet_status] => Оплата ОК
[tra_date_creation] => 2018-07-27 11:47:28.607+03
[date_creation] => 2018-07-27 11:47:28
[date] => 2018-07-27
[time] => 11:47:28
[datelast] => 2018-07-27
[timelast] => 12:28:06
)
[3] => Array
(
[tra_mag_id] => 1
[tra_id] => 1037274
[tra_eta_id] => 90
[tra_eta_pay_id] => 4
[order_status] => Анульований
[internet_status] => Тайм-аут вичерпано
[tra_date_creation] => 2018-07-27 12:11:47.264+03
[date_creation] => 2018-07-27 12:11:47
[date] => 2018-07-27
[time] => 12:11:47
[datelast] => 2018-07-27
[timelast] => 12:26:58
)
)
[1] => Array
(
[0] => Array
(
[tra_mag_id] => 2
[tra_id] => 388625
[tra_eta_id] => 20
[tra_eta_pay_id] => 5
[order_status] => Надійшло на кассу
[internet_status] => Оффлайн замовлення
[tra_date_creation] => 2018-07-27 08:25:52.27+03
[date_creation] => 2018-07-27 08:25:52
[date] => 2018-07-27
[time] => 08:25:52
[datelast] => 2018-07-27
[timelast] => 10:59:44
)
[1] => Array
(
[tra_mag_id] => 2
[tra_id] => 388638
[tra_eta_id] => 90
[tra_eta_pay_id] => 1
[order_status] => Анульований
[internet_status] => В процесі - Помилка
[tra_date_creation] => 2018-07-27 09:34:33.826+03
[date_creation] => 2018-07-27 09:34:33
[date] => 2018-07-27
[time] => 09:34:33
[datelast] => 2018-07-27
[timelast] => 09:39:37
)
[2] => Array
(
[tra_mag_id] => 2
[tra_id] => 388639
[tra_eta_id] => 20
[tra_eta_pay_id] => 2
[order_status] => Надійшло на кассу
[internet_status] => Оплата ОК
[tra_date_creation] => 2018-07-27 09:40:27.315+03
[date_creation] => 2018-07-27 09:40:27
[date] => 2018-07-27
[time] => 09:40:27
[datelast] => 2018-07-27
[timelast] => 09:41:46
)
[3] => Array
(
[tra_mag_id] => 2
[tra_id] => 388652
[tra_eta_id] => 90
[tra_eta_pay_id] => 4
[order_status] => Анульований
[internet_status] => Тайм-аут вичерпано
[tra_date_creation] => 2018-07-27 10:22:31.276+03
[date_creation] => 2018-07-27 10:22:31
[date] => 2018-07-27
[time] => 10:22:31
[datelast] => 2018-07-27
[timelast] => 10:37:57
)
[4] => Array
(
[tra_mag_id] => 2
[tra_id] => 388658
[tra_eta_id] => 90
[tra_eta_pay_id] => 4
[order_status] => Анульований
[internet_status] => Тайм-аут вичерпано
[tra_date_creation] => 2018-07-27 10:40:58.465+03
[date_creation] => 2018-07-27 10:40:58
[date] => 2018-07-27
[time] => 10:40:58
[datelast] => 2018-07-27
[timelast] => 10:55:57
)
)
[2] => Array
(
[0] => Array
(
[tra_mag_id] => 3
[tra_id] => 556432
[tra_eta_id] => 75
[tra_eta_pay_id] => 5
[order_status] => Сплачений
[internet_status] => Оффлайн замовлення
[tra_date_creation] => 2018-07-27 08:19:01.185+03
[date_creation] => 2018-07-27 08:19:01
[date] => 2018-07-27
[time] => 08:19:01
[datelast] => 2018-07-27
[timelast] => 11:43:32
)
[1] => Array
(
[tra_mag_id] => 3
[tra_id] => 556437
[tra_eta_id] => 75
[tra_eta_pay_id] => 5
[order_status] => Сплачений
[internet_status] => Оффлайн замовлення
[tra_date_creation] => 2018-07-27 08:38:01.03+03
[date_creation] => 2018-07-27 08:38:01
[date] => 2018-07-27
[time] => 08:38:01
[datelast] => 2018-07-27
[timelast] => 09:59:47
)
[2] => Array
(
[tra_mag_id] => 3
[tra_id] => 556455
[tra_eta_id] => 20
[tra_eta_pay_id] => 2
[order_status] => Надійшло на кассу
[internet_status] => Оплата ОК
[tra_date_creation] => 2018-07-27 09:19:14.734+03
[date_creation] => 2018-07-27 09:19:14
[date] => 2018-07-27
[time] => 09:19:14
[datelast] => 2018-07-27
[timelast] => 09:21:35
)
)
[3] => Array
(
[0] => Array
(
[tra_mag_id] => 4
[tra_id] => 58964
[tra_eta_id] => 90
[tra_eta_pay_id] => 1
[order_status] => Анульований
[internet_status] => В процесі - Помилка
[tra_date_creation] => 2018-07-27 10:19:58.77+03
[date_creation] => 2018-07-27 10:19:58
[date] => 2018-07-27
[time] => 10:19:58
[datelast] => 2018-07-27
[timelast] => 10:28:17
)
[1] => Array
(
[tra_mag_id] => 4
[tra_id] => 58971
[tra_eta_id] => 10
[tra_eta_pay_id] => 5
[order_status] => Не найдійшло на кассу
[internet_status] => Оффлайн замовлення
[tra_date_creation] => 2018-07-27 10:52:06.68+03
[date_creation] => 2018-07-27 10:52:06
[date] => 2018-07-27
[time] => 10:52:06
[datelast] => 2018-07-27
[timelast] => 10:52:06
)
[2] => Array
(
[tra_mag_id] => 4
[tra_id] => 58984
[tra_eta_id] => 90
[tra_eta_pay_id] => 4
[order_status] => Анульований
[internet_status] => Тайм-аут вичерпано
[tra_date_creation] => 2018-07-27 11:20:44.152+03
[date_creation] => 2018-07-27 11:20:44
[date] => 2018-07-27
[time] => 11:20:44
[datelast] => 2018-07-27
[timelast] => 11:35:58
)
)
)
Пробовал вот так:
$all_orders - массив под спойлером
foreach ($all_orders as $lmo) {
echo $lmo[0]['tra_id']."<br>";
}
На выходе:
1037214
388625
556432
58964
Получаю только самые первые значения. Это я понимаю, а как достать все остальные из каждого вложенного массива? Цикл в цикле? Как обыграть?
Автор: mzk Jul 27 2018, 18:25
(mzk @ Jul 27 2018, 18:57)

Парни, застрял... Не могу сообразить как мне получить инфу со всех массивов внутри массива...
Как пример, кусок массива:
...
Получаю только самые первые значения. Это я понимаю, а как достать все остальные из каждого вложенного массива? Цикл в цикле? Как обыграть?

Чашка кофе помогла

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
foreach ($all_orders as $lmo) {
foreach($lmo as $orka) {
echo $orka['tra_id']."<br>";
}
}
Но задумка не очень помогла...
Как можно из этой всей кучи массивов сделать один массив средствами php ?
Нужно сортировать вывод инфы...
Автор: vas1 Jul 28 2018, 19:52
Типа такого что-то
$ordersSum = [];
foreach ($all_orders as $orders) {
$ordersSum = array_merge($ordersSum, $orders);
}
Автор: mzk Nov 12 2018, 18:58
Всем привет,
Ребята, возникла необходимость пулить инфу по SOAP веб-сервисам.
Есть вот такой xml, который отлично отрабатывает в SoapUI.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<soapenv:Envelope xmlns:soapenv="http://xxx/" xmlns:v4="http://xxx/">
<soapenv:Header/>
<soapenv:Body>
<v4:creater>
<arg0>
<addressDTO>
<addressInformationIn>
<city>КИЇВ</city>
<countryCode>UA</countryCode>
<goneaway>false</goneaway>
<line1>test</line1>
<mainAddress>true</mainAddress>
<postalCode>12345</postalCode>
<addressTypes>
<code>1</code>
</addressTypes>
</addressInformationIn>
</addressDTO>
<contacts>
<customerDTO>
<title>1</title>
<firstName>userone</firstName>
<name>userone</name>
<managementEntityNumber>1</managementEntityNumber>
<maritalStatus>1</maritalStatus>
<language>UK</language>
<maincontact>true</maincontact>
<customerStatus>0</customerStatus>
</customerDTO>
<communications>
<communications> <communicationScopes>
<code>1</code>
</communicationScopes>
<value>0671234567</value>
<type>1</type>
<phoneType>2</phoneType>
<order>0</order>
<main>true</main>
</communications>
<communications> <value>
[email protected]</value>
<type>3</type>
<order>0</order>
<main>true</main>
</communications> </communications>
</contacts>
<history>
<operatorIdentifier>121212</operatorIdentifier>
<operatorFullName>name surname</operatorFullName>
<applicationCode>1</applicationCode>
<entityNumber>1</entityNumber>
<buNumber>44</buNumber>
<operatorIdentifierType>db</operatorIdentifierType>
</history>
</arg0>
</v4:creater>
</soapenv:Body>
</soapenv:Envelope>
Вопрос: каким образом мне сделать такой массив в php, чтобы он съел две "communications" вкладки ?
Само колл делаю вот так:
$soap = new SoapClient($wsdl, $options);
$data = $soap->creater($params);
где:
$params - массив из xml выше
Автор: phpkiev Nov 12 2018, 19:20
Это чей-то сторонний сервис или ваш? Вообще-то в структуре есть корневой элемент communications и внутри него расположены подэлементы. Хорошо видно, если красиво расставить теги 
<communications>
<communications>
<communicationScopes>
<code>1</code>
</communicationScopes>
<value>0671234567</value>
<type>1</type>
<phoneType>2</phoneType>
<order>0</order>
<main>true</main>
</communications>
<communications>
<value>
[email protected]</value>
<type>3</type>
<order>0</order>
<main>true</main>
</communications>
</communications>
Обычная практика, хоть и странно, что подэлементы имеют такой-же тег, как и родительский. Я бы назвал родителя
communications, а уже дочерние элементы иначе, ну например
communication. Но в принципе, с известной долей желания, можно и такую структура разобрать, при этом загнать вложенные communications в массив.
типа
$communications[] = [
'communicationScopes' => [
'code' => 1
],
'value' => 0671234567,
'type' => 1,
'phoneType' => 2,
'order' => 0,
'main' => true
];
$communications[] = [
'value' => '
[email protected]',
'type' => 3,
'order' => 0,
'main' => true
];
ну и родитель
$params['communications'] = communications;
Автор: mzk Nov 13 2018, 9:52
Странно, да... но изменять ничего не могу, к сожалению.
Схема тоже не сработает - применится только последний массив $communications[]
Вот сейчас у меня для одного выглядит так:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
$params = array (
'arg0' =>
array(
'addressDTO' => array (
'addressInformationIn' =>
array (
'city' => 'КИЇВ',
'countryCode' => 'UA',
'goneaway' => false,
'line1' => 'test',
'mainAddress' => true,
'postalCode' => '12345',
'addressTypes' =>
array (
'code' => '1'
),
),
),
'contacts' => array (
'communications' => array (
'communications' => array (
'main' => true,
'order' => '0',
'phoneType' => '2',
'type' => '1',
'value' => '0671234567',
'communicationScopes' => array (
'code' => '1'
)
)
),
'customerDTO' =>
array (
'customerStatus' => '0',
'title' => '1',
'firstName' => $name,
'name' => $surname,
'language' => 'UK',
'mainContact' => 'true',
'managementEntityNumber' => '4'
),
),
'history' =>
array (
'operatorIdentifier' => '121212',
'operatorFullName' => 'test',
'applicationCode' => '1',
'entityNumber' => '1',
'buNumber' => '44',
'operatorIdentifierType' => 'db'
),
)
);
Автор: phpkiev Nov 13 2018, 13:54
(mzk @ Nov 13 2018, 9:52)

...
Схема тоже не сработает - применится только последний массив $communications[]
...
Не очень понял, что же вам надо и где ваш код, если ХМЛ менять нельзя, сервис менять нельзя

Вы пишете сервер или клиента? Метод creater() у сервиса - принимает именно массив? По идее в чистом виде 1-в-1 такую структуру в массиве не получится построить, т.к. ключи совпадают и они будут перетирать друг-друга. Только используя вложенные массивы. А вот сгенерировать валидный ХМЛ можно любой, и как он будет обрабатывать вложенные массивы - зависит только от реализации парсера\кодировщика.
Есть вот такой xml, который отлично отрабатывает в SoapUI.
оно и не удивительно, ведь эта тулза принимает на вход ХМЛ, а он валидный и его можно парсить потегово - никаких проблем. А в вышем случае вопрос к методу creater(). Сможет ли он корректно обработать такой массив:
$item = [
'communicationScopes' => [
'code' => 1
],
'value' => 0671234567,
'type' => 1,
'phoneType' => 2,
'order' => 0,
'main' => true
];
$communications[] = ['communications'=>$item];
$item = [
'value' => '
[email protected]',
'type' => 3,
'order' => 0,
'main' => true
];
$communications[] = ['communications'=>$item];
$params['communications'] = $communications;
А возможно там есть параметр или метод, который будет принимать сразу ХМЛ на входе и сам всё разбирать?
Автор: mzk Nov 14 2018, 9:24
Попробовал этот вариант... По-видимому, сами веб-сервисы не понимают такой формат:
[communications] => Array
(
[0] => Array
(
[communications] => Array
(
[communicationScopes] => Array
(
[code] => 1
)
[value] => 0671234567
[type] => 1
[phoneType] => 2
[order] => 0
[main] => true
[any] =>
)
)
[1] => Array
(
[communications] => Array
(
[value] =>
[email protected] [type] => 3
[order] => 0
[main] => true
[any] =>
)
)
)
А что-то там менять или допилить возможности нет
Автор: phpkiev Nov 14 2018, 13:55
(mzk @ Nov 14 2018, 9:24)

Попробовал этот вариант... По-видимому, сами веб-сервисы не понимают такой формат
Ну тогда писать в саппорт сервиса и спрашивать
Автор: mzk Jun 15 2019, 21:24
Ребята, то ли я че-то попутал, то ли лыжи не едут..
Есть вот такой массив:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
CODE Format
$order_array = $_POST;
print_r($order_array);
--------------------------------------------------
Array
(
[str_line] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
[str_virt_store] => Array
(
[0] => 3
[1] => 3
[2] => 4
[3] => 4
[4] => 4
)
[str_store] => Array
(
[0] => 3
[1] => 3
[2] => 3
[3] => 3
[4] => 3
)
[str_order] => Array
(
[0] => 663043
[1] => 663043
[2] => 663043
[3] => 663043
[4] => 663043
)
[str_lmcode] => Array
(
[0] => 10107545
[1] => 11611313
[2] => 11891971
[3] => 10917872
[4] => 10917865
)
[str_qty] => Array
(
[0] => 1
[1] => 4
[2] => 4
[3] => 5
[4] => 6
)
)
Пытаюсь вытащить данные из его с помощью
foreach():CODE Format
$n=0;
foreach ($order_array as $key=>$value) {
echo $key." - ". $value[$n]."<br>";
$n++;
}
На выходе получаю только последние значения из каждого внутреннего массива...
CODE Format
-----------------------------------------
str_line - 1
str_virt_store - 3
str_store - 3
str_order - 663043
str_lmcode - 10917865
str_qty - 6
-----------------------------------------
А хочется все получить. Где туплю?
Спасибо!
Автор: YaAllex Jun 15 2019, 22:14
У вас при каждой итерации выбирается : 1 элемент из массива 1, из 2-го массива 2-й элемент, из 3-го массива 3-й элемент. Вы ошибочно используете n++. По сути значения массивов у вас при каждой итерации хранятся в $value (тут вы правы), но чтобы их распарсить перебирайте массив $value полностью, а не указывая конкретный элемент. Можно второй foreach кинуть на $value, либо другим способом - while,for etc...
CODE Format
foreach ($order_array as $key=>$value) {
echo $key." - ";
foreach ($value as $some_value) {
echo $some_value; }
}
Автор: mzk Jun 16 2019, 11:11
Спасибо за подсказку, с for все получилось
Автор: YaAllex Jun 16 2019, 11:35
(mzk @ Jun 16 2019, 12:11)

Спасибо за подсказку, с
for все получилось

интересно было бы глянуть код.
Автор: mzk Jun 16 2019, 12:06
(YaAllex @ Jun 16 2019, 12:35)

интересно было бы глянуть код.

Как-то так...
CODE Format
$size = sizeof($order_array['str_line']);
for ($i = 0; $i < $size; $i++) {
//echo $order_array['str_line'][$i]." line $i <br>";
echo
$order_array['str_ldap'][$i]. " - ".
$order_array['str_line'][$i]. " - ".
$order_array['str_virt_store'][$i]. " - ".
$order_array['str_mgmt_store'][$i]. " - ".
$order_array['str_store'][$i]. " - ".
$order_array['str_order'][$i]. " - ".
$order_array['str_lmcode'][$i]. " - ".
$order_array['str_qty'][$i]. "<br>";
}
Считаю
str_line потому, что он является таким себе ключом в массиве (количество линий из таблицы)
Автор: YaAllex Jun 16 2019, 13:08
Немного громозко, но раз устраивает, то ладно )
ПС. Меня код интересовал только с точки зрения - "а что же хотели получить", тк формулировка вопроса была расплывчатой. xD Как всегда в таких ситуациях - вопрошающий думал одно, отвечающий другое).
Автор: mzk Jul 3 2019, 14:01
Друзья, я опять к вам...
Встретился с ситуацией, когда curl возвращает данные, не совсем понятным образом
Например, делаю колл с параметрами на wsdl:
CODE Format
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://xxxxxx.vices.wsdl",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => "$xml",
CURLOPT_HTTPHEADER => array(
"Accept: text/xml",
"Content-Type: text/xml; charset=utf-8",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
Получаю ответ в $response:
CODE Format
print_r($response);
Выводит эти данные:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
568282900455750Змінити на реальну вулицю12345КИЇВUAtruefalse120031178612000907Name Surname1323LDAP120031178611112000907Name Surname1323LDAP120031178611173918112000907Name Surname1323LDAPt4-І-023-2019-07-03-1t4-П-023-2019-07-03-135682821200311786trueUK012000907Name Surname1323LDAP13137020671234567120
true
120031178612000907Name Surname1323LDAP12000907Name Surname1323LDAP
CODE Format
file_put_contents('test.txt',$response,FILE_APPEND);
Пишет нормальный хмл в файл:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:createGlobalNaturalCustomerResponse xmlns:ns2="http://v4.xxxxxx.xxxxxxx.com/">
<return>
<householdId>568282</householdId>
<addressDTO>
<addressInformationIn>
<identifier>900455750</identifier>
<line1>Змінити на реальну вулицю</line1>
<postalCode>12345</postalCode>
<city>КИЇВ</city>
<countryCode>UA</countryCode>
<mainAddress>true</mainAddress>
<goneaway>false</goneaway>
</addressInformationIn>
<customerNumber>1200311786</customerNumber>
<historyInput>
<operatorIdentifier>12000907</operatorIdentifier>
<operatorFullName>Name Surname</operatorFullName>
<applicationCode>1</applicationCode>
<entityNumber>3</entityNumber>
<buNumber>23</buNumber>
<operatorIdentifierType>LDAP</operatorIdentifierType>
</historyInput>
</addressDTO>
<contacts>
<classifications>
<customerNumber>1200311786</customerNumber>
<classifications>
<value>11</value>
<typeCode>1</typeCode>
</classifications>
<historyInputDTO>
<operatorIdentifier>12000907</operatorIdentifier>
<operatorFullName>Name Surname</operatorFullName>
<applicationCode>1</applicationCode>
<entityNumber>3</entityNumber>
<buNumber>23</buNumber>
<operatorIdentifierType>LDAP</operatorIdentifierType>
</historyInputDTO>
</classifications>
<leisures>
<customerNumber>1200311786</customerNumber>
<leisures>
<typeCode>11</typeCode>
<levelCode>1</levelCode>
</leisures>
<leisures>
<typeCode>7</typeCode>
<levelCode>3</levelCode>
</leisures>
<leisures>
<typeCode>9</typeCode>
<levelCode>1</levelCode>
</leisures>
<leisures>
<typeCode>8</typeCode>
<levelCode>1</levelCode>
</leisures>
<history>
<operatorIdentifier>12000907</operatorIdentifier>
<operatorFullName>Name Surname</operatorFullName>
<applicationCode>1</applicationCode>
<entityNumber>3</entityNumber>
<buNumber>23</buNumber>
<operatorIdentifierType>LDAP</operatorIdentifierType>
</history>
</leisures>
<customerDTO>
<title>1</title>
<firstName>t4-І-023-2019-07-03-1</firstName>
<name>t4-П-023-2019-07-03-1</name>
<managementEntityNumber>3</managementEntityNumber>
<householdIdentifier>568282</householdIdentifier>
<customerNumber>1200311786</customerNumber>
<mainContact>true</mainContact>
<language>UK</language>
<customerStatus>0</customerStatus>
<history>
<operatorIdentifier>12000907</operatorIdentifier>
<operatorFullName>Name Surname</operatorFullName>
<applicationCode>1</applicationCode>
<entityNumber>3</entityNumber>
<buNumber>23</buNumber>
<operatorIdentifierType>LDAP</operatorIdentifierType>
</history>
</customerDTO>
<communications>
<communications>
<communicationScopes>
<code>1</code>
</communicationScopes>
<identifier>313702</identifier>
<value>0671234567</value>
<type>1</type>
<phoneType>2</phoneType>
<order>0</order>
<main>true</main>
</communications>
<customerNumber>1200311786</customerNumber>
<historyInputDTO>
<operatorIdentifier>12000907</operatorIdentifier>
<operatorFullName>Name Surname</operatorFullName>
<applicationCode>1</applicationCode>
<entityNumber>3</entityNumber>
<buNumber>23</buNumber>
<operatorIdentifierType>LDAP</operatorIdentifierType>
</historyInputDTO>
</communications>
</contacts>
<history>
<operatorIdentifier>12000907</operatorIdentifier>
<operatorFullName>Name Surname</operatorFullName>
<applicationCode>1</applicationCode>
<entityNumber>3</entityNumber>
<buNumber>23</buNumber>
<operatorIdentifierType>LDAP</operatorIdentifierType>
</history>
</return>
</ns2:createGlobalNaturalCustomerResponse>
</soap:Body>
</soap:Envelope>
Пробовал так:
CODE Format
$xml_simple = simplexml_load_string($response);
$json = json_encode($xml_simple);
$arr = json_decode($json,true);
Внутри $arr - пусто..
Никак не могу понять, как правильно"поймать" и конвертировать $response в обычный массив данных
Автор: YaAllex Jul 4 2019, 7:06
Хм... странная любовь у вас к массивам.
CODE Format
CURLOPT_POSTFIELDS => "$xml"
вы уверены в этой опции? на сколько я помню, там должен стоять urlencoded данные, либо массив данных, которые вы передаете с $_POST запросом
$responce - это
строка, с тем, что вам curl отдал, в результате запроса. Из того, что я вижу -
CODE Format
$xml_simple = simplexml_load_string($response);
скорее всего возвращает пустой объект simplexml (дальнейшие действия бессмысленны)
Попробуйте распарсить строчку с $responce при помощи ф-ций для работы с строками ( раз в файл ложится с переводом строк, то скорее всего там они проставлены):
CODE Format
$my_super_array = explode(PHP_EOL, $responce);
либо через символы перевода строки
CODE Format
$my_super_array = explode('\n', $responce);
Автор: mzk Jul 4 2019, 8:09
Это не у меня странная любовь, это приходится работать с тем, что есть
Решил вопрос следующим образом:
CODE Format
$catch = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $response);
$xml_create = new SimpleXMLElement($catch);
$body = $xml_create->xpath('//soapBody')[0];
$xml_response_to_array = json_decode(json_encode((array)$body), TRUE);
print_r($xml_response_to_array);
Автор: СОУП Aug 20 2019, 9:21
Есть сайт, который перенесли с домена А на домен Б
Сайт сейчас работает на домене А, домен Б закрыт для индексирования.
После переноса первое время с сайтом на домене А было все ок, но потом слетели какие-то настройки.
Какую часть кода надо сравнивать сайта на домене Б с доменом А, чтобы его востановить или надо копаться в БД?
http://prntscr.com/ouyoap- сайт на домене Б отображает все корректно
http://prntscr.com/ouyqme- сайт на домене А с ошибками.
Автор: YaAllex Aug 20 2019, 10:09
Wordpress? Если да, то проверьте языковые настройки сайта - в настройках должно быть и список "язык сайта"
Автор: СОУП Aug 20 2019, 10:29
(YaAllex @ Aug 20 2019, 11:09)

Wordpress? Если да, то проверьте языковые настройки сайта - в настройках должно быть и список "язык сайта"
Да, Wordpress
правильно ли я понимаю, что надо вот эти настройки смотреть?
http://prntscr.com/ouzr8c
Автор: YaAllex Aug 20 2019, 10:38
(СОУП @ Aug 20 2019, 11:29)

Да, Wordpress
правильно ли я понимаю, что надо вот эти настройки смотреть?
http://prntscr.com/ouzr8c
в админке сайта
your-site.com/wp-admin
Автор: СОУП Aug 20 2019, 11:58
оба параметра одинаковы
стоит русский
http://prntscr.com/ov1529
разница только в дополнительном укр языке
http://prntscr.com/ov1660
когда подключаю язык uk - сайт вообще не отображается))))
Автор: СОУП Aug 20 2019, 16:18
Пока, что удалось выяснить, что public_html в обоих сайтах проблем не имеют.
В openserver сконектил public_html старого сайта, с БД нового- все корректно отображается
Т.к. на новом сайте проблем нету, то значит исключаем public_html нового из зоны риска
Остается в подозрении БД старого сайта.
Есть варианты где надо копать?
Автор: СОУП Aug 20 2019, 16:38
БД выглядит вот так http://prntscr.com/ov5sy7
проблемма в самом виджете http://prntscr.com/ov6j37
Автор: YaAllex Aug 21 2019, 7:09
Как бы решал эту проблему я:
1) Проверил бы стоит ли английский язык в настройках сайта
2) Пошел бы на страницу, которая выводит некорректные данные и посмотрел в коде -> в каком месте это происходит; в вашем случае это похоже на сайдбар (sidebar.php или sidebar-”какое то имя”.php). Там нужно посмотреть как берутся и выводятся данные(используются ли функции _e(), __() и другие для работы с переводами)…
3) Плагины — метод отключения всех или по частям и просмотр чего из этого получится. Начните с плагинов, которые отвечают за переводы (Multilanguage, Google Translate Widget и тд). Если нашли плагин, который это делает, то смотрите документацию или гуглите.
Не знаю насколько это поможет, но больше ничего «относительно толкового» в голову не приходит.
Автор: mzk Sep 12 2019, 10:37
Ребята, я как всегда... 
Вот такой код, смотрит на строку инпута и как только там есть 8 цифр, он делает колл AJAX'ом и возвращает данные
Далее, из них собирается инпут "селект" и вот вопрос:
Само поле проверяют вот так:
CODE Format
<input class="m_added_lm" type="text" pattern="d*" maxlength="8" required="" name="added_lm[]" onkeyup="charcountupdate(this.value)">
CODE Format
function charcountupdate(m_lmcode) {
var lng = m_lmcode.length;
if (lng == 8) {
var $get_store = $("#order_header :input");
prepare_store = $get_store.serialize();
prepare_lmcode = 'm_lmcode='+m_lmcode;
$.ajax({
type : 'POST',
data : prepare_store+'&'+prepare_lmcode,
url : "getProductTypes.php",
success : function(result){
response = JSON.parse(result);
html ='';
html += "<select id='product_types'>";
for (var i = 0; i < response.length; i++) {
if (response[i]['typeShortLabel'] == 'RAP') {
$selected = 'selected';
} else {
$selected = '';
}
html += "<option value="+response[i]['typeShortLabel']+" "+$selected+">"+response[i]['typeShortLabel']+"</option>";
}
html += "</select>";
$('.m_added_lm').closest('tr').find('.body_product_types').html(html);
}
});
return false;
}
}
Строки для инпута генерятся таким образом:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
CODE Format
$(document).on('click', '.add_product', function add_product() {
var new_chq_no = parseInt($('#total_chq_product').val()) + 1;
if (new_chq_no < 300) {
var new_input_lm = "<input class='m_added_lm' type='text' pattern='\d*' maxlength='8' required name='added_lm[]' onkeyup='charcountupdate(this.value)'>";
var new_input_qty = "<input type='number' required name='added_qty[]'>";
//$('#order_data tbody').append('<tr id=trmodal'+new_chq_no+'>');
$('#order_details tbody').append('<tr id=trmodal_product'+new_chq_no+'><td></td>'
+ '<td></td>'
+ '<td>'+new_input_lm+'</td>'
+ '<td><div class="body_product_types"></td>'
+ '<td></td>'
+ '<td>'+new_input_qty+'</td></tr>'
);
$('#total_chq_product').val(new_chq_no);
return false;
} else {
alert('maximum 300');
return false;
}
});
Скрин самой таблицы здесь:
_https://prnt.sc/p53grm
Каким образом можно вставить этот селект только для той строки, где было введено 8 цифр ?
Автор: YaAllex Sep 12 2019, 11:30
Имхо - вам нужен контекст той строки где произошло событие, те контест инпута.
Вариант в инпуте
onkeyup="charcountupdate(this.value)" меняете на onkeyup="charcountupdate(this)"
таким образом получаете this - это текущий инпут
function charcountupdate(m_lmcode){
if (m_lmcode.value.length === 8) {
// тут у вас
// ajax - запрос
// формирование select
// и где то тут прицепляем к "возможно родителю" инпута ваш селект( не совсем понятно, что там за .body_product_types и как он расположен по верстке рядом с инпутом)
$(m_lmcode). <ищем поле для прицепления >. append( select )
}
}
Автор: mzk Sep 12 2019, 11:54
Здорово! Получилось 
Спасибо большое
Автор: mzk May 7 2020, 13:13
Парни, опять я 
Есть задача, при отрисовке таблицы в HTML с помощью PHP нужно делайть "page-break".
Например, есть код:
CODE Format
$department_separator = '';
foreach($data as $lm) {
$dept = $lm['dept'];
if ($department_separator !== $dept) {
PAGE_BREAK!;
}
echo "<tr>";
echo "<td>$cnt</td>";
echo "<td>$store</td>";
echo "<td>$dept</td>";
echo "</tr>";
$department_separator = $dept;
}
Не могу сообразить, как это реализовать... и чем?
Автор: mzk May 7 2020, 15:49
Решил вопрос:
CODE Format
$department_separator = '';
foreach($data as $lm) {
$dept = $lm['dept'];
if ($department_separator !== $dept) {
echo "</table>";
echo '<p style="page-break-before: always">';
echo "<table>";
}
echo "<tr>";
echo "<td>$cnt</td>";
echo "<td>$store</td>";
echo "<td>$dept</td>";
echo "</tr>";
$department_separator = $dept;
}
Автор: YaAllex May 7 2020, 16:05
Имхо, какая то завиральная идея
Invision Power Board
© Invision Power Services