PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (7): « 1 2 3 4 5 [6] 7 »
Найдено сообщений: 91
and_07
Отправлено: 24 Февраля, 2014 - 14:10:35 • Тема: обработка массива • Форум: Хранение данных, их вывод и обработка
Ответов: 5 Просмотров: 1601
исходные данные файл
PHP:
скопировать код в буфер обмена
Все товары
Все товары / Авто
Все товары / Авто / Автокосметика
Все товары / Авто / Автокосметика / Автошампуни
Все товары / Авто / Автокосметика / Автоэмали
Все товары / Авто / Автокосметика / Грунтовка
Все товары / Авто / Автокосметика / Нанопокрытия
Все товары / Авто / Автокосметика / Очистители
Все товары / Авто / Автокосметика / Полироли
Все товары / Авто / Автокосметика / Шпатлевка
Все товары / Авто / Автохимия
Все товары / Авто / Автохимия / Антикоры
Все товары / Авто / Автохимия / Антифризы
Все товары / Авто / Автохимия / Герметики
1 читаю из файла получаю массив
2 далее перевожу массив в такой вид
не удается построить массив с ерархией
and_07
Отправлено: 29 Октября, 2013 - 15:35:39 • Тема: xPath получить значение по атрибуту name="Тип" • Форум: XML и его обработка
Ответов: 2 Просмотров: 2687
1) если атрибут латиницей то все работает!!
метод (выкинул лишнее что бы не мешалось)
PHP:
скопировать код в буфер обмена
public static function read_xml( $filename ) {
try{
if ( ! $yml_catalog )
throw new Exception( "Файл поврежден" ) ;
$offer = $yml_catalog -> xpath ( '//shop/offers/offer' ) ;
foreach ( $offer as $o )
{
foreach ( $o as $k => $v )
{
if ( $k === 'param' ) {
$tmp = $o -> xpath ( 'param[@name="' . $v -> attributes ( ) -> name [ 0 ] . '"]' ) ;
$stmp = ( string) $tmp [ 0] ;
$yml_array [ ( string
) $v -> attributes ( ) -> name [ 0
] ] = ( isset ( $stmp ) && ! empty ( $stmp ) ) ?
( string
) $tmp [ 0
] : null ; } else {
$yml_array [ ( string
) $k ] = ! empty ( $o -> $k ) ?
( string
) $o -> $k : null ; }
}
}
$filename
) ;
} else {
exit ( 'Не удалось открыть файл!!!' ) ; }
} catch( Exception $e ) {
echo $e -> getMessage ( ) ;
}
}
данные
CODE (
htmlphp ):
скопировать код в буфер обмена
<? xml version= "1.0" encoding= "windows-1251" ?>
.....
< offer id= "19928165" available= "true" >
< url> http://www.ozon.ru/context/detail/id/19928165/?from=prt_xml_facet</ url>
< price> 521</ price>
< currencyId> RUR</ currencyId>
< categoryId> 1164326</ categoryId>
< categoryId> 1167155</ categoryId>
< categoryId> 1165293</ categoryId>
< categoryId> 1162204</ categoryId>
< picture> http://www.ozon.ru/multimedia/audio_cd_covers/1005839109.jpg</ picture>
< delivery> true</ delivery>
< orderingTime>
< ordering> На складе</ ordering>
</ orderingTime>
< name> Сучкорез FIT мини, 317 мм. 77115</ name>
< vendor> FIT</ vendor>
< vendorCode> 77115</ vendorCode>
< description> Сучкорез FIT мини применяется при работе в саду или на приусадебном участке для срезания сухих, поврежденных или больных веток, а также для формирования кроны деревьев и кустарников. Инструмент небольшого размера, благодаря чему его удобно хранить и работать среди плотно растущих веток.</ description>
< barcode> 8404880771159</ barcode>
< param name= "Тип" > Сучкорез</ param>
< param name= "Упаковка" > Без упаковки</ param>
< param name= "Год выпуска" > 2013</ param>
</ offer>
......
Суть проблемы не видит теги с атрибутами
CODE (
htmlphp ):
скопировать код в буфер обмена
< param name= "Тип" > Сучкорез</ param>
< param name= "Упаковка" > Без упаковки</ param>
< param name= "Год выпуска" > 2013</ param>
с латинскими названиями все работает
(Добавление)
тема закрыта
and_07
Отправлено: 25 Сентября, 2012 - 09:25:56 • Тема: что то типа CI • Форум: Объектно-ориентированное программирование
Ответов: 2 Просмотров: 1257
всем доброго времени суток
в общем не претендую на оригинальность просто вдруг кому будет интересно
данный код взял с какогото урока или книги и чуть переделал
что бы работал так controller/metod/param1/...../pa ramN
PHP:
скопировать код в буфер обмена
<?PHP
class Router{
protected $_controller ;
protected $_action ;
protected $_params ;
static $_instance ;
public static function getInstance( ) {
if ( ! ( self :: $_instance instanceOf self ) )
self :: $_instance = new self ( ) ;
return self :: $_instance ;
}
private function __construct( ) {
$request = $_SERVER [ 'REQUEST_URI' ] ;
//conrtoller
//ucfirst($splits[1])
$this -> _controller
= ! empty ( $splits [ 0
] ) ?
$splits [ 0 ] . 'Controller' : 'indexController' ;
//method
$this -> _action
= ! empty ( $splits [ 1
] ) ?
$splits [ 1 ] . 'Action' : 'indexAction' ;
//params
for ( $i = 2
, $cnt = count ( $splits ) ; $i < $cnt ; $i ++ ) $value [ ] = $splits [ $i ] ;
$this -> _params = $value ;
}
}
public function route( ) {
$rc = new ReflectionClass( $this -> getController ( ) ) ;
$rm = new ReflectionMethod( $this -> getController ( ) , $this -> getAction ( ) ) ;
if ( $rc -> hasMethod ( $this -> getAction ( ) ) ) {
$controller = $rc -> newInstance ( ) ;
$method = $rc -> getMethod ( $this -> getAction ( ) ) ;
/***********************************
if($method->isStatic())
$method->invoke(null);
else
// *********************************/
$par = $rm -> getParameters ( ) ;
if ( $par && $this -> getParams ( ) != 0) {
$rm -> invokeArgs ( $controller , $this -> getParams ( ) ) ;
} //else { throw new Exception("Params"); } */
$method -> invoke ( $controller ) ;
} else { throw new Exception( "Action" ) ; }
} else { throw new Exception( "Interface" ) ; }
} else { throw new Exception( "Controller" ) ; }
}
function getController( ) {
return $this -> _controller;
}
function getAction( ) {
return $this -> _action;
}
function getParams( ) {
return $this -> _params;
}
}
?>
index.php
на недочеты прошу указывать
and_07
Отправлено: 21 Сентября, 2012 - 20:44:32 • Тема: тестовый класс ООП • Форум: Объектно-ориентированное программирование
Ответов: 26 Просмотров: 6453
Спасибо armancho7777777 за совет
обязательно посмотрю данную книгу
Вас что то насторожило в коде помимо класса DataClass
данный пример старался писать на у ровне интерфейсов а не классов
(в данный момент читаю "паттерны проектирования эрика фримена и элизабет фримен")
and_07
Отправлено: 21 Сентября, 2012 - 20:00:06 • Тема: тестовый класс ООП • Форум: Объектно-ориентированное программирование
Ответов: 26 Просмотров: 6453
Всем доброго времени суток всем спасибо еще раз
понял все недочеты
но хотел бы уточнить суть данного тестового класса
неоходимо было написать гостевую книгу с возможностью добовлять удалять и редактировать ну и банить по IP ( и использовать как можно больше ООП)
база не имеет значения
впринципе я старался реализовать как можно более удобный вариант интерфейса гостевой книги (ну и не уделил должного внимания на безопастность в БД (( )
and_07
Отправлено: 21 Сентября, 2012 - 13:05:01 • Тема: тестовый класс ООП • Форум: Объектно-ориентированное программирование
Ответов: 26 Просмотров: 6453
Всем доброго времени суток спасибо за комментарии учту но хотелось бы услышать что нибудь о реализации композиции или наследования и вообще если я реализую singleton разве такая конструкция будет нормально работать
(Добавление)
что в данном случае уместнее использовать композицию или наследование
and_07
Отправлено: 20 Сентября, 2012 - 20:40:29 • Тема: тестовый класс ООП • Форум: Объектно-ориентированное программирование
Ответов: 26 Просмотров: 6453
Прошу указать фрагменты которые можно улучшить в данном коде
PHP:
скопировать код в буфер обмена
<?PHP
?>
<?PHP
interface BaseData
{
function query( $sql ) ;
function insert( $table , $data ) ;
function update( $table , $changes , $condition ) ;
function delete( $table , $condition , $limit ) ;
}
?>
<?PHP
class DataClass implements BaseData
{
private static $_instance ;
private $_connection ;
private $results ;
public function __construct( )
{
}
public function __destruct( )
{
}
public function delete( $table , $condition , $limit )
{
$limit = ( $limit == '' ) ? '' : ' LIMIT ' . $limit ;
$delete = "DELETE FROM {$table} WHERE {$condition} {$limit} " ;
$this -> query ( $delete ) ;
}
public function update( $table , $changes , $condition )
{
$update = "UPDATE " . $table . " SET " ;
foreach ( $changes as $field => $value )
{
$update .= "`" . $field . "`='{$value} '," ;
}
$update = substr ( $update , 0
, - 1
) ; if ( $condition != '' )
{
$update .= "WHERE " . $condition ;
}
$this -> query ( $update ) ;
return true ;
}
public function insert( $table , $data )
{
$fields = "" ;
$values = "" ;
foreach ( $data as $f => $v )
{
$fields .= "`$f `," ;
}
$fields = substr ( $fields , 0
, - 1
) ; $values = substr ( $values , 0
, - 1
) ;
$insert = "INSERT INTO $table ({$fields} ) VALUES({$values} )" ;
$this -> query ( $insert ) ;
return true ;
}
public function query( $queryStr )
{
if ( $this -> _connection === false ) {
die ( 'No Database Connection Found.' ) ; }
if ( $result === false ) {
}
return $result ;
}
public function fetch( $sql )
{
$result = $this -> query ( $sql ) ;
{
$ret [ ] = $row ;
}
return ( $ret ) ;
}
}
?>
<?PHP
class GuestBook
{
private $db ;
private $table = "guestbook" ;
public function __construct( BaseData $db )
{
$this -> db = $db ;
}
public function checkunique( $email )
{
$this -> db -> query ( "SELECT * FROM `" . $this -> table . "` WHERE email='$email '" ) ;
}
public function add( $data )
{
$this -> db -> insert ( $this -> table , $data ) ;
}
public function delete( $condition , $limit )
{
$this -> db -> delete ( $this -> table , $condition , $limit ) ;
}
public function update( $changes , $condition )
{
$this -> db -> update ( $this -> table , $changes , $condition ) ;
}
public function query( $sql )
{
$this -> db -> query ( $sql ) ;
}
public function create( )
{
$sql = "
CREATE TABLE IF NOT EXISTS `" . $this -> table . "` (
`id` int(10) unsigned NOT NULL auto_increment,
`parent_id` int(10) ,
`name` varchar(255) default '',
`email` varchar(255) default '',
`description` varchar(255) default '',
`when` int(11) NOT NULL default '0',
`ip` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8" ;
$this -> db -> query ( $sql ) ;
}
public function fetch( $sql )
{
return $this -> db -> fetch ( $sql ) ;
}
public function get_ip( ) {
$ip = "0.0.0.0" ;
if ( ( isset ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ] ) ) && ( ! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ] ) ) ) { $ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ] ;
} elseif ( ( isset ( $_SERVER [ 'HTTP_CLIENT_IP' ] ) ) && ( ! empty ( $_SERVER [ 'HTTP_CLIENT_IP' ] ) ) ) { $ip = explode ( "." , $_SERVER [ 'HTTP_CLIENT_IP' ] ) ; $ip = $ip [ 3 ] . "." . $ip [ 2 ] . "." . $ip [ 1 ] . "." . $ip [ 0] ;
} elseif ( ( ! isset ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ] ) ) || ( empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ] ) ) ) { if ( ( ! isset ( $_SERVER [ 'HTTP_CLIENT_IP' ] ) ) && ( empty ( $_SERVER [ 'HTTP_CLIENT_IP' ] ) ) ) { $ip = $_SERVER [ 'REMOTE_ADDR' ] ;
}
}
return $ip ;
}
}
?>
<?PHP
$GB = new GuestBook( new DataClass( ) ) ;
//$GB->create();
/*
$arr=array();
$arr["name"] = 'test';
$arr["email"] = 'test@te.te';
$arr["description"]= 'bla bla bla';
$arr["when"] =123;
$arr["ip"] ='127.0.1';
$arr1=array();
$arr1["name"] = 'test2';
$arr1["email"] = 'test@te.te';
$arr1["description"]= 'bla bla bla';
$arr1["when"] =2;
$arr1["ip"] = $GB->get_ip();
$GB->add( $arr);
$GB->update( $arr1,'id=4');
$GB->delete('name ="test" ' ,2);*/
$sql = "select * from guestbook " ;
$res = $GB -> fetch ( $sql ) ;
$ip = $GB -> get_ip ( ) ;
?>
Страниц (7): « 1 2 3 4 5 [6] 7 »
Powered by ExBB FM 1.0 RC1. InvisionExBB