Перейти из форума на сайт.


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Открыть новую тему     Написать ответ в эту тему

Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите разобраться плз.
Получаю данные в цикле и заношу их в массив:
Подробнее...
Как в этом же цикле заменять данные в массивах следующими значениями:
samsung = 12
lg = 35
sony = 2
apple = 5

Всего записей: 690 | Зарегистр. 14-03-2014 | Отправлено: 12:11 21-09-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Код:
$replace = ['samsung' => 12, 'lg' => 35, 'sony' => 2, 'apple' => 5];
$data = [['apple', ''], ['sony', ''], ['samsung', ''], ['lg', '']];
foreach($data as &$tuple)
  foreach($tuple as $i => $val)
    if (isset($replace[$val])) $tuple[$i] = $replace[$val];
print_r($data);

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 18:40 21-09-2017
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо! Уже разобрался, конечно через костыли... Парсю тут сайт один с помощью phpquery, вот какой код наваял:
Читать дальше..

Всего записей: 690 | Зарегистр. 14-03-2014 | Отправлено: 19:03 21-09-2017 | Исправлено: Kaber, 19:09 21-09-2017
MagistrAnatol



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день всем.
Есть несколько , возможно тупых, вопросов:
где почитать о разделении сайта на клиентскую и серверную часть, что пихать на сервер а что обрабатывать на клиенте?
Вопрос в чем - я начал изучать пых по книге Робин Никсон - Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5, 3-е изд (О Рейли) - 2015
последняя глава, создается файлик с функциями php, проверка конекта  
<?php
.........
    $Connection = new mysqli($dbhost,$dbname,$dbpass,$dbname);
    if ($Connection->connect_error)die($Connection->connect_error);
 
ф-ция die выдаст страницу с ошибкой, что как я понимаю с точки зрения пользователя не совсем прикольно(возвращаться на предыдущую страницу) - как лучше реализовать отображение ошибок - всплывающее окно или еще как-то?

Всего записей: 1837 | Зарегистр. 09-04-2003 | Отправлено: 20:00 28-09-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
ф-ция die выдаст страницу с ошибкой, что как я понимаю с точки зрения пользователя не совсем прикольно(возвращаться на предыдущую страницу)

в идеале этого вообще не должно происходить.
 

Цитата:
как лучше реализовать отображение ошибок - всплывающее окно или еще как-то?  

выводите текст ошибки в любом виде, лишь в коде не выполняете все остальное, что связано с подключением.
 
а хотите сделать проще для себя - научитесь пользоваться исключениями (exception)
http://php.net/manual/ru/language.exceptions.php

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 20:02 28-09-2017 | Исправлено: Mavrikii, 21:14 28-09-2017
MagistrAnatol



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii

Цитата:
в идеале этого вообще не должно происходить.  

Я ето понимаю, но возможна ситуация, примеру, что сайт ломанули и поменяли учетные данные для подключения к базе.
За ексепшины спасибо, они не отличаются по реализации от С++Builder.
Насколько я понял , - по принцыпу веб программирование мало отличается от десктопного - если работаешь с базой - на старте проверил конект - нету сказал всем до свидания.

Всего записей: 1837 | Зарегистр. 09-04-2003 | Отправлено: 07:26 29-09-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
если работаешь с базой - на старте проверил конект - нету сказал всем до свидания.  

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

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 07:28 29-09-2017
MagistrAnatol



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Просто для меня не совсем понятно что кидать на сервер а что на клиента.
По примерам книги, делается нормализация вводимых даных как на клиенте на js так и на сервере -
ето так надо? двойная валидация?

Всего записей: 1837 | Зарегистр. 09-04-2003 | Отправлено: 07:39 29-09-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
для меня не совсем понятно что кидать на сервер а что на клиента

вопрос непонятен... что значит "что кидать на сервер"?
php выполняется на сервере, результат его работы выдается клиенту. js тоже выполняется у клиента, поэтому что и куда бросать? выполняется php, формирует страницу. если возникла какая то ошибка в процессе - сообщение о ней вставляется в создаваемый скриптом вывод (html код) вместо того, что выдалось бы в случае нормальной работы.
 

Цитата:
ето так надо? двойная валидация?

желательно. на стороне клиента в js чтобы лишний раз не отправлять данные, на стороне сервера всегда - нельзя доверять данным от клиента.

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 07:44 29-09-2017
MagistrAnatol



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii
Спасибо.

Цитата:
вопрос непонятен... что значит "что кидать на сервер"?  

Что реализуется на сервере, на пхп, а что на клиенте на ява скрипте?
 

Всего записей: 1837 | Зарегистр. 09-04-2003 | Отправлено: 16:20 02-10-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
Что реализуется на сервере, на пхп, а что на клиенте на ява скрипте?  

