Não sou exatamente o usuário avançado de PHP, sei mais ou menos os comandos, entrei num estágio aki da universidade e é a primeira vez que programo propriamente dito seguindo modelos, formalismos... Acho que a gente só aprende mesmo quando começa a trabalhar propriamente dito em algum lugar...
É o seguinte... estamos desenvolvendo lá um sistema de newsletter (informativos e jornalzinhos de email), eu mais 4 amigos, e cada um está encarregado de mais ou menos uma parte (pelo menos agora), e eu tou fazendo os sistemas de consultas... em termos, podemos consultar cada newsletter criada, pessoas cadastradas que recebem newsletters podem ser consultadas, e pegamos as informações delas no banco e imprimimos na tela...
Por exemplo, se consultarmos pessoas, pegamos do banco os dados dela referente a nome, data de nascimento, identidade, cpf...
Aparentemente, tudo que eu fiz aqui está em ordem, exceto um problema que é todos os dados de cada pessoa poderem ser consultadas (assim sendo, vc pode consultar a partir de cada um dos dez tipos de informações disponiveis, seja nome, identidade, cpf, email...). Você pode consultar por nome e email, por nome e cpf, por identidade e cpf... por todos os dados, ou por apenas um.
Não consigo chegar num consenso de como deve ser o comando sql da query, levando em conta que as vezes ela pode consultar soh por nome, ou soh por email... primeiramente eu fiz isso:
$_SESSION['sql'] = "SELECT * FROM autor WHERE nome='$this->nomeB' or email='$this->emailB' or cpf='$this->cpfB' or identidade='$this->identB' or data_nascimento='$this->data_nascB' or data_cadastro='$this->data_cadB' or data_modificacao='$this->data_modB' or biografia='$this->bioB'";
Não dá certo, temos que levar em conta que as vezes podemos consultar só por nome, e se algum registro no banco tiver dados de email nulo... esse registro tambem vai aparecer, não pode... existem registros que podem ter campos nulos, um deles eh email
Ah sim, eu gravo o comando SQL num session pra depois ser aproveitado num outro método de buscarDados que aí sim vai realizar a query e os dados serão arquivados num vetor... As variaveis nomeB, identidadeB armazenam o que a pessoa digitou num textfield a ser buscado, algo como:
$_POST["nome"] = $this->nomeB;
Pois é, o departamento de modelagem realmente naum tem dó de programadores, tem que definir os métodos e modelos UML da forma mais dificil pra gente =P
Eu já pensei em tudo, ateh em gambiarras, mas nada... existe algum jeito de gerar um comando SQL baseado soh nos dados que foram preenchidos no campo? Por exemplo, só preenchi o campo de nome e email, daí ele geraria o seguinte SQL:
$_SESSION['sql'] = "SELECT * FROM autor WHERE nome='$this->nomeB' and email='$this->emailB';
Se fosse apenas identidade por exemplo, geraria isso:
$_SESSION['sql'] = "SELECT * FROM autor WHERE identidade='$this->identB';
É possível fazer isso na mão, mas... olha o numero de possibilidades que você ia ter que fazer na mão, confuso e bagunçado demais =P
Ficou claro oq eu perguntei? Não que eu saiba explicar direito =P
Quem souber... salvou minha vida, valeu gente
Ops... Coisa de noob =P
Desculpa por ter quebrado a barra de rolagem, e mais uma coisa, onde está escrito:
$_POST["nome"] = $this->nomeB;
era isso aqui, eu me enganei:
$this->nomeB = $_POST["nome"];
Foi mal a confusão, se algum moderador puder ajeitar essas coisas pra mim no post inicial e apagar esse segundo post...