Ir para conteúdo
Fórum Script Brasil
  • 0

Classes I


Aprendiz_PHP

Pergunta

Óia eu de novo com uma nova dúvida :blush:

é o seguinte... estou querendo desenvolver uma classe para que todas os 'inserts', 'deletes' e 'updates' da vida usem ela... mais ou menos assim, vou expor o método de inserção:

class tabelas{

public $tabela;

public $camposbd;

public $camposformulario;

public $id;

public function insere($tabela,$camposbd,$camposformulario){

$this->tabela = $tabela;

$this->camposbd = $camposbd;

$this->camposformulario = $camposformulario;

$campos = array_values($this->camposformulario);

$campo = array_pop($campos);

$campostabela = array_values($this->camposformulario);

$sql = mysql_query("INSERT INTO ".$this->tabela." (".implode(',',$camposbd).") VALUES ('".implode('\',\'',$campos)."')");

}

}

.......

$tb = new tabelas();

// CADASTRAR

if($_REQUEST["submit"] == "Cadastrar"){

$TB = "testes";

$camposTB = "nome,cidade";

$tb->insere($TB,array($camposTB),$_REQUEST);

}

// ALTERAR

if($_REQUEST["submit"] == "Alterar"){

$TB = "testes";

$campo = "nome";

$camposTB = "nome,cidade";

$id = $_REQUEST["id"];

$tb->alterar($TB,array($camposTB),$_REQUEST,$id);

}

o problema está no alterar, pois a estrutura da query é assim: UPDATE TABELA SET CAMPO = VALOR, CAMPO1 = VALOR1 WHERE ID = IDVALOR ... como eu poderia fazer para que os campos ficassem assim:

CAMPO = VALOR, CAMPO1 = VALOR1

eu tentei usar o implode(), mas não consegui :(

Abraços

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Digamos que sejam 3 campos (col1, col2 e col3) e 3 valores (val1, val2 e val3). Neste caso, você terá 2 matrizes camposbd e campos. Basta criar uma string usando while, por exemplo;

$upl = "UPDATE TABELA SET ";
$i=0
while($camposbd[$i])
{
  if($i > 0)
  {
    $upl .= ", ";
  }
  $upl .= $camposbd[$i]." = ".$campos[$i];
  $i++;
}

O resultado deste exemplo seria:

UPDATE TABELA SET col1 = val1, col2 = val2, col3 = val3
Editado por svjets
Link para o comentário
Compartilhar em outros sites

  • 0

Você poderia fazer a função alterar receber três parâmetros, sendo que o primeiro é o nome da tabela, o segundo seria a cláusula utilizada (como por exemplo: 'WHERE cd_usuario = 2') e o terceiro parâmetro é um array associativo, sendo que o índice é o nome do campo no banco e o valor é o valor a ser atualizado... depois é só fazer um foreach concatenando os campos com os valores:

function alterar($tabela, $clausula, $campos){
        $this->tabela = $tabela;
        $this->clausula = $clausula;
        $this->campos = $campos;
        
        // Inicializa variável que conterá os campos/valores
        $update = '';
        
        foreach($campos as $campo=>$valor){
            // Para cada campo, concatena-os no formato campo = 'valor',
            $update .= " $campo = '$valor',";
        }
        // Retira a última vírgula que sobra
        $update = substr($update, 0, -1);
        
        // Monta a query
        $sql = "UPDATE ".$this->tabela." SET $update $clausula";
        // Executa a query
        $rs = mysql_query($sql);
    }

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...