на js - ничего, зависит от вас.. хотите ли выводить что то пользователю с его помощью или делаете ajax запрос к серверу.
 

Цитата:
Что реализуется на сервере, на пхп

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

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 20:19 02-10-2017 | Исправлено: Mavrikii, 20:21 02-10-2017
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Просьба помочь, никак не разберусь ((
Не могу понять, почему не ищет по базе:

Код:
 
<?
header('Content-type: text/html; charset=windows-1251');
 
    $db = new mysqli('localhost', 'root', '', 'open');
    $db->query("SET NAMES cp1251");
 
    $name_select = "Экран";
 
     //$query = "SELECT * FROM `table` WHERE `name`='$name_select'";
 
     //echo $query;
 
    $result = $db->query("SELECT * FROM `oc_category_description` WHERE `name`='$name_select'");
 
        while($row = $result->fetch_array())
        {
            var_dump($row);
        }    
 

 
Наверное все уже перепробовал, в том числе - менял в дампе базы кодировку, менял на сервере mysql кодировку и т.д.
 
Добавлено:
Вот сама таблица:
oc_category_description | 4 | MyISAM | cp1251_general_ci | 2.1 КиБ    

Всего записей: 690 | Зарегистр. 14-03-2014 | Отправлено: 15:14 03-10-2017 | Исправлено: Kaber, 15:17 03-10-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
<?  

забывайте про shorttags
 

Цитата:
$name_select = "Экран"

сама страница с php кодом в редакторе в какой кодировке?
 

Цитата:
`name`='$name_select'"

нежелательно так делать.

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 19:45 03-10-2017 | Исправлено: Mavrikii, 01:56 04-10-2017
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
сама страница с php кодом в редакторе в какой кодировке?

UTF-8 w/o BOM

Цитата:
нежелательно так делать.  

Да это у меня скрипт чисто для служебных целей, пользователи его юзать не будут и в будущем он вообще будет удален
В итоге была такая ерунда, что значение в переменную $name_select я получал с тэгом <br> на конце, плюс - вот это так и не понял, пришлось сделать "SET NAMES utf8" , м.б. из за того, что сама база в кодировке utf8_general_ci, хотя таблица в cp1251...
Вообщем, спасибо в очередной раз!

Всего записей: 690 | Зарегистр. 14-03-2014 | Отправлено: 07:18 04-10-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
UTF-8 w/o BOM  

ну так и значение в переменной записывается в уникоде в таком виде.
 

Цитата:
 вот это так и не понял, пришлось сделать "SET NAMES utf8" , м.б. из за того, что сама база в кодировке utf8_general_ci, хотя таблица в cp1251

важно то, что в конце концов используется для столбца в качестве кодировки.
 
SET NAMES говорит базе в какой кодировке клиент (php скрипт) отправит запрос.  
поэтому и спросил в каком виде сам скрипт, в котором явно определяется переменная. остальное зависит от того, откуда и в какой кодировки приходят данные используемые дальше в запросах к базе.

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 07:29 04-10-2017 | Исправлено: Mavrikii, 07:32 04-10-2017
MagistrAnatol



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите осилить такую задачу - (я в скрещивании php+html+js еще не совсем разобрался)
Есть php функция, которая показывает окно сообщения - условия - если формы нет - показываем ее,
если есть - до существующего текста добавляем новый.
Вот мой код
MsgBoxWinStyle.css
 

Код:
.MsgBoxBackGround {
    position: fixed;
    height: 100%;
    width: 100%;
    top: 0px;
    left: 0px;
    opacity: 0.5;
    background-color: rgba(0, 0, 0, 0.54);
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    will-change: opacity; transform: translateZ(0px);
    transition: left 0ms cubic-bezier(0.23, 1, 0.32, 1) 0ms, opacity 400ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;
    z-index: 1000;
}
.MsgBoxDialog {
    border-radius: 2px;
    background: #fff;
    position: fixed;
    left: 50%;
    top: 50%;
    margin-top: -200px;
    overflow: hidden;
    z-index: 2000;
    width: 500px;
    margin-left: -250px;
    animation:fadein 0.5s;
    -moz-box-shadow :0.4em 0.4em 5px rgba(122,122,122,0.5);
    -webkit-box-shadow:0.4em 0.4em 5px rgba(122,122,122,0.5);
    box-shadow :0.4em 0.4em 5px rgba(122,122,122,0.5);
}
.MsgBoxHeader {
    display: flex;
    flex-direction: row;
    align-items:center;
    justify-content: flex-start;
    -webkit-justify-content: flex-start;
    background-color: rgb(0, 188, 212);
    margin-top: 0px;
    width: inherit;
    height: 60px;
}
#MsgBoxImg{
    padding: 4px;
    width: 48px;
    height: 48px;
}
#MsgBoxH3 {
    background-color: rgb(0, 188, 212);
    text-align: center;
    color: #ed1b2b;
    font-size: x-large;
    width: inherit;
    padding: 4px;
}
.MsgBoxContent {
    padding: 0 1em;
    /*border-top: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    background: WhiteSmoke;*/
}
#MsgBoxWin button {
    float: right;
    line-height: 20px;
    margin: 10px;
    border: none;
    border-radius: 2px;
    background: teal;
    color: #ffffff;
    width: 120px;
    height: 40px;
    font-size: large;
}
#MsgBoxWin button[type="button"]:hover {
    cursor: pointer;
    color: #ed1b2b;
    background: #26A69A;
}
 

 
и сама функция
 

