Ir para conteúdo

Arquivado

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

Matheus Perez

Cadastro de Filho PHP

Recommended Posts

Bom dia,
Estou criando um sistema de reserva e estou encontrando um problema dentro do cadastro do usuario segue abiaxo o meu problema:
- preciso cadastrar os filhos em cada usuario so que cada usuario pode ter de 0 a Muitos filhos entao para resolver isso criei uma função em js para ele ficar gerando um campo para adicionar mais filhos, ja no BD eu criei uma tabela para o usuario e uma para o filho e vinculei as duas, quando preencho somente com um filho ele cadastra normal mais quando preencho com mais de um filho ele somente registra com o ultimo filho..Alguem poderia me ajudar preciso que seja cadastrado varios filhos de uma so vez segue abaixo meus codigos...
CADASTRO.PHP

 

 

 

</head>

<body>
<div id="sair"> <a href="?acao=sair" title="Desconectar">Sair »</a></div>
<div class="contaier">
<div class="titulo"><b>Cadastro Usuario</b></div>
<!-- inicio do CADASTRO-->
<form action="?acao=cadastrar" method="POST">
<div class="form_cadastro" >
<input id="codigo" type="text" class="campform bradius" style="width:70px;height: 35px;" name="codigo" placeholder="Codigo" />
<input id="nome" type="text" class="campform bradius" style="width:230px;height: 35px;" name="nome" placeholder="<?php echo "$soma"; ?>" > <br>
<select id="dpto" name="dpto" class="campform bradius" name="dpto" style="width:230px;height: 35px;"/>
<option name="dpto" value="01" >Selecione um Departamento</option>
<option name="dpto" value="02"></option>
<option name="dpto" value="contabilidade">Contabilidade</option>
<option name="dpto" value="informatica">Informática</option>
<option name="dpto" value="recepcao">Recepção</option>
<option name="dpto" value="secretarias">Secretárias</option>
<option name="dpto" value="departamentais">Departamentais</option>
<option name="dpto" value="distritais">Distritais</option>
<option name="dpto" value="limpeza">Limpeza</option>
<option name="dpto" value="loja/didaticos">Loja/Didáticos</option>
<option name="dpto" value="radio">Rádio</option>
<option name="dpto" value="rh">RH</option>
<option name="dpto" value="tesouraria">Tesouraria</option>
<option name="dpto" value="juridico">Jurídico</option>
<option name="dpto" value="engenharia">Engenharia</option>
<option name="dpto" value="remessa">Remessa</option>
</select> <br>
<input id="email" type="email" class="campform bradius" style="width:250px;height: 35px;" name="email" placeholder="Email" />
<input id="senha" type="password" class="campform bradius" style="width:150px;height: 35px;" name="senha" value="" placeholder="Senha" /><br>
<input id="conjuge" type="text" class="campform bradius" style="width:230px;height: 35px;" name="conjuge" placeholder="Cônjuge"/>
<label ><input id="check_func" type="checkbox" name="check_func" value="" >Func. da ANP</label><br>
<div ><input type="text" name="func_empresa" id="func_empresa" style="display:none;" value="sim" disabled> </div>
<input id="fnome" type="text" class="campform bradius" style="width:230px;height: 35px;" placeholder="Filho(a)" name="fnome"/>
<input id="datanf" type="date" class="campform bradius" style="width:150px;height: 35px;" name="datanf"/>
<div id="MaisFilho"> </div>
<input type="button" value="Mais" onClick="mais(fnome.value)" class="btMais" ><br>
<select name="nivel" class="campform bradius" style="width:150px;height: 35px;" id="nivel"> <br>
<option name"nivel" value="usuario">Usuario</option>
<option name"nivel" value="staff">staff</option>
<option name"nivel" value="administrativo">Administrador</option>
</select>
<select name="status" class="campform bradius" style="width:100px;height: 35px;" />
<option name="status" value="ativo">Ativo</option>
<option name ="status" value="inativo">Inativo</option>
</select> <br>
<input type="submit" class="sb bradius" value=" Cadastrar ">
</form>
</div>
</div>
<!-- FIM DO CADASTRO-->
<!-- JS PARA O BOTÃO ADD MAIS FILHOS-->
<script type="text/javascript">
var num = 1;
function mais(fnome, datanf) {
num ++ ;
document.getElementById("MaisFilho").innerHTML+=" <input id='fnome' type='text' class='campform bradius' style='width:230px;height: 35px;' placeholder='Filho(a)' name='fnome"+num+"' >";
document.getElementById("MaisFilho").innerHTML+=" <input id='datanf' type='date' class='campform bradius' style='width:150px;height: 35px;' name='datanf"+num+"'/>";
document.form.fnome.value="";
document.form.datanf.value="";
num ++ ;
}
//func empresa
$(document).ready(function(){
$("#check_func").click(function(evento){
if($("#check_func").attr("checked")){
$('#func_empresa').removeAttr('disabled');
}else{
$('#func_empresa').attr('disabled', true);
}
});
});
</script>
<!-- FIM -->
</body>
</html>

 

