Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago Rizzi

php mysql

Recommended Posts

O servidor local tratará como conexões diferentes.
Mesmo em localhost, cada maquina tem a sua identificação na rede via IPV4 (normalmente) ou DNS para redes com configurações mais complexas.

 

Em miudos, diferentes pcs, diferentes ids de processamento. 

Ao menos para mim funciona assim. Tenho aplicação em localhost onde 4 pcs adicionais a acessam e fazem operações que geram conexões no mySql de forma independentes

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Tiago Rizzi disse:

se dois usuários fizer o mesmo processo no mesmo tempo

Primeiro precisa definir oq você quer dizer com 'processo'

 

Seria deletar um dado no banco?

Alterar?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, gabrieldarezzo disse:

Primeiro precisa definir oq você quer dizer com 'processo'

 

Seria deletar um dado no banco?

Alterar?

 

isto realizar update, select, operações que realiza conexão com banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué faz um teste...

 

Eu tmb fiquei curioso e tentei 'simular' isso.

 

Como é humanamente impossível apertar o botão 'deletar' pessoa ao mesmo milisecond vamos fazer um SQL msm hehe:

 

CREATE DATABASE imasters;

USE imasters;

CREATE TABLE pessoa (
	 id INT(8) AUTO_INCREMENT PRIMARY KEY
	,nome  VARCHAR(50)	
);

/* Simulando no mesmo milesecond */
INSERT INTO pessoa (nome) VALUE ('Gabriel');
INSERT INTO pessoa (nome) VALUE ('Gabriel');


/*
SELECT * FROM PESSOA;
    id  nome     
------  ---------
     1  Gabriel  
     2  Gabriel  
*/

update pessoa set nome = 'Gabriel1' where id = 1;
update pessoa set nome = 'Gabriel2' where id = 1;


/*
SELECT * FROM PESSOA;
    id  nome      
------  ----------
     1  Gabriel2  
     2  Gabriel   
*/
	 
	 

delete pessoa where where id = 1;
delete pessoa where where id = 1;

/*

2 queries executed, 2 success, 0 errors, 0 warnings

Query: delete from pessoa where id = 1

1 row(s) affected

Execution Time : 0.046 sec
Transfer Time  : 0 sec
Total Time     : 0.046 sec
--------------------------------------------------

Query: delete FROM pessoa where id = 1

0 row(s) affected

Execution Time : 0 sec
Transfer Time  : 0 sec
Total Time     : 0.001 sec

*/

 

 

Como esperado, o Insert simplemente duplica (se não tiver nenhuma trava)

O Update vai valer o ultimo executado

O Delete o primeiro statment vai deletar e depois vai simplemente retorar 0 linhas afetadas.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Agora, Guilherme Luiz disse:

Isso não acontece pessoal.
Porque cada PC tem seu IP, mesmo numa rede local e logo, cada ação resulta numa conexão distinta ao mySQL
Pode fazer tranquilamente que não vai acontecer conflito.

Obrigado Valeu

1 hora atrás, gabrieldarezzo disse:

Ué faz um teste...

 

Eu tmb fiquei curioso e tentei 'simular' isso.

 

Como é humanamente impossível apertar o botão 'deletar' pessoa ao mesmo milisecond vamos fazer um SQL msm hehe:

 


CREATE DATABASE imasters;

USE imasters;

CREATE TABLE pessoa (
	 id INT(8) AUTO_INCREMENT PRIMARY KEY
	,nome  VARCHAR(50)	
);

/* Simulando no mesmo milesecond */
INSERT INTO pessoa (nome) VALUE ('Gabriel');
INSERT INTO pessoa (nome) VALUE ('Gabriel');


/*
SELECT * FROM PESSOA;
    id  nome     
------  ---------
     1  Gabriel  
     2  Gabriel  
*/

update pessoa set nome = 'Gabriel1' where id = 1;
update pessoa set nome = 'Gabriel2' where id = 1;


/*
SELECT * FROM PESSOA;
    id  nome      
------  ----------
     1  Gabriel2  
     2  Gabriel   
*/
	 
	 

delete pessoa where where id = 1;
delete pessoa where where id = 1;

