Ir para conteúdo

Carcleo

Members
  • Total de itens

    1920
  • Registro em

  • Última visita

  • Dias vencidos

    1

Tudo que Carcleo postou

  1. Carcleo

    limpar campos póstumos

    jQuery: // JavaScript Document $(document).ready(function (e) { $("#idPastor").on("change", function () { $.ajax({ url: "_scripts/_php/_validacoes/buscarDadosRedes.php", type: "POST", dataType: "json", data: { idPastor: $("#idPastor").val() }, beforeSend: function() { $("#imgCarregando").css('display','block'); }, success: function (result) { $("#imgCarregando").css('display','none'); $('#idRede').find('option').remove(); if (result == null){ $("#idRede").append("<option value=>Sem Redes</option>"); } else { $("#idRede").append("<option value=>Escolha a Rede</option>"); result.forEach(function(option){ $("#idRede").append("<option value=" + option["idRede"] + ">" + option["nome"] + "</option>") }); } } }); }); $("#idRede").on("change", function () { $.ajax({ url: "_scripts/_php/_validacoes/buscarDadosRegioes.php", type: "POST", dataType: "json", data: { idRede: $("#idRede").val() }, beforeSend: function() { $("#imgCarregando").css('display','block'); }, success: function (result) { $("#imgCarregando").css('display','none'); $('#idRegiao').find('option').remove(); if (result == null){ $("#idRegiao").append("<option value=>Sem Regiões</option>"); } else { $("#idRegiao").append("<option value=>Escolha a Região</option>"); result.forEach(function(option){ $("#idRegiao").append("<option value=" + option["idRegiao"] + ">" + option["nome"] + "</option>") }); } } }); }); $("#idRegiao").on("change", function () { $.ajax({ url: "_scripts/_php/_validacoes/buscarDadosAreas.php", type: "POST", dataType: "json", data: { idRegiao: $("#idRegiao").val() }, beforeSend: function() { $("#imgCarregando").css('display','block'); }, success: function (result) { $("#imgCarregando").css('display','none'); $('#idArea').find('option').remove(); if (result == null){ $("#idArea").append("<option value=>Sem Áreas</option>"); } else { $("#idArea").append("<option value=>Escolha a Área</option>"); result.forEach(function(option){ $("#idArea").append("<option value=" + option["idArea"] + ">" + option["nome"] + "</option>") }); } } }); }); $("#idArea").on("change", function () { $.ajax({ url: "_scripts/_php/_validacoes/buscarDadosSetores.php", type: "POST", dataType: "json", data: { idArea: $("#idArea").val() }, beforeSend: function() { $("#imgCarregando").css('display','block'); }, success: function (result) { $("#imgCarregando").css('display','none'); $('#idSetor').find('option').remove(); if (result == null){ $("#idSetor").append("<option value=>Sem Setores</option>"); } else { $("#idSetor").append("<option value=>Escolha a Setor</option>"); result.forEach(function(option){ $("#idSetor").append("<option value=" + option["idSetor"] + ">" + option["nome"] + "</option>") }); } } }); }); $("#idSetor").on("change", function () { $.ajax({ url: "_scripts/_php/_validacoes/buscarDadosCelulas.php", type: "POST", dataType: "json", data: { idSetor: $("#idSetor").val() }, beforeSend: function() { $("#imgCarregando").css('display','block'); }, success: function (result) { $("#imgCarregando").css('display','none'); $('#idCelula').find('option').remove(); if (result == null){ $("#idCelula").append("<option value=>Sem Celulas</option>"); } else { $("#idCelula").append("<option value=>Escolha a Célula</option>"); result.forEach(function(option){ $("#idCelula").append("<option value=" + option["idCelula"] + ">" + option["nome"] + "</option>") }); } } }); }); }); Esse script, faz a população via $.ajax do jQuery de combos no form. Tudo funciona bem. Mas considere o o form abaixo: Imagine o que o usuário preencheu todos os campos e de repente resolve tocar a opção do select de Redes como está na figura. Porém, a opção Rede 2 NÃO possui Regiões Cadastradas ainda. No entanto, note que todos os campos abaixo estão preenchidos e isso não negaria um possível submit do form com dados errados? Ainda, imagine a situação onde a opção Rede 2 POSSUI outas Regiões Cadastradas o que comprometeria a escolha dos selects que seguem Como contornar esse problema?
  2. Carcleo

    Conexão com a INTERNET no Android Studio

    Olá, tenho o form abaixo onde eu leio um json à partir de um endereço na web http://www.hotplateprensas.com.br/ws/clientest.php que me entrega uma string json do tipo { "clientes":[ { "idClientesT":"1", "tipo":"s", "nome":"Carlos"}, { "idClientesT":"2", "tipo":"s", "nome":"Rogério" } ] } Então, pego ela no AndroidStudio com a Activity abaixo: package carcleo.com.radiosingular; import android.os.Bundle; import android.os.StrictMode; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import carcleo.com.radiosingular.classes.JsonClass; public class form extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.form); } public void listaClientes (View View) { if (android.os.Build.VERSION.SDK_INT > 9){ StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } String url = "http://hotplateprensas.com.br/ws/clientest.php"; JsonClass json = new JsonClass(); JSONObject clientesLista = json.getJSONFromUrl(url); clientes(clientesLista); } public void clientes(JSONObject jsonCli) { try { JSONArray arrayPlanetas = jsonCli.getJSONArray("clientes"); for (int i = 0; i < arrayPlanetas.length(); i++) { JSONObject cliente = arrayPlanetas.getJSONObject(i); Log.d("idClientesT", cliente.getString("idClientesT")); Log.d("tipo", cliente.getString("tipo")); Log.d("nome", cliente.getString("nome")); } } catch (JSONException e) { e.printStackTrace(); } } } Esse código funciona normalmente.Porém, é preciso colocar o trecho de código abaixo; if (android.os.Build.VERSION.SDK_INT > 9){ StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } Senão, a conexão com a internet NÃO é estabelecida. No entanto, eu já adicionei a permissão de acesso à INTERNET no AndroidManifest. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="carcleo.com.radiosingular"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".login"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".principal" /> <activity android:name=".form" /> <activity android:name=".retrofit" /> </application> </manifest> Mas não adianta. Se eu retirar esse bloco de código if (android.os.Build.VERSION.SDK_INT > 9){ StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } A conexão com a INTERNET não acontece. O problema é que quantas vezes eu precisar acessar à INTERNET será o mesmo número de vezes que terei que fazer uso desse trecho de código? Será que não existe um arquivo de configuração geral para isso no AndroidStudio?
  3. Carcleo

    Buffering em MediaPlayer

    Tenho um objeto MediaPlayer mPlayer = new MediaPlayer(); Objetivo: Tocar o Streaming de uma Web Rádio e funciona corretamente. Porém, quando clico em Play, leva um tempo até que a Rádio Web comece a tocar. Existe alguma forma de enquanto o streaming estiver carregando, eu pegar o percentual para passar para uma SeekBar por exemplo?, Como? Segue o que eu já fiz: package carcleo.com.player; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.ProgressDialog; import android.app.TaskStackBuilder; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.os.AsyncTask; import android.os.Build; import android.support.annotation.RequiresApi; import android.support.v4.app.NotificationCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.SeekBar; import android.widget.TextView; import java.io.IOException; public class player extends AppCompatActivity implements OnBufferingUpdateListener{ private MediaPlayer mPlayer; private String URL; private Button btnPlayPause; private Boolean conexao = false; private SeekBar sb; private TextView textView; private TextView textView2; private TextView textView3; private NotificationManager mNotificationManager; private AudioManager audioManager; private ProgressDialog progressDialog; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.player); sb = findViewById(R.id.seekBar); textView = findViewById(R.id.textView); textView2 = findViewById(R.id.textView2); textView3 = findViewById(R.id.textView3); progressDialog = new ProgressDialog(this); btnPlayPause = (Button) findViewById(R.id.btnPlayPause); btnPlayPause.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { tocaPausa(); } catch (IOException e) { e.printStackTrace(); } } }); configuraAudioManager(); } private void tocaPausa() throws IOException { if (conexao == true) { if (!mPlayer.isPlaying()) { mPlayer.start(); btnPlayPause.setBackgroundResource(R.drawable.pause); } else { mPlayer.pause(); btnPlayPause.setBackgroundResource(R.drawable.play); } } else { String url = "rtsp://cdn-the-2.musicradio.com:80/LiveAudio/Capital"; // your URL here new Play().execute(url); } } private void configuraAudioManager() { audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); int volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); sb.setMax(maxVolume); sb.setProgress(volume); sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, AudioManager.FLAG_SHOW_UI); Double total = progress * 6.666666666666667; String valor =Integer.toString(Integer.valueOf(total.intValue())); textView.setText(valor+" %"); } @Override public void onStartTrackingTouch(SeekBar seekBar) {} @Override public void onStopTrackingTouch(SeekBar seekBar) {} }); } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) private void notificacao (){ NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.home) .setContentTitle("Rádio Capital") .setContentText("Agora deu"); Intent resultIntent = new Intent(this, player.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(player.class); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(resultPendingIntent); mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(1, mBuilder.build()); } private void contaBuffer () { textView2.setText(Integer.toString(mPlayer.getDuration())); mPlayer.setOnBufferingUpdateListener( new MediaPlayer.OnBufferingUpdateListener() { public void onBufferingUpdate(MediaPlayer mp, int percent) { double ratio = percent / 100.0; int bufferingLevel = (int)(mp.getDuration() * ratio); sb.setSecondaryProgress(bufferingLevel); textView2.setText(Integer.toString(bufferingLevel)); } } ); } public void mostraBuffer() { mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END){ progressDialog.dismiss(); return true; } else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START){ progressDialog.show(); } return false; } }); } }); } @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { textView3.setText(Integer.toString(percent)); } class Play extends AsyncTask<String, Void ,Boolean > { @Override protected void onPreExecute() { btnPlayPause.setBackgroundResource(R.drawable.carregando); btnPlayPause.setEnabled(false); } @Override protected Boolean doInBackground(String... params) { try { mPlayer = new MediaPlayer(); mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mPlayer.setDataSource(params[0]); mostraBuffer(); mPlayer.prepare(); // might take long! (for buffering, etc) return true; } catch (IOException e) { e.printStackTrace(); } return false; } @Override protected void onPostExecute(Boolean result) { if (result == true){ btnPlayPause.setEnabled(true); mPlayer.start(); conexao = true; btnPlayPause.setBackgroundResource(R.drawable.pause); contaBuffer(); } else { conexao = false; } } } }
  4. Carcleo

    Campos sobrepostos e gira e some botão

    Boa Noite! Estou iniciando na arte do Android Studio e estou apanhando bastante e venho em busca de ajuda. Tenho um formulário (Activity) de login. 2 campos: login e senha e 1 botão Quando compilo os campos ficam um sobre o outro. Eis o xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Login"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="LOGON" tools:layout_editor_absoluteX="162dp" tools:layout_editor_absoluteY="16dp" /> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" android:text="Usuário" tools:layout_editor_absoluteX="83dp" tools:layout_editor_absoluteY="61dp" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" tools:layout_editor_absoluteX="80dp" tools:layout_editor_absoluteY="129dp" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Login" tools:layout_editor_absoluteX="147dp" tools:layout_editor_absoluteY="201dp" /> </android.support.constraint.ConstraintLayout> E o .java package carcleo.com.cadastrodeclientes; import android.app.Activity; import android.os.Bundle; public class Login extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); } } O que estou errando?
  5. Carcleo

    conexão remota não funciona. Só local

    O erro estava em que na variável que abriga o DSN NÃO pode haver quebras de linha. Soução: new PDO( "mysql:host=".self::$hostname.";dbname=". self::$dbname, self::$username, self::$password, $opcoes);
  6. Carcleo

    conexão remota não funciona. Só local

    Estou recebendo esse erro do servidor ao tentar conectar via PDO com o mysql no link abaixo http://funerariasaopedro.net.br/crud/ Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)' in /var/www/html/funerariasaopedro.net.br/web/crud/_conexao/Conexao.php:33 Stack trace: #0 /var/www/html/funerariasaopedro.net.br/web/crud/_conexao/Conexao.php(33): PDO->__construct('mysql:?????????...', 'carcleo', 'teste') #1 /var/www/html/funerariasaopedro.net.br/web/crud/cadastraPlanos.php(9): CONEXAO\Conexao->__construct() #2 /var/www/html/funerariasaopedro.net.br/web/crud/index.php(27): require_once('/var/www/html/f...') #3 {main} thrown in /var/www/html/funerariasaopedro.net.br/web/crud/_conexao/Conexao.php on line 33 Classe de conexão: <?php namespace CONEXAO; use PDO; class Conexao { private static $conexao; private static $hostname = "server"; private static $port = 3306; private static $dbname = "db"; private static $username = "user"; private static $password = "senha"; public function __construct() { if (isset(self::$conexao)) { self::$conexao = self::$conexao; } else { try { self::$conexao = new PDO('mysql: host='.self::$hostname.'; port= '.self::$port.'; dbname='.self::$dbname, self::$username, self::$password ); } catch (Exception $e) { self::$conexao = NULL; echo $e->getMessage(); } } } public function abreConexao() { return self::$conexao; } public function fechaConexao () { if (self::$conexao != null) { self::$conexao = null; } } } O que pode ser isso? Obs.: O mesmo código localmente funciona e os dados de conexão estão corretos no servidor. As senhas do servidor já foram testadas ok. A classe abaixo, com os mesmos dados, funciona: <?php class Conexao { private $host = "server"; private $user = "user"; private $password = "senha"; private $db = "db"; private $conexao; public function abreConexao() { if (isset($this->conexao)) { return $this->conexao; } else { $this->conexao = new mysqli($this->host, $this->user, $this->password, $this->db); $this->conexao->set_charset("utf8"); return $this->conexao; } } public function fechaConexao () { if ($this->conexao != null) { $this->conexao = null; } } } ?>
  7. Carcleo

    Como tratar (esse tipo de) redirecionamento no .htaccess?

    RewriteEngine On RewriteBase /crud/ # TODAS URLS CAEM NO INDEX. RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^([^/]*)$ index.php [L] # SE POR ACASO, A URL FOR manutencao.php, LIBERA ACESSO A ELA # NESSE CASO, FICA ÓBVIO QUE PARA TODAS AS PÁGINA PRECISARÁ HAVER UM REDIRECIONAMENTO # À manutenção.php. SENÃO, NÃO FUNCIONARÁ! RewriteCond %{HTTP_HOST} ^manutencao.php [NC] RewriteRule ^(.*)$ manutencao.php/$1 [L,R=301] # ROTAS DE ERROS ErrorDocument 401 http://localhost/crud/401.php ErrorDocument 403 http://localhost/crud/403.php ErrorDocument 404 http://localhost/crud/404.php ErrorDocument 500 http://localhost/crud/500.php
  8. Tenho o arquivo .htaccess abaixo: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /crud/ #acessa as requisições abaixo #se for um arquivos vazio RewriteCond %{REQUEST_FILENAME} -s [OR] #ou se for um link de referência (simbólico) RewriteCond %{REQUEST_FILENAME} -l [OR] #ou se for um diretório RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^(.) index.php </IfModule> Na minha classe de Constantes (.php), tenho uma constante: static private $livre = false; E no construtor da classe eu faço a verificação da condição de $livre public function __construct($_util) { if(self::$livre == false) { header("Location: ".$_SERVER["SERVER_PATH"]."/crud/manutencao.php"); exit; } Acontece que quando $livre = true; funciona bem; Porém, quando: $livre = false; não consigo chegar ao arquivo de manutenção como está na classe. Isto é, dá erro de muitas tentativas: Esta página não está funcionando Redirecionamento em excesso por localhost Tente limpar os cookies. ERR_TOO_MANY_REDIRECTS Acho que preciso fazer uma tratativa no arquivo .htaccess para validar a condição de $livre também. Algo como: if ($livre == false) manutenção.php else index.php Mas não sei como fazer isso uma vez que existe no .htaccess a regra dizendo que todas requisições chegarem no index.php;
  9. Carcleo

    conexão remota não funciona. Só local

    Fiz a conexão PDO com mysql conforme abaixo baseado no teu código: $dsn = 'mysql:host=' . self::$hostname . '; dbname=' . self::$dbname; $opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'); self::$conexao = new PDO( $dsn, self::$username, self::$password, $opcoes ); que funciona perfeitamente. Mas se eu colocar o conteúdo da variável $dsn junto à string de conexão conforme abaixo dá erro que me parece ser de concatenação. Por favor me ajuda a descobrir onde está esse erro? $opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'); self::$conexao = new PDO( "mysql: host=" . self::$hostname . "; dbname=" . self::$dbname, self::$username, self::$password, $opcoes );
  10. Carcleo

    conexão remota não funciona. Só local

    Vou ver e já posto retorno!
  11. Carcleo

    conexão remota não funciona. Só local

    mesmo assim não dá certo. Lembrando que sem PDO funciona normalmente. Isto é: new mysqli(...) ]com os mesmos dados de coeexao.
  12. Carcleo

    conexão remota não funciona. Só local

    Sem a porta eu já tentei e deu erro também. Vou contatar o servidor do UOL HOST e ver como eles qual a porta que eles usam
  13. Carcleo

    Erro na listagem com PDO

    Sim. Mas já já chego lá. Vou usar composer sim.
  14. Carcleo

    Erro na listagem com PDO

    Estou tentando aprender PDO mas estou tendo dificuldades. Tenho 3 arquivos: Planos.php <?php namespace PLANOS; use TABELAS\Tabelas; require_once "Tabelas.php"; class Planos extends Tabelas { public function __construct ($_conexao, $_tabela) { parent::__construct ($_conexao, $_tabela); } } ?> Tabelas.php <?php namespace TABELAS; abstract class Tabelas { private $conexao; private $tabela; private $ultimoCadastrado; public function __construct($_conexao, $_tabela) { $this->conexao = $_conexao; $this->tabela = $_tabela; } public function cadastrar (array $objeto) { $parametros = $valores = ""; foreach ($objeto as $objeto=>$valor): $parametros.= $objeto.","; $valores.= "'".$valor."',"; endforeach; $parametros = substr($parametros,0, -1); $valores = substr($valores,0, -1); $sql = "INSERT INTO ".$this->tabela." (".$parametros.") VALUES (".$valores.")"; $query = $this->conexao->prepare($sql); $execucao = $query->execute(); $this->ultimoCadastrado = $this->conexao->lastInsertId(); return $execucao; } public function ultimoIdCadastrado () { return $this->ultimoCadastrado; } public function editar (array $objeto, $id) { $str = ""; foreach ($objeto as $objeto=>$valor): $str .= $objeto ."='". $valor."',"; endforeach; $str = substr($str, 0, -1); $sql = "UPDATE ".$this->tabela." SET ".$str." WHERE id".ucfirst($this->tabela)."=".$id; $query = $this->conexao->prepare($sql); return $query->execute(); } public function bloquear ($id, $bloqueado) { $sql = "UPDATE ".$this->tabela." SET bloqueado = '".$bloqueado."' WHERE id".$this->tabela." = ".$id; $query = $this->conexao->prepare($sql); return $query->execute(); } public function excluir ($id) { $sql = "DELETE FROM ".$this->tabela." WHERE id".$this->tabela." = ".$id; $query = $this->conexao->prepare($sql); return $query->execute(); } public function listar () { $sql = "SELECT FROM ".$this->tabela; $query = $this->conexao->prepare($sql); $query->execute(); return $query->fetch( PDO::FETCH_ASSOC ); } public function listarId ($id = null) { $sql = "SELECT FROM ".$this->tabela; if ($id != null) $sql .= " WHERE id".ucfirst($this->tabela)."=".$id; $query = $this->conexao->prepare($sql); return $query->execute(); } public function listarParametros ($where) { $sql = "SELECT FROM ".$this->tabela." ".$where; $query = $this->conexao->prepare($sql); return $query->execute(); } } ?> Index.php <?php ini_set("display_errors",true); ini_set("display_startup_erros",1); error_reporting(E_ALL | E_NOTICE | E_STRICT); use PLANOS\Planos; use TABELAS\Tabelas; $conexao = new PDO('mysql:host=localhost;dbname=funeraria2', 'root', 'mysql'); $objeto = array ( "tipo" => 's', "nome" => "Carlos", "login" => "caca", "senha" => "1234", "bloqueado" => "n" ); $objeto2 = array ( "idAdministradores" => 3, "tipo" => 's', "nome" => "Castro", "login" => "abcd", "senha" => "4321", "bloqueado" => "s" ); require_once "Planos.php"; $planos = new Planos($conexao, "administradores"); echo $planos->cadastrar($objeto) ? 1 : 2; echo "<br />"; echo $planos->ultimoIdCadastrado(); echo "<br />"; echo $planos->editar($objeto2, 3) ? 1 : 2; echo "<br />"; echo $planos->bloquear(3, 's') ? 1 : 2; echo "<br />"; echo $planos->excluir(4) ? 1 : 2; echo "<br />"; print "<pre>"; print_r($planos->listar()); print "</pre>"; echo $planos->listar() ? 1 : 2; echo "<br />"; echo $planos->listarId(1) ? 1 : 2; echo "<br />"; echo $planos->listarParametros("WHERE nome = 'Carlos'") ? 1 : 2; echo "<br />"; ?> Quando rodo esse script recebo o erro abaixo: Fatal error: Uncaught Error: Class 'TABELAS\PDO' not found in D:\Trabalhos\host\htdocs\crud\Tabelas.php:102 Stack trace: #0 D:\Trabalhos\host\htdocs\crud\index.php(47): TABELAS\Tabelas->listar() #1 {main} thrown in D:\Trabalhos\host\htdocs\crud\Tabelas.php on line 102 Mas não consigo achar que erro é esse! Engraçado é que só não está fazendo leitura. Mas gravação, exclusão, edição, normal!
  15. Carcleo

    Erro na listagem com PDO

    namespace precisa vir primeiro né? Faltou o use PDO na classe Tabelas.
  16. Carcleo

    Mudar pasta htdocs

    Ok! Não sei porque. Mas após a quarta reinicialização do windows o Apache atualizou o DirectoryRoot Obrigado a todos que quebraram suas cabeças tentando entender o problema!
  17. Carcleo

    Mudar pasta htdocs

    Pessoal, estou lendo muito por ai, inclusive páginas em inglês. Mas nenhuma explicação dá certo. Ou dá certo e está faltando alguma coisa. Estou querendo mudar a localização da pasta htdocs do Apache 24 para o disco. D Então eu fiz: #DocumentRoot "D:\Trabalhos\host\htdocs" #<Directory "D:\Trabalhos\host\htdocs"> DocumentRoot "C:\Program Files\Apache24\Apache24\htdocs" <Directory "C:\Program Files\Apache24\Apache24\htdocs"> Pelo que podem ver as linhas antigas eu comentei. Mas também fiz só com as novas. DocumentRoot "C:\Program Files\Apache24\Apache24\htdocs" <Directory "C:\Program Files\Apache24\Apache24\htdocs"> Resultado? Quando vou ver no phpinfo(): DOCUMENT_ROOT C:/Program Files/Apache24/Apache24/htdocs SIM: Eu reinicie o Apache primeiramente. Como não funcionou, reiniciei o windows: Nada! Continua no mesmo lugar! Falta aletrar algum outro local será?
  18. Carcleo

    classe não abre

    não é isso. Eu alterei os dados para postar aqui. E faltou fechar! Adicionei dados à pergunta. Sá uma olhada afazendo favor!
  19. Carcleo

    classe não abre

    Minha estrutura localhost/sistema localhost/sistema/.htaccess localhost/sistema/composer.json localhost/sistema/composer.lock localhost/sistema/composer.phar localhost/sistema/App localhost/sistema/App/mvc/ localhost/sistema/App/mvc/Controles localhost/sistema/App/mvc/Controles/Planos.php localhost/sistema/App/mvc/Modelos localhost/sistema/App/mvc/Modelos/Planos.php localhost/sistema/App/mvc/Vistas localhost/sistema/App/mvc/Vistas/Conexao.php localhost/sistema/App/mvc/Vistas/Planos.php localhost/sistema/vendor localhost/sistema/public localhost/sistema/public/index.php Planos.php Controles <?php namespace CONTROLES; use MODELOS\Planos; class Planos { private $conexao; public function __construct ($_conexao) { $this->conexao = $_conexao; } public function alteraPlano ($plano) { $string = "UPDATE planos SET nome ='".$plano->getNome()."', descricao = '".$plano->getDescricao()."' WHERE idPlano = ".$plano->getIdPlano(); return $this->conexao->query($string); } public function excluir ($idPlano) { // CHAVE ESTRANGEIRA E ON DELETE CASCADE ATIVADO NO BANCO $string = "DELETE FROM planos WHERE idPlano = ".$idPlano; /* DA FORMA ABAIXO É SOMENTE QUANDO NÃO CONFIGUROU O DELETE CASCADE NO BANCO $string = "DELETE planos, fotos FROM planos LEFT JOIN fotos ON planos.idPlano = fotos.idPlano WHERE planos.idPlano = ".$idPlano; */ return $this->conexao->query($string); } public function cadastrar ($plano) { $string = "INSERT INTO planos ( nome, descricao ) VALUES ( '".$plano->getNome()."', '".$plano->getDescricao()."' ) "; return $this->conexao->query($string); } public function ultimoIdCadastrado () { return $this->conexao->insert_id; } public function pesquisaPlano($idPlano) { $plano = null; $string = "SELECT idPlano, nome, descricao FROM planos WHERE idPlano = ".$idPlano; $registros = $this->conexao->query($string); $quantasLinhas = $registros->num_rows; if ($quantasLinhas > 0) { list ($idPlano, $nome, $descricao) = $registros->fetch_row(); $plano = new Planos($nome, $descricao); $plano->setIdPlano($idPlano); } return $plano; } public function pesquisaPlanos($where = NULL) { $planos = null; $string = "SELECT idPlano, nome, descricao FROM planos ".$where; $registros = $this->conexao->query($string); $quantasLinhas = $registros->num_rows; if ($quantasLinhas > 0) { while (list ($idPlano, $nome, $descricao) = $registros->fetch_row()) { $plano = new Planos($nome, $descricao); $plano->setIdPlano($idPlano); $planos[] = $plano; } } return $planos; } } ?> Planos.php Modelos <?php namespace MODELOS; class Planos { private $idPlano; private $nome; private $descricao; public function __construct ( $_nome, $_descricao) { $this->nome = $_nome; $this->descricao = $_descricao; } public function setIdPlano ($_idPlano) { $this->idPlano = $_idPlano; } public function getIdPlano () { return $this->idPlano; } public function getNome () { return $this->nome; } public function getDescricao() { return $this->descricao; } } ?> Planos.php Vistas <?php namespace VISTAS; use CONTROLES\Planos as PC; use MODELOS\Planos as PM; class Planos { private $conexao; public function __construct ($_conexao) { $this->conexao = $_conexao; } public function getPlanos () { $planos = new PC($this->conexao); $todos = $planos->pesquisaPlanos(); foreach ($todos as $plano) : echo $plano->getNome()."<br />"; endforeach; } } index.php public <?php ini_set("display_errors",true); ini_set("display_startup_erros",1); error_reporting(E_ALL && E_NOTICE && E_STRICT); require_once "../App/mvc/Vistas/Conexao.php"; require_once "../vendor/autoload.php"; $conecta = new Conexao(); $conexao = $conecta->abreConexao(); $planos = new Planos($conexao); print_r($planos->getPlanos()); ?> e composer.json { "require" : { "php" : "^5.5 || ^7.0", "ext-mbstring": "*" }, "authors": [ { "name": "Carlcleo", "email": "carcleo@oi.com.br", "role": "Desenvolvedor" }], "autoload": { "classmap": ["App"] } } Quando rodo index.php da erro de servidor. Fatal error: Uncaught Error: Class 'CONTROLES\Planos' not found in C:\Program Files\Apache24\Apache24\htdocs\mvc\App\mvc\Vistas\Planos.php:18 Stack trace: #0 C:\Program Files\Apache24\Apache24\htdocs\mvc\public\index.php(16): VISTAS\Planos->getPlanos() #1 {main} thrown in C:\Program Files\Apache24\Apache24\htdocs\mvc\App\mvc\Vistas\Planos.php on line 18 Onde estou errando? Pode acompanhar em: http://funerariasaopedro.net.br/mvc Adicionando autoload_classmap: <?php // autoload_classmap.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( 'CONTROLES\\Planos' => $baseDir . '/App/mvc/Controles/Planos.php', 'MODELOS\\Planos' => $baseDir . '/App/mvc/Modelos/Planos.php', 'VISTAS\\Planos' => $baseDir . '/App/mvc/Vistas/Planos.php', );
  20. Carcleo

    classe não abre

    Então, consegui entender e deu certo as namespaces. Mas agora estou com problema na hora de fazer busca no banco; Tenha a classe de conexão: <?php namespace CONEXAO; use Mysqli; class Conexao { private $host = "localhost"; private $user = "user"; private $password = "senha" ; private $db = "db"; private $conexao; public function abreConexao() { if (isset($this->conexao)) { return $this->conexao; } else { $this->conexao = new mysqli($this->host, $this->user, $this->password, $this->db); $this->conexao->set_charset("utf8"); return $this->conexao; } } public function fechaConexao () { if ($this->conexao != null) { $this->conexao = null; } } } ?> E a classe que a chama: Planos.php <?php namespace VISTAS; use CONTROLES\Planos as PC; use MODELOS\Planos as PM; class Planos { private $conexao; public function __construct ($_conexao) { $this->conexao = $_conexao; } public function getPlanos () { $planos = new PC($this->conexao); $todos = $planos->pesquisaPlanos(); foreach ($todos as $plano) : echo $plano->getNome()."<br />"; endforeach; } } E uma index que chama a classe Planos.php <?php use VISTAS\Planos; use CONEXAO\Conexao; require_once "../vendor/autoload.php"; $conecta = new Conexao(); $conexao = $conecta->abreConexao(); $planos = new Planos($conexao); print_r($planos->getPlanos()); ?> A questão do namespace funciona normal agora. Mas query() do mysqli está retornando valor vazio embora a tabela tenho 10 registros que satisfazem a consulta. Confirmei direto no mysql. O que pode star acontecendo? Experimentei fazer print_r($this->conexao); Para saber o que retrinava e retornou a conexao: mysqli Object ( [affected_rows] => 0 [client_info] => mysqlnd 5.0.12-dev - 20150407 - $Id: b396954eeb2d1d9ed7902b8bae237b287f21ad9e $ [client_version] => 50012 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array ( ) [field_count] => 0 [host_info] => localhost via TCP/IP [info] => [insert_id] => 0 [server_info] => 5.7.20-log [server_version] => 50720 [stat] => Uptime: 9012 Threads: 1 Questions: 169 Slow queries: 0 Opens: 113 Flush tables: 1 Open tables: 106 Queries per second avg: 0.018 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 64 [warning_count] => 0 )mysqli Object ( [affected_rows] => 0 [cli
  21. Carcleo

    classe não abre

    Então, enquanto você respondia eu estava editando a pergunta. Pode dar uma outra olhada fazendo favor?
  22. Carcleo

    Falha ao final do slide show

    sim mas a minha dúvida ainda continua. veja: O detalhe é: 1) Abrir a página e, pelos próprios, HTML e CSS, abrir de imediato o primeiro slide 2 ) Chamar a função e começar a verificação 3) Achar o próximo elemento da div lider. 4) Preciso retirar da div slide a NAV via código. Isso está sendo mais dificil. Por favor dê mais olhada no linlk que eu retirei o NAV mesmo assim continua não dando certo. http://funerariasaopedro.net.br/novo/index3.php
  23. Carcleo

    Falha ao final do slide show

    Estou tentando fazer um slide show personalizado para fins de aprendizagem. Avancei bastante já. Porém estou tendo um erro do qual não estou conseguindo me livrar. O slide corre bem, mas quando chega na ultima imagem, ele acha uma imagem em branco e bota ela no lugar em que deveria ser exibida a primeira imagem novamente. Cada imagem do slide tem uma legenda feito com um label e ambos dentro de uma div. O link abaixo mostra o slide em funcionamento. http://funerariasaopedro.net.br/novo/index6.php Vou postar abaixo o código completo. Se alguém puder me ajudar desde já agradeço. CSS <style> * { margin: 0; padding: 0; } .fade { -webkit-animation-name: fade; -webkit-animation-duration: 1.5s; animation-name: fade; animation-duration: 1.5s; } div.slider { overflow: hidden; position: relative; width: 100vw; height: 300px; } div.slider:hover { animation-play-state: paused; } div.slider > div.slide { display: none; position: absolute; top: 0; left: 0; width: 100%; height: auto; } div.slider div.slide img { width: 100%; } div.slider div.ativa { display: block; } div.slider div.ativa img { animation: slider 1s linear; animation-fill-mode: forwards; } div.slider div.ativa img:hover { -moz-transition: all 0.3s; -webkit-transition: all 0.3s; transition: all 0.3s; } @keyframes slider { 0% { transform: scale(1); } 100% { transform: scale(1.1); } } @-webkit-keyframes fade { from { opacity: .4 } to { opacity: 1 } } @keyframes fade { from { opacity: .4 } to { opacity: 1 } } div.slider div.slide span { position: absolute; width: 100%; line-height: 40px; bottom: 0; z-index: 500; color: rgb(255,255,255); text-align: center; } div.slider nav { position: absolute; bottom: 0; width: 100%; height: 40px; background-color: rgb(0, 0, 0, .5); z-index: 400; text-align: center; } div.slider nav button.anterior, div.slider nav button.proximo { position: absolute; width: 100px; height: 40px; text-align: center; } div.slider nav button.anterior { left: 10%; } div.slider nav button.proximo { right: 10%; } div.slider nav button.proximo label { top: calc(50%-20px); } </style> JAVASCRIT <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> $(document).ready(function(e) { //$("div.slider").height($("div.slider div.slide").height()) const blocos = $("div.slider div.slide"); function startslider() { ativa = $("div.slider div.ativa") if (!$(ativa).next().length) { ativa = blocos[0] } $(ativa) .removeClass("ativa") .next() .addClass("ativa") setTimeout(startslider, 5000) } setTimeout(startslider, 5000) $("nav button.anterior").click(function(){ prev = $("div.slider div.ativa").prev(); // alert (blocos.length); prev = prev.length ? prev : blocos[ blocos.length - 1 ]; mostraBloco(prev); }) $("nav button.proximo").click(function(){ next = $("div.slider div.ativa").next(); next = next.length ? next : blocos[0]; mostraBloco(next); }) /* Função para exibir as imagens */ function mostraBloco(next) { ativa = $("div.slider div.ativa") $(ativa).removeClass("ativa") $(next).addClass("ativa") } }); </script> HTML <div class="slider"> <div class="slide fade ativa"> <img src="_img/_banner/_site/bg_1.jpg" /> <span>Este é 1</span> </div> <div class="slide fade"> <img src="_img/_banner/_site/bg_2.jpg" /> <span>Este é 2</span> </div> <div class="slide fade"> <img src="_img/_banner/_site/bg_3.jpg" /> <span>Este é 3</span> </div> <nav> <button class="anterior">Anterior</button> <button class="proximo">Próximo</button> </nav> </div>
  24. Carcleo

    Falha ao final do slide show

    por favor, dê uma olhada onde estou errando. Todos os códigos estão em uma só página. Pois não está dando certo de jeito algum! http://funerariasaopedro.net.br/novo/index6.php
  25. Carcleo

    Falha ao final do slide show

    Do jeito abaixo até funcionou. $(document).ready(function(e) { const blocos = $("div.slider div.slide"); function startslider(dir) { ativa = $(".slider .slide.ativa") //suponha ativa = div "Este é o 2" //então, $(ativa).next() aponta pra nav, o ultimo elemento if (!$(ativa).next().length) { //tem proximo elemento (a nav), nao cai aqui ativa = blocos[0] } $(ativa) .removeClass("ativa") //desativa slide atual .next() //nav .addClass("ativa") setTimeout(startslider, 2000); } setTimeout(startslider, 2000); }); No entanto, mesmo chamando a função novamente fora do seu bloco, o carro vai até o final das divs mas não volta ao começo!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.