HEADER.PHP

 

//Metodo de Cadastro

if($startaction== 1){
if($acao=="cadastrar"){
$codigo=$_POST["codigo"];
$nome=$_POST["nome"];
$dpto=$_POST["dpto"];
$email=$_POST["email"];
$senha=$_POST["senha"];
$conjuge=$_POST["conjuge"];
$func_empresa=$_POST["func_empresa"];
$fnome=$_POST["fnome"];
$datanf=$_POST["datanf"];
while
$nivel=$_POST["nivel"];
$status=$_POST["status"];
if(empty($codigo) || empty($nome) || empty($dpto) || empty($email) || empty($senha)){
echo "<script>alert('preencha todos os campos, obrigatorios!'); </script>";
}
//todos os campos preenchidos
else{
//email valido
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
//senha invalida
if(strlen($senha)<4){
echo "<script>alert('As senhas devem conter no minimo quatro caracteres!'); </script>";
//senha valida
}else{
//executa a classe de cadastro
$conectar=new cadastro;
$conectar=$conectar->cadastrar($codigo, $nome, $dpto, $email, $senha, $conjuge, $func_empresa, $fnome, $datanf, $nivel, $status);
}
//email invalido
}else{
echo "<script>alert('Digite seu email corretamente!'); </script>";
}
}
}
}

CADASTRO.CALSS.PHP

 

<?php