/*

2 queries executed, 2 success, 0 errors, 0 warnings

Query: delete from pessoa where id = 1

1 row(s) affected

Execution Time : 0.046 sec
Transfer Time  : 0 sec
Total Time     : 0.046 sec
--------------------------------------------------

Query: delete FROM pessoa where id = 1

0 row(s) affected

Execution Time : 0 sec
Transfer Time  : 0 sec
Total Time     : 0.001 sec

*/

 

 

Como esperado, o Insert simplemente duplica (se não tiver nenhuma trava)

O Update vai valer o ultimo executado

O Delete o primeiro statment vai deletar e depois vai simplemente retorar 0 linhas afetadas.

 

 

Obrigado Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Ross Risso
      Tenho uma tabela pedidos com o campo forma de pagamento -  formpag - ele é uma combox que o usuário escolhe se o pagamento vai ser em dinheiro ou ou depósito em banco, na hora de criar o pedido.
      Nessa tabela também existe o campo total. O que necessito é buscar em uma consulta o total de todos os pedidos e mostrar separadamente na mesma consulta o total em dinheiro e em depósito.
      $qr="SELECT dataped, formpag, total  FROM tblpedidos  GROUP BY MONTH(dataped)"; $sqli=mysqli_query($conn,$qr); while($ln = mysqli_fetch_assoc($sqli)){} Como faço para obter a soma de "total" quando? Exemplo:
      JANEIRO  quando formpag for dinheiro - total em dinheido - quando formpag for depósito - total em depósito.
      JANEIRO total em dinheiro $ 100,00 - total em depósito $ 50,00. E assim por diante: FEVEREIRO, MARÇO e etc.
      espero ter sido claro. Agradeço a atenção de todos.
    • Por celsomacarini
      Olá, estou com uma dúvida, como que eu faço para mandar a data e a hora atualizada para o meu banco? O código esta assim
      FUNÇÃO DE ADICIONAR
      public function adicionarSolicitacao($usuario = '', $assunto ='', $data ='', $hora ='') { if($this->existeEmail($email) == false) { $sql = "INSERT INTO solicitacao (usuario, assunto, data, hora) VALUES (:usuario, :assunto, :NOW(), :NOW())"; $sql = $this->pdo->prepare($sql); $sql->bindValue(':usuario', $usuario); $sql->bindValue(':assunto', $assunto); $sql->bindValue(':data', $data); $sql->bindValue(':hora', $hora); $sql->execute(); return true; } else { return false; } }
      ARQUIVO SUBMIT
       
      <?php include '../classes/ramal.class.php'; $contato = new Contato(); if(!empty($_POST['usuario'])){ $usuario = $_POST['usuario']; $assunto = $_POST['assunto']; $data = $_POST['data']; $hora = $_POST['hora']; $contato->adicionarSolicitacao($usuario, $assunto, $data, $hora); header("Location: index_servico.php"); }else{ header("Location: index_servico.php"); } ?> ARQUIVO DO FORMULÁRIO <div class="container"> <form name="formCadastro" method="POST" action="nova_solicitacao_submit.php"> <div class="form-row"> <div class="form-group col-md-6"> <fieldset disabled> <label for="inputEmail4">Nome do Usuário</label> <input type="text" class="form-control" name="usuario" value="<?php echo $_SESSION['usuarioNome']; ?>"> </div> </fieldset> <div class="form-group col-md-6"> <label for="inputState">Assunto</label> <select id="inputState" class="form-control" name="assunto"> <option selected>Impressoras</option> <option>EP-Específico Pormade</option> <option>Fluig</option> <option>Internet</option> <option>Logix</option> <option>Maker</option> <option>Office</option> <option>Inline</option> <option>Senhas</option> <option>SIMP</option> <option>Telefonia</option> <option>Terceiros</option> <option>Windows</option> <option>Backup</option> <option>CEDEPH</option> <option>Computadores</option> <option>CRM</option> <option>E-Mail</option> <option>Empréstimo de Equipamentos</option> <option>Formatação</option> <option>Outros</option> </select> </div> </div> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text">Qual é o problema?</span> </div> <textarea class="form-control"></textarea> </div><br> <input class="btn btn-primary" type="submit" value="Enviar"> <a href="nova_solicitacao_submit.php" class="btn btn-info" role="button">Voltar</a> </div> </div> </form> </header> </body>  
    • Por adrianno
      Fala pessoal beleza?
      Tenho um problema para resolver,  tenho um sistema em PHP com MySQL, mas preciso melhorar a paginação,  tenho uma 2 lógicas de paginação em mente, uma delas é a que mais se encontra e videos, blogs, postagens  mostrando na web,
       
      onde damos um primeiro select CAMPO from TABELA, contamos  o resultado e temos o total de registros para tratar a quantidade de páginas, limite, quantidade que vai aparecer por página etc,  apos isso damos novamente o select CAMPOS from TABELA limite x, y  de acordo com o que obtivemos na lógica da paginação com a primeira SQL. esta lógica até que funciona, mas, não consegui aplicar ela usando JOIN  agrupando 2 ou mais tabelas, pois ai, eu teria  que fazer esta contagem  lá a primeira SQL, ou seja no fim, teria 2 SQL sendo executadas , uma mais rápida devido ao limit passado, mesmo assim ainda seriam 2 consultas.
      Outras lógica seria dar um SELECT count(CAMPO) from TABELA  seria uma SQL mais rápida,  mas...  se eu tiver um JOIN agrupando dados de uma tabela de categoria + produtos, eu teria que contar o resultado já agrupado das 2.
      Já pensei em executar a consulta normal, retornar o array dos dados, e depois paginar este array  com array_slice, e dividir ele de acordo com a quantidade de páginas e registros de cada.
      Já fiz paginação com JS/AJAX  mas mesmo assim, ainda preciso passar os dados totalizados, consigo uma boa visualização final na interface, mas por tras, sei que o processamento no MYSQL pesa
       
      Lembrando que em cada caso citado, cada vez que alteramos entre as páginas, é novamente executado os calculos.
       
      Alguem tem uma lógica bacana para paginação? de forma que nao fique pesado, lento em uma tabela muito grande?
       
       
       
       
       
       
       
    • Por zinleo1
      Galera, estou sofrendo com um problema ao editar a senha do aluno, alguém saberia ajudar com o motivo do erro? Tô precisando disso pra entregar a avaliação no curso urgentemente.
       
      Pag 1: Codigos -> areadoaluno.php
      <html>      <?php        session_start();    ?>     <head>         <title>Editar registro de aluno</title>         <meta charset='utf-8'/>        </head>     <body>             <form name="areadoaluno.php" method="POST" action="alterar_senha.php">                 <fieldset>                     <legend>bem vindo,<?php echo $_SESSION['logado']."!";?></legend>                     <?php  session_destroy(); ?>                 </fieldset>                 <input type="submit" name="editarsenha" value="Editar Senha">             </form>              </body> </html> Pag 2: Codigos -> Alterar_senha.php
      <html>     <head>         <title>Editando a senha do aluno</title>         <meta charset='utf-8'/>        </head>     <body> <?php     include('conexao.php');               $cod = $_GET['id'];          echo $cod;    echo "<b>Editando sua senha! ".$cod."</b></br></br>";     $query ="SELECT * FROM aluno WHERE cod_aluno = $cod";          $result = mysqli_query($con,$query);     if ($result->num_rows > 0) {         echo "<form method='post' action='alterar_senha_conf.php'>";         while($linha = mysqli_fetch_array($result)) {             echo "<label>Login:</label><input required type='text' name='login_aluno' readonly='readonly' value='".$linha["login_aluno"]."'></input><br>";             echo "<label>Senha:</label><input type='text' name='senha_aluno' value='".$linha["senha_aluno"]."'></input><br>";                          echo "<label>Código do aluno:</label><input  type='text' name='cod_aluno' readonly='readonly' value='".$linha["cod_aluno"]."'></input><br>";             echo "<input type='submit' value='salvar'></input>";         }             echo "</form>";     } else {         echo "<b class='erro'>Sem resultados para mostrar</b><br><br>";     } ?> </body> </html> Pag 3: Codigos -> Alterar_senha_conf.php 
      <html>     <head>         <title></title>         <meta charset='utf-8'/>     </head>     <body> <?php     include('conexao.php');     $login = $_POST['login_aluno'];     $senha = $_POST['senha_aluno'];     $cod = $_POST['cod_aluno'];     echo "Login: ".$login."</br>Senha: ".$senha."</br></br>";     $adc = "UPDATE aluno SET login_aluno='$login', senha_aluno='$senha' WHERE cod_aluno='$cod'";      $ins = mysqli_query($con,$adc);     if($ins)     {     echo "<b style='color:green'>Usuário editado com sucesso!</b> </br><a href='areadoaluno.php'>Voltar</a>";     }     else     {     echo "Erro </br><a href='areadoaluno.php'>Voltar</a>";     }           ?>     </body> </html>  
    • Por Rodrigo2000
      Bom dia,
       
      Tenho estado a criar uma base dados onde vou inserir um conjunto de elementos de uma textarea.
      Quando o texto é curto, facilmente passa para a base de dados, no caso de ser longo não passa nada.
      O problema é claramente as variáveis, na base de dados já alterei o tamanho dos campos, mas resolveu o
      problema.
      Alguem tem uma ideia de como posso resolver o problema.
       
      Envio o código fonte da página de entrada de dados.
      Tenho igualmente um problema que ainda nem percebi o que se passa.
      O texto quando carregado na textarea e input aparece com espaços, como é que os posso
      eliminar.
       
      Sem mais
      Rodrigo Lourenço
       
      <!DOCTYPE HTML>
      <html>
      <head>
        <title>Adiciona Artigo</title>
        <meta name="description" content="website description" />
        <meta name="keywords" content="website keywords, website keywords" />
        <meta http-equiv="content-type" content="text/html; charset=windows-1252" />
        <link rel="stylesheet" type="text/css" href="style/style.css" title="style" />
      </head>
      <body>
        <?php
          //começa por verificar a sessão, caso não esteja activa envia para a página inicial.
          require("livraria.php");
          session_start();
          $validacao = array();
          
          $login = 0;
          if (isset($_SESSION['login']) && isset($_SESSION["sessionmaxtime"])){
              $login = $_SESSION['login'];        
          }
          if ($login == 0)
              echo "<meta http-equiv=\"refresh\" content=\"0; url=index.php\">";
          else{    
              if ($_SERVER["REQUEST_METHOD"] == "POST"){            
                  $validacao = validarAdd();
              }
          }
        ?>
        <div id="main">
          <div id="header">
            <div id="logo">
              <div id="logo_text">
                <!-- class="logo_colour", allows you to change the colour of the text -->
                <h1><a href="index.php">Livro<span class="logo_colour">Aberto</span></a></h1>
                <h2>Um lugar onde se lê e fala de livros.</h2>
              </div>
            </div>
            <div id="menubar">
              <ul id="menu">
                <!-- put class="selected" in the li tag for the selected page - to highlight which page you're on -->
                <li><a href="index.php">Home</a></li>
                <li class="selected"><a href="add.php">Criar</a></li>
                <li><a href="apagar.php">Apagar</a></li>
                <li><a href="alterar.php">Alterar</a></li>
                <li><a href="gerir.php">Utilizadores</a></li>
                <li><a href="sair.php">Sair</a></li>
                <?php
                  echo "<li><a href=\"#\"> ".$_SESSION["utilizador"]."</a></li>";
                ?>
              </ul>
            </div>
          </div>
          <div id="site_content">
            <div class="sidebar">
              <!-- insert your sidebar items here -->
              <h3>Livros em Revista</h3>
              <p>Use o formulário para inserir um novo artigo.</p>          
              <p>
                  Os campos abaixo mencionados são preenchidos automáticamente.
                  <ul>
                      <li> Autor </li>
                      <li> Data </li>
                  </ul>
                </p>
              <p></p>
              <h3>Sites Uteis</h3>
              <ul>
                <li><a href="#">link 1</a></li>
                <li><a href="#">link 2</a></li>
                <li><a href="#">link 3</a></li>
                <li><a href="#">link 4</a></li>
              </ul>
            </div>
            <div id="content">
              <!-- insert the page content here -->
              <h1>Novo Registo</h1>
              <form action="#" method="post">
                <div class="form_settings">
                  <p><span>Titulo
                  <?php
                      if ($_POST && in_array("titulo",$validacao))
                          echo "(Obrigatório)";    
                  ?></span><input class="contact" type="text" name="titulo"  value="
                  <?php
                          if($_POST  && (count($validacao) > 0))
                              if(!empty($_POST["titulo"]))
                                  echo $_POST["titulo"];
                  ?>
                  " /></p>
                  <p><span>Autor</span><input class="contact" type="text" name="autor" readonly="true" value="
                  <?php
                      echo $_SESSION["utilizador"];
                  ?>" /></p>
                  <p><span>Artigo
                  <?php
                      if ($_POST && in_array("artigo",$validacao))
                          echo "(Obrigatório)";    
                  ?>            
                  </span><textarea class="contact textarea" rows="20" cols="50" name="artigo">
                  <?php
                          //echo $_POST["artigo"];
                          if($_POST  && (count($validacao) > 0))
                              if(!in_array("artigo",$validacao))
                                  echo $_POST["artigo"];                                        
                  ?>
                  </textarea></textarea></p>
                  <p><span>Resumo
                  <?php
                      if ($_POST && in_array("resumo",$validacao))
                          echo "(Obrigatório)";    
                  ?>                
                  </span><textarea class="contact textarea" rows="4" cols="50" name="resumo">
                  <?php
                          if($_POST  && (count($validacao) > 0))
                              if(!in_array("resumo",$validacao) )
                                  echo $_POST["resumo"];                                    
                  ?>            
                  </textarea></textarea></p>
                  <p><span>Data</span><input class="contact" type="date" name="data" readonly="true" value="<?php
                      date_default_timezone_set('Europe/Lisbon');
                      echo date('Y-m-d');        
                  ?>" /></p>
                  
                  <p style="padding-top: 15px"><span>&nbsp;</span><input class="submit" type="submit" name="contact_submitted" value="Adicionar" /></p>
                </div>
              </form>
            </div>
          </div>
          <div id="footer">
            Copyright &copy; textured_blue | <a href="http://validator.w3.org/check?uri=referer">HTML5</a> | <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> | <a href="http://www.html5webtemplates.co.uk">Free CSS Templates</a>
          </div>
        </div>
        <?php
              //Uso da base de dados.
              $servername = "localhost";
              $username = "root";
              $password = "";  //campo a ser mudado consoante a password da base de dados.
              $dbname = "bdbooks";
              // Create connection
              $con = new mysqli($servername, $username, $password, $dbname);
                  
              //Verifica se houve erro ao aceder à base de dados
              if ($con->connect_errno!=0){
                  echo "Ocorreu um erro de ligação à base de dados.".$con->connect_errno;
                  exit;
              }
              
              //Só quando não houverem elementos na $validação é que se pode avançar.
              if(($_POST) && (count($validacao) == 0)){
                  
                  //Inserção dos dados na base de dados.            
                  //Usando antes o metodo query que usa a sintaxe mysql directamente.
                  //Tratamento das variáveis para evitar problemas de injecção de SQL.
                  $titulo = htmlentities(htmlspecialchars($_POST["titulo"]),ENT_QUOTES);
                  $artigo = htmlentities(htmlspecialchars($_POST["artigo"]),ENT_QUOTES);
                  $resumo = htmlentities(htmlspecialchars($_POST["resumo"]),ENT_QUOTES);
                  //Os campos pré preenchidos
                  $iduser = $_SESSION["userid"];
                  $data = $_POST["data"];
                      
                  //Segundo construção da string para introdução dos dados SQL.
                  $query = "INSERT INTO articles (artigo, data, id_users, resumo, titulo) VALUES(";
                  //Introdução dos dados na string.
                  $query = $query. "\"".$artigo."\",";
                  $query = $query. "\"".$data."\",";
                  $query = $query. "\"".$iduser."\",";
                  $query = $query. "\"".$resumo."\",";
                  $query = $query. "\"".$titulo."\");";
                  //realização da query
                  $con->query($query);
                  //Depois de utilizar os dados temos que os apagar.
                  unset($_POST);            
                  } //Fim do if  
        ?>
          
      </body>
      </html>
       
×

Informação importante

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