Ir para conteúdo

POWERED BY:

Frank K Hosaka

Members
  • Total de itens

    224
  • Registro em

  • Última visita

Tudo que Frank K Hosaka postou

  1. Frank K Hosaka

    [Resolvido] salvar nova ordem do menu

    Estou começando a testar, mas a 2a. listagem escreveu @$VGT_posicoes = $_POST['recordsArray']; Vou testar sem o @. -------------------- Não estava conseguindo botar o menu selecionado no topo, eu alterei o JavaScript assim: function upNdown(direction){ rows = table.rows parent = rows[index].parentNode if(direction === "up"){ if(index!=0){parent.insertBefore(rows[index],rows[index - 1]);index--;}}} -------------------- Consegui resolver, mas eu tirei o botão descer para diminuir o código. <?php $ggCon=new mysqli("localhost","root","","astudy"); if(!isset($_POST['recordsArray'])){goto inicio;} else { $VGT_posicoes=$_POST['recordsArray']; foreach ($VGT_posicoes as $menu_order => $menu_nome) { mysqli_query($ggCon, "update tab_menu set menu_order=$menu_order where menu_nome='$menu_nome'");}} inicio:?> <form method=post> <table id=table style=border:1> <?php $sqlVF = mysqli_query($ggCon, "SELECT * FROM tab_menu ORDER BY menu_order ASC"); while($linha = mysqli_fetch_array($sqlVF)){ $menu_id= $linha['menu_id']; $menu_nome= $linha['menu_nome']; $menu_order= $linha['menu_order']; echo "<tr><td><input id='recordsArray_$menu_id' name=recordsArray[] value='$menu_nome' onclick=getSelectedRow()>";} ?> </table> <input type=submit value=Salvar> </form> <button onclick="upNdown('up');">&ShortUpArrow;</button> <script> function getSelectedRow(){ for(var i = 1; i < table.rows.length; i++){ table.rows[i].onclick = function(){ if(typeof index !== "undefined"){ table.rows[index].classList.toggle("selected");} index = this.rowIndex; this.classList.toggle("selected");};}} function upNdown(direction){ rows = table.rows parent = rows[index].parentNode if(direction === "up"){ if(index!=0){parent.insertBefore(rows[index],rows[index - 1]);index--;}}} </script>
  2. Frank K Hosaka

    Propriedade Depreciada

    Agora eu vi que se trata de uma interface, coisa que eu nunca havia mexido. Pelo manual do PHP, PHP: Object Interfaces - Manual, dá para ver que a minha sugestão não vai consolidar a sua interface, pelo contrário, só vai trazer aborrecimentos. Assim, eu peço desculpas.
  3. Frank K Hosaka

    erro no google-chrome ao gerar pdf com mpdf

    Hoje foi a primeira vez que usei o Mpdf. Os meus códigos em teste de PHP eu faço no diretório wamp64/www/astudy. Nesse diretório, executei o comando composer require mpdf/mpdf, e executei o meu primeiro código pelo Microsoft Edge e Chrome, e não tive nenhum contratempo. A versão do meu PHP 8.0.13. O código que eu usei foi esse: <?php // no diretório /wamp64/www/astudy, usei o comando composer require mpdf/mpdf require_once __DIR__.'/vendor/autoload.php'; $mpdf=new \Mpdf\Mpdf(); $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select * from tbprod limit 5"); $mpdf->WriteHTML('<table>'); while($row=$query->fetch_assoc()){ $mpdf->WriteHTML('<tr><td>'.$row['prod']); $mpdf->WriteHTML('<td align=right>'.$row['custo']);} $mpdf->WriteHTML('</table>'); $mpdf->Output();
  4. Frank K Hosaka

    Propriedade Depreciada

    Você usou o marcador <?php
  5. Frank K Hosaka

    Propriedade Depreciada

    Eu tirei a palavra private, e ficou assim: <?php class User { public $id; public $email; public $name; public $password; public $token; public function getId(){return $this->id;} public function getEmail(){return $this->email;} public function getName(){return $this->name;} public function getPassowrd(){return $this->password;} public function getToken(){return $this->token;}} function generationUser($array){ $u = new User(); $u->id = $array['id'] ?? 0; $u->email = $array['email'] ?? ''; $u->name = $array['name'] ?? ''; $u->password = $array['password'] ?? ''; $u->token = $array['token'] ?? ''; return $u;} $teste=generationUser(['id'=>1,'email'=>'frankhosaka@gmail.com','name'=>'frank','password'=>'root','token'=>'232323']); var_dump($teste); // resultado: C:\wamp64\www\astudy\index.php:26: object(User)[1] public 'id' => int 1 public 'email' => string 'frankhosaka@gmail.com' (length=21) public 'name' => string 'frank' (length=5) public 'password' => string 'root' (length=4) public 'token' => string '232323' (length=6)
  6. Frank K Hosaka

    Query gravando dados duplicado

    O problema não está no código, o problema está no banco de dados, você precisa consertá-lo. Não adianta mexer no código, se o banco de dados não está preparado para receber as informações. Para tornar um banco de dados funcional você precisa aplicar o princípio da atomização da informação. Você não pode colocar o compromisso, o serviço e o valor do serviço numa só tabela, você tem que separar tudo, para depois ajuntar. Um exemplo prático de atomização é esse daqui: João marcou consulta no dia 22. Logo a tabela agenda só pode ter apenas essa informação, não pode repetir tantas vezes para quantos dentes o João precisa tratar. Caso você ache pouco prático esse tipo de enfoque, melhor largar o MySQL, o PHP, e trabalhar com o Microsoft Excel, o Excel aceita qualquer coisa. Mas se você quiser apostar no banco de dados, aqui eu fiz um código bem básico que separa a agenda e os serviços prestados ao paciente: <!--mysql CREATE TABLE agenda (id int AUTO_INCREMENT, data date not null, paciente varchar(45) not null, PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=1; CREATE TABLE servicos (id int AUTO_INCREMENT, id_agenda int not null, servico varchar(45) not null, PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=1 --> <?php $pdo=new PDO('mysql:host=localhost;dbname=astudy','root',''); ?> <form> <div style="width:25%;margin:0 auto;margin-top:5%"><table> <tr><td><td>Agendamento <tr><td>Data:<td><input type=date name=data> <tr><td>Paciente:<td><input name=paciente> </table></div> </form> <?php if(isset($_GET['id_agenda'])){ $id_agenda=$_GET['id_agenda']; if(isset($_GET['limpeza'])){ $stm=$pdo->prepare("insert into servicos (id_agenda,servico) values ($id_agenda,'limpeza')"); $teste=$stm->execute(); if(!$teste){echo "problema";exit;}} if(isset($_GET['obturação'])){ $stm=$pdo->prepare("insert into servicos (id_agenda,servico) values ($id_agenda,'obturacao')"); $stm->execute();} exit;} if(!isset($_GET['data'])){exit;} $data=$_GET['data']; $paciente=$_GET['paciente']; $stm=$pdo->prepare("insert into agenda (data,paciente) values (?,?)"); $stm->execute([$data,$paciente]); $id_agenda=$pdo->lastInsertId(); ?> <form> <div style="width:25%;margin:0 auto;margin-top:5%"><table> <tr><td>Escolha os serviços para o paciente <?=$paciente?> <tr><td><input type=checkbox name=limpeza>Limpeza <tr><td><input type=checkbox name=obturação>Obturação <input type=hidden name=id_agenda value=<?=$id_agenda?>> <tr><td><input type=submit> </table></div> </form>
  7. Frank K Hosaka

    Query gravando dados duplicado

    Odontologia não é a minha praia, mas eu suponho que no dia a dia a coisa é assim João agenda para 22/03/2023 às 10 hs o implante do dente 14 de cima, o clareamento do dente 24 debaixo, a retirada do dente 13 de cima. O id_serviço do implante é 1, clareamento é 2 e retirada 3. O formulário deveria contemplar uma única agenda, com um único cliente e com vários serviços. Nesse caso, precisamos de duas tabelas: a agenda (o id_agenda, data-hora, o id_cliente) e o serviço (id_agenda, id_serviço,id_dente) Temos duas tarefas no banco de dados insert into tbagenda (horario,id_cliente) values ("2023-03-21 10:00",15) // 15 é o id do João. Vamos supor que o id_agenda que foi criado nesse processo seria 115, assim podemos seguir assim insert into tbservicosagendados (id_agenda, id_servico, id_dente) values (115,1,14C), (115,2,24B), (115,3,13C) Ou seja, precisariamos de dois formulários, um para abrir a agenda, e outra para cadastrar os serviços para essa agenda. Banco de dados é muito chato, para cada tipo de evento tem que ter um única tabela. Agenda é uma coisa. Cliente é outra coisa. Serviço é outra coisa. Cobrança é outra coisa. Mas quanto melhor você atribuir a responsabilidade de cada tabela melhor será produtivo a manutenção da informação.
  8. Frank K Hosaka

    Query gravando dados duplicado

    Testei o seu código JavaScript, usando esse código: <?php $pacie_id=1; $agen_id=1 ?> <script> var controleCampo = 1; function adicionarCampo() { controleCampo++; novocampo='<div id=campo' + controleCampo + '>' novocampo+='<input type=hidden name=pacie_id id=num_dente value=' + <?=$pacie_id?> + '>' novocampo+='<input type=hidden name=agen_id id=num_dente value=' + <?=$agen_id?> + '>' novocampo+='<Dente: <input name=num_dente >Obs: <input name=obs>Valor: <input name=valor>' novocampo+='<button onclick=removerCampo(' + controleCampo + ')> X </button></div>' formulario.insertAdjacentHTML('beforeend',novocampo)} function removerCampo(idCampo){document.getElementById('campo' + idCampo).remove();} </script> <input type=submit value=teste onclick=adicionarCampo()> <form id=formulario></form> É um código interessante, ele duplica o formulário com os mesmos campos e com os mesmos nome. O problema aqui é de lógica: se você já tem um formulário para cadastrar o dente, para que pedir para o JavaScript para duplicar o formulário?
  9. Frank K Hosaka

    Query gravando dados duplicado

    Já estou usando a nova versão, mas estou enfrentando problema com o formulário. Desconfio que ele usa o método GET, logo o comando correto para pegar todos os dados é: $dados = filter_input_array(INPUT_GET, FILTER_DEFAULT). Mesmo assim, eu não consigo pegar o valor de $_GET['pacie_id']. Eu desconfio que o problema está nos nomes dos campos, alguns você chama de "pacie_id" e outros de "obs[ ]". Não consigo enxergar o propósito de dar o nome simples a alguns campos <input> e nome de vetores para outros <input>. Para prosseguir no meu estudo, vou dar nome simples para todos <input>, e ver se consigo enxergar o propósito do código.
  10. Frank K Hosaka

    Query gravando dados duplicado

    A sua listagem é parcial, mas eu consegui improvisar alguma coisa. Eu não consigo é improvisar o botão + que você menciona na sua mensagem e nem a variável $dados[cad_atend] e $dados[num_roda]. Tem jeito de mostrar como eles aparecem no seu código?
  11. Frank K Hosaka

    Consulta com CURTIME não estou conseguindo

    Agora, já temos material para trabalhar. Nessa tabela que você apresentou não existem os campos data_inicio, hora_inicio e hora_final que você comentou no começo do debate. Assim, tenho que readaptar a consulta. Se eu pedir select * from agendamento where data_inicial = curdate() Isso não vai retornar nada, pois a data_inicial foi definido como datetime e curdate( ) é uma função que só trabalha com data. Para ajustar a informação da tabela com a função curdate( ), o novo comando seria assim: select * from agendamento where date(data_inicial) = curdate() Por outro lado, essa tabela agendamento tem muitas informações que não dá para colocar na unha. Seria necessário no mínimo um código em PHP para poder registrar os eventos. Você tem aí o código PHP?
  12. Frank K Hosaka

    Consulta com CURTIME não estou conseguindo

    O resultado não bate. Eu defini a tabela tabela assim: CREATE TABLE `tabela` ( `id` int NOT NULL, `data_inicio` date DEFAULT NULL, `hora_inicio` datetime DEFAULT NULL, `hora_final` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci com esses dados: id data_inicio hora_inicio hora_final 1 2023-03-18 2023-03-17 00:00:00 2023-03-17 13:00:00 2 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 e o resultado foi o mesmo para select * from tabela where data_inicio = curdate() order by hora_inicio asc; select * from tabela where data_inicio = curdate() and hora_final order by hora_inicio asc; select * from tabela where data_inicio = curdate() and hora_final + 05 order by hora_inicio asc; Tem jeito de você colocar a estrutura de dados da tabela, bem como alguns registros?
  13. Frank K Hosaka

    Consulta com CURTIME não estou conseguindo

    E qual é o resultado indesejado que aparece na tela?
  14. Frank K Hosaka

    mysql desabilitar ou remover paginação

    Eu uso MySQL Workbench, ele usa a barra deslizante para mostrar as tabelas. O problema é que eu só tenho 14 tabelas, e eu acho que é muito. Não consigo imaginar como é possível alguém ter mais de 14 tabelas num só banco de dados.
  15. Frank K Hosaka

    Inserir dados formulario no BD

    Boa tarde, Maurício, O primeiro problema é o <input name=status type=checkbox value="ativo"> O valor do checkbox é "on" ou "off", logo, no lugar do value="ativo" o correto é checked ou unchecked. Você precisa ver se o campo status da tabela faq foi definido como varchar(3). O segundo problema é o session_start(); Não vejo nenhuma necessidade de usar a session para mandar mensagem ao usuário, isso pode ser feito diretamente na rotina de inclusão do registro, assim: astudy.php <div style=height:5%></div> <div style="width:50%;margin:0 auto"> <form method=POST> <input name=pergunta placeholder="Digite a Pergunta"> <p><textarea name=resposta rows=3 placeholder="Digite uma Resposta"></textarea> <p>status<input name=status type=checkbox checked> <p><input type=submit value=Cadastrar> </form> </div> <?php if(!isset($_POST['pergunta'])){exit;} $pergunta=filter_input(INPUT_POST,'pergunta'); $resposta=filter_input(INPUT_POST,'resposta'); $status= filter_input(INPUT_POST,'status'); $mysqli=new mysqli("localhost","root","","astudy"); // usei no lugar de include 'conexao.php'; $query=$mysqli->query("insert into faq (pergunta, resposta, status, created) values ('$pergunta','$resposta','$status',NOW())"); echo ($query) ? "Cadastrado com sucesso!" : $mysqli->error; echo "<input type=submit value=Voltar onclick=location.replace('astudy.php')>";
  16. Frank K Hosaka

    Problema ao gerar array bidimensional dinamicamente.

    Consegui fazer o código funcionar, criei dois arquivos no mesmo diretório: listar.json [{"operador":"joao", "latitude":-27.1473854, "longitude":-48.5860981}, {"operador":"pedro", "latitude":-27.1473792, "longitude":-48.5860866}, {"operador":"jose", "latitude":-27.1474019,"longitude":-48.586126}, {"operador":"lucas", "latitude":-27.1473818, "longitude":-48.5860942}] astudy.html <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script> <script> function carregaPontos() { var pontos = []; $.ajax({ method: "GET", url: "listar.json", dataType:'json', success: function(response) { if (response.length > 0) { let rows = response.length; let columns = 3; console.log(rows) // creating two-dimensional array for (let i = 0; i < rows; i++) { pontos[i] = []; for (let j = 0; j < columns; j++) { if (j === 0) { pontos[i][j] = response[i].operador; } else if (j === 1) { pontos[i][j] = parseFloat(response[i].latitude); } else if (j === 2) { pontos[i][j] = parseFloat(response[i].longitude);}}} console.log(pontos); return pontos;} }, error: function(jqXHR) { alert('Erro ' + jqXHR.status + " Não foi possível carregar os pontos!");}})} </script> <body onload=carregaPontos()> Só alterei a URL e acrescentei o dataType.
  17. Frank K Hosaka

    Problema ao gerar array bidimensional dinamicamente.

    Isso daí é bem difícil, eu também não estou conseguindo. Mudei o url para url: "listar.php", e criei um arquivo listar.php com isso ['joao', -27.1473854, -48.5860981] o comando response.length devolve todo o tamanho da string, quando acredito que o ideal era contar os arrays que contém o response. Para o JavaScript entender que o response é um conjunto de array, tentei usar a função response=response.split(","). Mas o grande abacaxi é a montagem do array. Lá tem coisa do tipo response[i].operador; ou seja, o response é tratado como se fosse um json e não um array. Eu fiquei perdido, espero que você tenha mais sorte.
  18. Frank K Hosaka

    Dois resultados numa mesma condição

    join - SQL: How to create two fields based on same field from another table? - Stack Overflow usuario.id=1 usuario.nome="Frank" postagem.id=1 postagem.autor=1 postagem.editor=1 select a.id as postagem, u.nome as autor, u.nome as editor from usuario u inner join postagem a on u.id=a.autor inner join postagem b on u.id=b.editor
  19. Ao inves de usar o JavaScript, por que não usar o método $_GET ou $_POST? comeca_aqui.html <form method=get action=procuraproduto.php> <input name=produto placeholder=produto> <input type=submit> </form> procurarproduto.php <?php $produto=$_GET['produto']; $sql="select produto from tbproduto where produto like ' %$produto%' "; etc...
  20. Frank K Hosaka

    link interno

    O HTML não conseguiu abrir o arquivo, ele recebeu a mensagem Not allowed to load local resource: file:///C: Olhando o Google, existem dicas de como alterar as configurações do Chrome, o problema é que eu uso o Edge. Por outro lado, eu consegui transformar o navegador Edge num gerenciador de arquivos, digitando diretamente na barra de endereços file:C:/
  21. Frank K Hosaka

    link interno

    Do jeito que você escreveu dá a entender que você quer que o PHP abra o gerenciador de arquivos do Windows. Isso, eu não sei fazer não.
  22. Frank K Hosaka

    Contando array de registros

    <?php // o campo frutas recebe valores do tipo "maçã, pera, ameixa" num registro, // no outro tem "jabuticaba, haxixe, goiaba, amendoim", e assim por diante. // o objetivo é ajuntar todas as frutas e contar quantas vezes cada fruta // apareceu em toda a tabela $mysqli=new mysqli("localhost","root","","astudy"); $query=$mysqli->query("select frutas from frutas"); $frutas=[]; while($row=$query->fetch_assoc()){ $dados=explode(',',$row['frutas']); foreach($dados as $fruta){ $frutas[]=trim($fruta);}} sort($frutas); $duplicates=array_count_values($frutas); echo "<table>"; foreach($duplicates as $key=>$value){ echo "<tr><td>$key<td>$value";} echo "</table>";
  23. Frank K Hosaka

    sincronizar dois ou mais servidores

    Boa pergunta! Aqui em casa eu só tenho um servidor e o nome dele é localhost. Eu criei um código chamado "multiplica.php", ele é assim: <?php $a=7; $b=5; $resultado= $a*$b; echo $resultado; ?> Eu criei um outro código chamado "astudy.php" que vai pegar o resultado do "multiplica.php", assim: <?php $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,'localhost/astudy/multiplica.php'); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); $data=curl_exec($ch); curl_close($ch); echo $data; E assim eu consegui pegar o resultado no php de um outro código php, mas dentro do mesmo servidor. Se o código "multiplica.php" estiver em outro servidor, basta acertar o endereço do URL.
  24. Frank K Hosaka

    Não consigo somar valores

    Para obter melhor resultado com o MySQL é preciso seguir algumas regras. Cada coluna deve representar um tipo de informação, não pode haver ambiguidade. O primeiro registro do seu exemplo diz que o valor do serviço é 25 e o totalvalores é 125, e assim o MySQL não é capaz de responder à questão: afinal quanto custa o serviço? Cada serviço deve ter um identificador próprio, e no seu exemplo existem vários serviços de suporte com o id=12, e assim o MySQL não é capaz de responder o que exatamente foi feito no serviço já que existem três identificadores iguais. Ou seja, o seu problema é montar uma tabela. Sem isso, o MySQL não é capaz de responder nada.
  25. Frank K Hosaka

    Deletar usuário do Wordpress. Como fazer?

    Supondo que o id=1 e o id=2 sejam poupados, eu faria assim delete from tbusuarios where id>2;
×

Informação importante

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