class cadastro{
public function cadastrar($codigo, $nome, $dpto, $email, $senha, $conjuge, $func_empresa, $fnome, $datanf, $nivel, $status){
//tratamento das variaveis
$nome=ucwords (strtolower($nome));
$codigo=ucwords (strtolower($codigo));
$senha=sha1($senha."dynamissistemas");
//inserção no BD
$validaremail=mysql_query("SELECT * FROM usuario WHERE email='$email' or codigo='$codigo'");
$contar=mysql_num_rows($validaremail);
if($contar == 0){
$insert=mysql_query("INSERT INTO usuario(codigo, nome, dpto, email, senha, conjuge, func_empresa, nivel, status)
VALUES('$codigo', '$nome', '$dpto', '$email', '$senha', '$conjuge', '$func_empresa', '$nivel', '$status')");
// Chave estrangeira
$inser_filho=mysql_query("INSERT INTO filhos(usuario_id, nome, datanf)VALUES ('$codigo','$fnome', '$datanf')");
}else{
echo "<script>alert('Desculpe, mas já exite um usuário cadastrado com este email ou codigo em nosso sistema!'); </script>";
}
if(isset($insert)){
echo "<script>alert('Cadastro Realizado com sucesso'); </script>";
}else{
echo "<script>alert('Ops! Houve um erro em nosso sistema! Entre em contato setor responsavel!'); </script>";
}
//retrono no BD
}
}

 

Muito Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os inputs estão indo com o mesmo nome fnome, logo apenas o último existirá, já que names/ids não podem ser repetidos.

 

A solução mais simples é criar um array com isto, por exemplo. nomeando os campos como fnome[]

 

Na hora de receber os dados:

foreach($_POST['fnome'] as $filho){
    
}

O nome estará na variável $filho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os inputs estão indo com o mesmo nome fnome, logo apenas o último existirá, já que names/ids não podem ser repetidos.

 

A solução mais simples é criar um array com isto, por exemplo. nomeando os campos como fnome[]

 

Na hora de receber os dados:

foreach($_POST['fnome'] as $filho){
    
}

O nome estará na variável $filho.

entao no caso eu coloco na assim "document.getElementById("MaisFilho").innerHTML+=" <input id='fnome[]' type='text' class='campform bradius' style='width:230px;height: 35px;' placeholder='Filho(a)' name='fnome[]""' >";"

e esse codigo eu colocaria aonde foreach($_POST['fnome'] as $filho){

 

}?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só uma questão de usar a cabeça, se o código resgata os nomes dos filhos onde ele deveria ir? Acredito que a resposta mais óbvia é: Onde é feito o cadastro dos filhos...

 

Ou seja, você terá que colocar isto:

$inser_filho=mysql_query("INSERT INTO filhos(usuario_id, nome, datanf)VALUES ('$codigo','$fnome', '$datanf')");

Dentro do foreach, pois cada volta do laço será uma nova inserção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só uma questão de usar a cabeça, se o código resgata os nomes dos filhos onde ele deveria ir? Acredito que a resposta mais óbvia é: Onde é feito o cadastro dos filhos...

 

Ou seja, você terá que colocar isto:

$inser_filho=mysql_query("INSERT INTO filhos(usuario_id, nome, datanf)VALUES ('$codigo','$fnome', '$datanf')");

Dentro do foreach, pois cada volta do laço será uma nova inserção.

Testei aqui e no banco de dados ele cadastra o campo nome com "Array" fiz assim:

cadastro.php

<input id="fnome" type="text" class="campform bradius" style="width:230px;height: 35px;" placeholder="Filho(a)" name="fnome[]"/>
no Script coloquei do mesmo jeito
cadastro.calss.php
foreach($_POST['fnome'] as $filho){
$inser_filho=mysql_query("INSERT INTO filhos(usuario_id, nome, datanf)VALUES ('$codigo','$fnome', '$datanf')");
}
e apresenta esse erro "Notice: Array to string conversion in C:\xampp\htdocs\reserva\classes\cadastro.class.php on line 20

Notice: Array to string conversion in C:\xampp\htdocs\reserva\classes\cadastro.class.php on line 20"

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conforme citei: O nome estará na variável $filho.

 

No seu código você usou a variável $fnome:

$inser_filho=mysql_query("INSERT INTO filhos(usuario_id, nome, datanf)VALUES ('$codigo','$fnome', '$datanf')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Conforme citei: O nome estará na variável $filho.

 

No seu código você usou a variável $fnome:

$inser_filho=mysql_query("INSERT INTO filhos(usuario_id, nome, datanf)VALUES ('$codigo','$fnome', '$datanf')");

co segui colocar o nome e agora para colocar a data de nascimento?

eu fiz o mesmo processo coloquei datanf[] no nome do campo so que na hora da inserir no bd ele inseri duplicado segue abaixo como eu fiz :

 

foreach($_POST['fnome'] as $fnome ){

foreach($_POST['datanf'] as $datanf){

 

.....})

como faco para regiistrar os dois porque somentd o nome ja consegui

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matheus, está muito claro que você não tem a mínima ideia do que está fazendo, então comece do básico, PARE o que está fazendo e estude o funcionamento dos laços, isso é coisa básica em programação, também estude o funcionamento dos arrays.

 

A partir disto, altere

foreach($_POST['fnome'] as $filho){

Para:

foreach($_POST['fnome'] as $ind=>$filho){

$ind conterá o índice do array do $_POST['fnome'], que deverá casar com o índice do array do $_POST['datanf']

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

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