Код:
function fShowModalWindow($img, $HeaderText, $BodyText)
{
 
    echo '
<script >
if (document.getElementById(\'MsgBoxWin\').style.display!==\'none\'){
    var MsgText = document.getElementById("MsgBoxContentText").innerHTML;
    $BodyText = "$BodyText"+MsgText;
}
 
 
</script>
<form  method="post" >
    <link rel="stylesheet" type="text/css" href="MsgBoxWinStyle.css">
    <div id="MsgBoxWin" >
        <div class="MsgBoxBackGround"></div>
        <div class="MsgBoxDialog">
            <div class="MsgBoxHeader">
                <img id="MsgBoxImg" src='. $img .'>
                <h3 id="MsgBoxH3">' . $HeaderText . '</h3>
            </div>
            <div class="MsgBoxContent">
                <p id="MsgBoxContentText">' . $BodyText . '</p>
            </div>
            <button type="button" onClick="getElementById(\'MsgBoxWin\').style.display=\'none\';">Закрити</button>
        </div>
    </div>
</form>
 
 
';
}
 

как бы почти работает, за исключеним что при повторном вызове создается новый екземляр формы и нижнюю форму нельзя закрыть

Всего записей: 1837 | Зарегистр. 09-04-2003 | Отправлено: 10:29 14-10-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
Вот мой код

он неправильный.
 

Цитата:
<script >  
if (document.getElementById(\'MsgBoxWin\').style.display!==\'none\'){  

выведется в странице ДО вывода элемента с данным ID, а значит его не будет.
 
js скрипт должен выводиться после нужно элемента на странице, либо по событию загрузки DOM
 

Цитата:
за исключеним что при повторном вызове создается новый екземляр формы и нижнюю форму нельзя закрыть

потому что ID должен быть уникальным на странице.
это все не имеет никакого отношения к PHP
 

Цитата:
если есть - до существующего текста добавляем новый

php не знает, что вы уже выводили ранее в браузер. поэтому не знает, "есть" форма или нет.
у вас два варианта - либо выводить форму под конец страницы, когда вы уже знаете все, что хотите в ней отобразить. либо выводите информацию кусками, которую потом с помощью javascript объединяете у клиента и выводите так, как хотите.
 
а чтобы понять все взаимодействие - считайте php скрипт пишущей машинкой, которая печатает html код на листе бумаги, выдаваемом в браузер. и уже браузер этот html код разбирает как из статического файла и работает с ним на стороне клиента.

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 10:35 14-10-2017 | Исправлено: Mavrikii, 10:45 14-10-2017
MagistrAnatol



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Или, как мне проще, как на php рочитать стиль елемента
MsgBoxWin).style.display

Всего записей: 1837 | Зарегистр. 09-04-2003 | Отправлено: 10:48 14-10-2017
Mavrikii

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
Или, как мне проще, как на php рочитать стиль елемента  

никак. я же пояснил все.
php генерит html код для браузера. на момент этой генерации браузер ничего не отображает. так как еще не получил этот html код. более того, php не знает что и как отображает браузер, пока сам браузер не отправит ему какую то информацию в новом запросе.
https://www.youtube.com/watch?v=mdshbiFt3q4

Всего записей: 5228 | Зарегистр. 20-09-2014 | Отправлено: 10:49 14-10-2017 | Исправлено: Mavrikii, 10:51 14-10-2017
MagistrAnatol



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii
Принцып понял, осталось реализовать

Цитата:
php не знает, что вы уже выводили ранее в браузер

В етом для меня проблема с php как не типизированого языка, на С++ намного проще - объявили переменную какого-то класса и проверяем нул она или нет, а тут надо извращаться

Всего записей: 1837 | Зарегистр. 09-04-2003 | Отправлено: 10:54 14-10-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2017

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru