Ir para conteúdo
Entre para seguir isso  
sergionpinheiro

Update MySQL com array

Recommended Posts

Bom dia galera,

Estou tendo dificuldades com a lógica de um código, preciso da ajuda de vocês.

O que preciso é fazer update de um formulário que possui um array de telefone. Quando coloco para editar o cliente, ele carrega todos os telefones do cliente que é de outra tabela.

Tenho o código para inserir, porém não estou conseguindo fazê-lo para alterar. Segue abaixo:

----

$cli_codigo = $_POST['cli_codigo'];

$telefone = $_POST['telefone'];

$values = array();

for($i = 0; $i < sizeof($_POST['telefone']); $i++) {

$values[] = "('{$cli_codigo}','{$telefone[$i]}')";

}

$sql_crt_tel = 'INSERT INTO tb_fones_clientes(TEL_CLI_CODIGO, TEL_TELEFONE) VALUES '.implode(',', $values);

$crt_fones = mysqli_query($link, $sql_crt_tel) or die(mysqli_error($link));

----

Tem um foreach no formulário para listar todos os telefones do cliente.

Obs.: Cada telefone possui um ID específico, não é o ID do cliente.

Fico no aguardo.

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia !

Vou lhe passar abaixo uma forma simples, o exemplo está preparado para usar dentro de uma classe, mais você pode adaptar facilmente ao seu uso.

public function Create($tabela, array $datas){

        //Utilização: create('tabela',$array);
        $this->datas = $datas;
        $this->tabela= $tabela;
        
        $fields = implode(", ",array_keys($this->datas));
        $values = "'".implode("', '",array_values($this->datas))."'";            
        $stCreate = $this->query("INSERT INTO {$this->tabela} ($fields) VALUES ($values)")or die($this->mysqli->error);
        
        if($stCreate){
            return true;
        }else{
            return false;
        }
        
     }

//Modo de utilização:
$var = new NomeDaClasse();

$d['nome'] = 'teste';
$d['idade']= 27;

$var->Create('tabela',$d);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue a mesma lógica, com diferença que, você deverá passar instruções para o WHERE, veja

public function Update($tabela, array $datas, $where){
		
		$this->datas = $datas;
		$this->tabela= $tabela;
		$this->where = $where;
		
		foreach($this->datas as $fields => $values){
			$campos[] = "$fields = '$values'";
		}
		
		$campos = implode(", ",$campos);
		$stUpdate =$this->query("UPDATE {$this->tabela} SET $campos WHERE {$this->where}")or die($this->mysqli->error);
	    $this->fechar();
		
		if($stUpdate){
			return true;	
		}else{
			return false;
		}
		
	  }
//Modo de usar seria:

$var = new NomeDaClass();
$d['nome'] = 'teste';
$d['idade']= 27;
$var->Update('tabela,$d,"id=10"');

Captou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

Não teria como você pegar :

$idParaUpdate = "SELECT id_telefone FROM tb_fones_clientes

WHERE TEL_CLI_CODIGO = $cli_codigo

TEL_TELEFONE = $telefone";

Com essa query a cima, voce consegue pegar o id especifico do telefone onde o usuario é x e o telefone é x.

Tenta dar o update na tabela, dando um update tabela set telefone = x where id_telefone = $idParaUpdate['id_telefone '];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta você utilizar como uma função, nada mais, o exemplo diz tudo. Recomendo uma leitura sobre funções. Function php

http://php.net/manual/pt_BR/language.functions.php

