shini 318 Denunciar post Postado Fevereiro 20, 2013 quais funções dependem? cita umas ai. @ no codigo parece bad smell, como vc disse reescrever o codigo é a solução. Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 mkdir é um exemplo Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Fevereiro 20, 2013 O driver "nativo" do MySQL para PHP (as famosas funções mysql_*) será removido do PHP em versões futuras. Se não me engano, já está marcado como deprecated. Utilize a extensão MySQLi ou PDO no seu lugar. Quanto ao seu exemplo de código, não tem como usar essa classe com a sua estrutura, você precisa reescrever tudo. Está faltando coisa aí também, enfim, creio que você não entendeu direito como funciona. Sugiro que dê uma olhada aqui: :seta: http://henriquebarcelos.in/blog/2012/08/20/php-oo-classe-simples-para-acesso-a-banco-de-dados/ É o mais simples possível. então peguei ele e fui tenta adaptar o código e me retorno o seguinte erro: Parse error: syntax error, unexpected T_PUBLIC in D:\WebServer\inc\conexao2.php on line 8 conexao2.php <?php class Db_Driver { private $connector; private static $defaultConnector; public function __construct(MySQLi $conexao = null) { $this->connect($conexao); public static setDefaultConnector(MySQLi $conexao) { self::$defaultConnector = $conexao; public static getDefaultConnector() { return self::$defaultConnector; } public function connect(MySQLi $conexao = null) { if(!$this->isConnected()) { if($conexao === null) { if(self::$defaultConnector === null) { throw new Exception('Não existe nenhum conector com o banco de dados!'); } else { $conexao = self::$defaultConnector; } } $this->connector = $conexao; } } public function disconnect() { if($this->isConnected()) { $this->connector->close(); $this->connector = null; } } public function isConnected() { return $this->connector instanceof MySQLi; } public function getConnector() { $this->connect(); return $this->connector; } public function query($sql) { $this->connect(); $result = $this->connector->query($sql); if(!$result) { throw new Exception("Erro SQL #{$this->connector->errno}:{$this->connector->error}"); } return $result; } public function fetch($sql) { $result = $this->query($sql); return $result->fetch_assoc(); } public function fetchAll($sql) { $data = array(); $result = $this->query($sql); while($cursor = $result->fetch_assoc()) { $data[] = $cursor; } return $data; } public function lastId() { return $this->connector->insert_id; } } } } ?> index.php <div id="dados"> <?php require_once("inc/config.php"); $query_str = $driver->fetchAll("SELECT COUNT(*) as cont FROM teste WHERE ID_PASTA = 0"); $query = var_dump($query_str); $quant_resul = 8; $pagina = 1; $paginas = ceil($query['count'] / $quant_resul); $result = $driver->fetchAll("SELECT *FROM teste LIMIT 0 , " . $quant_resul); $x = 1; mysql_close($conexao); while($query_array = mysql_fetch_assoc($result)){ echo "<div class='thumb'><a class='OBRA_".$x."' href='javascript:void(0);' onclick=\"javascript:exibeImagens(".$query_array['ID'].",".$x.");\"><img src='thumb.php?img=img/".$query_array['IMAGEM']."' /></a></div>"; $x++; }; include('pag_indice.php'); ?> </div> config.php <?php $conexao = new MySQli('localhost', 'root', '', 'bancoteste'); Db_Driver::setDefaultConnector($conexao); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 Dá próxima vez, indente o código, fica porco desta forma. Uma dica: o PHP quase sempre diz o arquivo e a linha do problema, veja: Parse error: syntax error, unexpected T_PUBLIC in D:\WebServer\inc\conexao2.php on line 8 Linha 8, do arquivo conexao2.php: public function __construct(MySQLi $conexao = null) { $this->connect($conexao); public static setDefaultConnector(MySQLi $conexao) { self::$defaultConnector = $conexao; public static getDefaultConnector() { return self::$defaultConnector; } Você definiu o método setDefaultConnector dentro do construct. E para que diabos vc está usando static? Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Fevereiro 20, 2013 Essa sua adaptação ficou mal feita porque você comeu os fechos de chaves de cada método da classe. Classes são diferentes de um IF que você pode suprimir a chave caso a o corpo dele contenha uma declaração simples de uma linha. E um adendo! Isso de que hospedagens gratuitas ainda oferecerem PHP 4 só deve ser realidade aqui nos Brasil, dos quase extintos servidores de caridade porque lá fora tem hosts gratuitos decentes com no mínimo PHP 5.2. É dureza que não dá pra hospedar uma aplicação que rode com algum framework moderno por causa dos namespaces, mas pelo menos um OOP levemente decente já rola. Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 Essa sua adaptação ficou mal feita porque você comeu os fechos de chaves de cada método da classe. Classes são diferentes de um IF que você pode suprimir a chave caso a o corpo dele contenha uma declaração simples de uma linha. E um adendo! Isso de que hospedagens gratuitas ainda oferecerem PHP 4 só deve ser realidade aqui nos Brasil, dos quase extintos servidores de caridade porque lá fora tem hosts gratuitos decentes com no mínimo PHP 5.2. É dureza que não dá pra hospedar uma aplicação que rode com algum framework moderno por causa dos namespaces, mas pelo menos um OOP levemente decente já rola. Cara, php 5.4, arrays simples, traits, mais performático, session handler em uma classe, isso tudo já está faz 1 ano no PHP. E não quebra compatibilidade com as coisas, cadê hospedagem compartilhada implementando isso? Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Fevereiro 20, 2013 bom eu simplesmente peguei o código desse site http://henriquebarce...banco-de-dados/ pra tentar usar como conexao pois ja que falaram que essa minha primeira classe que passei ta "ultrapassada" e "incompleta". só que ta dando o erro: Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE in D:\WebServer\conexao2.php on line 9 e deixei o código original: class Db_Driver { private $connector; private static $defaultConnector; public function __construct(MySQLi $conn = null) { $this->connect($conn); } public static setDefaultConnector(MySQLi $conn) { self::$defaultConnector = $conn; } public static getDefaultConnector() { return self::$defaultConnector; } public function connect(MySQLi $conn = null) { if(!$this->isConnected()) { if($conn === null) { if(self::$defaultConnector === null) { throw new Exception('Não existe nenhum conector com o banco de dados!'); } else { $conn = self::$defaultConnector; } } $this->connector = $conn; } } public function disconnect() { if($this->isConnected()) { $this->connector->close(); $this->connector = null; } } public function isConnected() { return $this->connector instanceof MySQLi; } public function getConnector() { $this->connect(); return $this->connector; } public function query($sql) { $this->connect(); $result = $this->connector->query($sql); if(!$result) { throw new Exception("Erro SQL #{$this->connector->errno}: {$this->connector->error}"); } return $result; } public function fetch($sql) { $result = $this->query($sql); return $result->fetch_assoc(); } public function fetchAll($sql) { $data = array(); $result = $this->query($sql); while($cursor = $result->fetch_assoc()) { $data[] = $cursor; } return $data; } public function lastId() { return $this->connector->insert_id; } } Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 --- Melhorias que eu faria, e fiz: <?php class Db_Driver { protected $connector; public function __construct(MySQLi $connector) { $this->connector = $connector; } public function __destruct() { $this->connector->close(); } public function getConnector() { return $this->connector; } public function query($sql) { $result = $this->getConnector()->query($sql); if(!$result) { $errno = $this->getConnector()->errno; $error = $this->getConnector()->error; throw new Exception( sprintf('SQL Error - #%s: %s', $errno, $error) ); } return $result; } public function fetch($sql) { $result = $this->query($sql); return $result->fetch_assoc(); } public function fetchAll($sql) { $data = array(); $result = $this->query($sql); while($cursor = $result->fetch_assoc()) { $data[] = $cursor; } return $data; } public function getLastId() { return $this->getConnector()->insert_id; } } Removi o default connector, isto não faz sentido, cada conexão tem seu objeto. E removi o desconector, coloquei no destruct, quando o objeto morre, a conexão morre, e indentei e "limpei" um pouco. Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Fevereiro 20, 2013 certo agora me retorno os seguinte erros: array(1) { [0]=> array(1) { ["cont"]=> string(2) "10" } } Warning: mysql_close() expects parameter 1 to be resource, object given in D:\WebServer\popbox.php on line 103Warning: mysql_fetch_assoc() expects parameter 1 to be resource, array given in D:\WebServer\popbox.php on line 105 popbox.php <div id="dados"> <?php require_once("config.php"); $query_str = $driver->fetchAll("SELECT COUNT(*) as cont FROM teste WHERE ID_PASTA = 0"); $query = var_dump($query_str); $quant_resul = 8; $pagina = 1; $paginas = ceil($query['count'] / $quant_resul); $result = $driver->fetchAll("SELECT *FROM teste LIMIT 0 , " . $quant_resul); $x = 1; mysql_close($conn); while($query_array = mysql_fetch_assoc($result)){ echo "<div class='thumb'><a class='OBRA_".$x."' href='javascript:void(0);' onclick=\"javascript:exibeImagens(".$query_array['ID'].",".$x.");\"><img src='thumb.php?img=img/".$query_array['IMAGEM']."' /></a></div>"; $x++; }; include('pag_indice.php'); ?> </div> config.php <?php $conn = new MySQli('localhost', 'root', '', 'bancoteste'); $driver = new Db_Driver($conn); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 Cara mysql_* acabou. Mysqli não é mysql_, esqueça para o resto da vida estas malditas funções. <?php require_once("config.php"); $query_str = $driver->fetchAll("SELECT COUNT(*) as cont FROM teste WHERE ID_PASTA = 0"); $query = var_dump($query_str); $quant_resul = 8; $pagina = 1; $paginas = ceil($query['count'] / $quant_resul); $result = $driver->fetchAll("SELECT *FROM teste LIMIT 0 , " . $quant_resul); $x = 1; while($result){ echo "<div class='thumb'><a class='OBRA_".$x."' href='javascript:void(0);' onclick=\"javascript:exibeImagens(".$query_array['ID'].",".$x.");\"><img src='thumb.php?img=img/".$query_array['IMAGEM']."' /></a></div>"; $x++; }; include('pag_indice.php'); ?> </div> Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Fevereiro 20, 2013 desculpe ae se os erros são grotescos mas é que não manjo... ;( quer dizer que vai ter que fazer todo o código ? pois ta dando erro acusando as $query_array['ID'] array(1) { [0]=> array(1) { ["cont"]=> string(2) "10" } } Notice: Undefined variable: query_array in D:\WebServer\popbox.php on line 104 linha 104 echo "<div class='thumb'><a class='OBRA_".$x."' href='javascript:void(0);' onclick=\"javascript:exibeImagens(".$query_array['ID'].",".$x.");\"><img src='thumb.php?img=img/".$query_array['IMAGEM']."' /></a></div>"; Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 Use foreach, é muito melhor. <?php require_once("config.php"); $query_str = $driver->fetchAll("SELECT COUNT(*) as cont FROM teste WHERE ID_PASTA = 0"); $query = var_dump($query_str); $quant_resul = 8; $pagina = 1; $paginas = ceil($query['count'] / $quant_resul); $results = $driver->fetchAll("SELECT *FROM teste LIMIT 0 , " . $quant_resul); $x = 1; foreach ($results as $result){ echo "<div class='thumb'><a class='OBRA_".$x."' href='javascript:void(0);' onclick=\"javascript:exibeImagens(".$result['ID'].",".$x.");\"><img src='thumb.php?img=img/".$result['IMAGEM']."' /></a></div>"; $x++; }; include('pag_indice.php'); ?> </div> quer dizer que vai ter que fazer todo o código ? Não entendi. Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Fevereiro 20, 2013 é que eu pensei que ia ter que "refazer" todo o código por causa do "MSQLi"... só isso. :) e a pagina não ta abrindo agora :( putz ta embaçado deixar isso "redondo"... esquero que não acabe a paciencia de vc's.. :( o mesmo erro usando o foreach ($result as $result) array(1) { [0]=> array(1) { ["cont"]=> string(2) "10" } } Notice: Undefined variable: query_array in D:\WebServer\popbox.php on line 104 Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 Cara, esse sistema já começou errado, vc está com estado global pq usa procedural etc. Para informar nós, vc já fez muita coisa? Possui experiência com OO? é que eu pensei que ia ter que "refazer" todo o código por causa do "MSQLi"... só isso. :) Vai sim. Estranho. é que eu pensei que ia ter que "refazer" todo o código por causa do "MSQLi"... só isso. :) e a pagina não ta abrindo agora :( putz ta embaçado deixar isso "redondo"... esquero que não acabe a paciencia de vc's.. :( o mesmo erro usando o foreach ($result as $result) array(1) { [0]=> array(1) { ["cont"]=> string(2) "10" } } Notice: Undefined variable: query_array in D:\WebServer\popbox.php on line 104 Como eu disse, veja o arquivo com a respectiva linha, substitua essa query_array por results, com um foreach, como eu fiz. Estranho a página não abrir. Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Fevereiro 20, 2013 porque ta aparecendo isso aqui será ? array(1) { [0]=> array(1) { ["cont"]=> string(2) "10" } } não some de jeito nenhum isso... Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 var_dump que vc deu Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Fevereiro 20, 2013 :( na boa ja vi qe o qe tenho aqui não vai me servi pra nada... vo abandona isso, e larga o site pra la.. valeu pela paciencia e pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Fevereiro 20, 2013 Vai sim. Estranho. Não necessariamente. Pode-se criar um Adapter procedural que mapeie as funções antigas mysql_* pelas correspondentes MySQLi. Só não tenho certeza se seria possível sobrescrever as funções em questão. Se não der, só desativando a biblioteca, sumindo com as funções originais. Vai continuar feio e vai degradar a performance, mas se reescrever o código inteiro for inviável, é uma solução. Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Fevereiro 20, 2013 Não necessariamente. Pode-se criar um Adapter procedural que mapeie as funções antigas mysql_* pelas correspondentes MySQLi. Só não tenho certeza se seria possível sobrescrever as funções em questão. Se não der, só desativando a biblioteca, sumindo com as funções originais. Vai continuar feio e vai degradar a performance, mas se reescrever o código inteiro for inviável, é uma solução. Não é uma solução, vc não pode criar as funções mysql_* pois elas ainda existem, estão apenas depreciadas no PHP 5.5. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Fevereiro 20, 2013 Não necessariamente. Pode-se criar um Adapter procedural que mapeie as funções antigas mysql_* pelas correspondentes MySQLi. Só não tenho certeza se seria possível sobrescrever as funções em questão. Se não der, só desativando a biblioteca, sumindo com as funções originais. Vai continuar feio e vai degradar a performance, mas se reescrever o código inteiro for inviável, é uma solução. find . -type f -iname *.php -exec sed -i 's:mysql_:mysqli_:i' {} \; Bingo. Compartilhar este post Link para o post Compartilhar em outros sites