http://www.w3schools.com/php/php_functions.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Conteúdo Similar

    • Por laloproces
      Boa noite. Segue o texto do método main:
       
      /*O sistema basicamente faz é pedir informções para o usuário, pergutando quantas pessoas vai cadastrar, *qual o nome, telefone, se a pessoa trabalha, pede o cargo e a empresa para no final exibir essas informações na tela. */ public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Quantas pessoas você vai cadastrar? (Somente números)\n"); int pessoas = (int)in.nextInt(); String[] nome = new String[pessoas]; String[] telefone = new String[pessoas]; String[] profissao = new String[pessoas]; String[] empresa = new String[pessoas]; int op = 0; for(int i=0; i<pessoas; i++) { System.out.println("\nDigite o nome do serumaninho:\n"); nome[pessoas] = in.toString(); //Tá dando erro aqui, provavelmente por causa da variável dinâmica pessoas System.out.println("\nDigite o telefone desse serumaninho:\n"); telefone[pessoas] = in.nextLine(); System.out.println("\nEsse vivente trabalha? (0 para não, 1 para sim)\n"); op = in.nextInt(); if(op == 1){ System.out.println("\nDigite a profissão dele:\n"); profissao[pessoas] = in.nextLine(); System.out.println("\nDigite o nome da empresa em que ele trabalha:\n"); empresa[pessoas] = in.nextLine(); } } for(int j=0; j<pessoas; j++){ if(op ==1){ Pessoa[] p = {new Profissional(nome[j], telefone[j], profissao[j], empresa[j])}; } else{ Pessoa[] p2 = {new Pessoa(nome[j], telefone[j])}; } } for(int h=0; h<pessoas; h++){ if(op==1){ Pessoa[] p = {new Profissional(nome[h], telefone[h], profissao[h], empresa[h])}; System.out.println(Arrays.toString(p)); } else{ Pessoa[] p2 = {new Pessoa(nome[h], telefone[h])}; System.out.println(Arrays.toString(p2)); } } } //Abaixo estão as classes, que estão em outros arquivos Java. public class Pessoa { public String getNome(){ return nome; } public void setNome(String nome){ this.nome = nome; } public String getTelefone(){ return telefone; } public void setTelefone(String telefone){ this.telefone = telefone; } private String nome; private String telefone; Pessoa(String nome, String telefone){ this.nome = nome; this.telefone = telefone; } void exibir(){ System.out.println(getNome()+" :: "+getTelefone()); } } //Abaixo a classe Profissional, derivada da classe Pessoa. public class Profissional extends Pessoa { private String profissao; private String empresa; public String getProfissao(){ return profissao; } public void setProfissao(String profissao){ this.profissao = profissao; } public String getEmpresa(){ return empresa; } public void setEmpresa(String empresa){ this.empresa = empresa; } Profissional(String nome, String telefone, String profissao, String empresa){ super(nome, telefone); this.profissao = profissao; this.empresa = empresa; } @Override public void exibir(){ super.exibir(); System.out.println("\tTrabalha como "+profissao+"no(a) "+empresa+"."); } } Minha dúvida é: como posso corrigir o problema sem tirar a maneira dinâmica do sistema e se da maneira como fiz não irá gerar outros erros ou poderia fazer de uma maneira mais simples.
      Desde já agradeço!
    • Por GustavoJacob15
      tenho um case assim no meu fonte: 
      ---------------------------------------------------------
      CASE RA_DEMISSA
          WHEN '' THEN 'DESLIGADO'
          ELSE 'ATIVO'
      END AS SITUACAO
      ---------------------------------------------------------
       
      Preciso colocar no where para mostar um parametro com 'ativo' ou 'desligado' 
       
    • Por JOSELUISALD
      Bom dia. Em minha aplicação o cliente quer uma cópia de seu sistema localmente e remoto (hospedado). Tem como eu fazer a sincronização dos bancos de dados, para que tudo que seja feito localmente seja inserido automaticamente no banco remoto? Desde já obrigado.
    • Por Caio_Lourençon
      Olá estou desenvolvendo um projeto utilizando a extensão MySQLi, e nisso aproveitando para utilizar algumas funções orientada a objeto! Gostaria de tirar umas dúvidas em relação a listagem de dados, são duas perguntas:   1) Utilizar a função foreach() ao invés de um while() com a função fetch_array() dentro, tem uma listagem mais rápida ou mais lenta? Pois com ambas consigo trazer os dados, No momento estou utilizando a foreach por ser mais rápida de se digitar.
      2) Utilizo muitas listagens de tabelas diferentes na mesma página sempre chamando um novo SELECT, seria melhor criar uma função com um SELECT dentro para eu sempre reutiliza-lá ou não iria mudar muita coisa em questão de desempenho?
       
      Agradeço qualquer informação.
    • Por gersonab
      Procuro uma revenda de hospedagem confiável, ja adianto que uolhost e locaweb estão fora dos planos.
×

Informação importante

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