Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Insurgent3

PHP Comando INSERT INTO grava somente a primeira informação em LAÇO while no MySQL

Recommended Posts

Postado (editado)

Olá,

 

Eu tenho um código que insere dados no banco de dados usando um WHILE. A listagem dos dados a inserir está certinha, pois conferi com o "echo". Porém o laço somente insere os dados da primeira contagem do laço. Não sei o porque. E ele está gerando um ID auto incremetado (e chave primária) com os valores 101,201,301,401 a cada teste que faço, sendo que era para gerar 1,2,3,4...

 

Alguém tem ideia do que pode estar acontecendo?

 

Segue o códido:

 

// Grava a nova cidade no banco de dados
	  $exe_queryFundarPrimeiraCidade = mysqli_query($conexao,$sql_queryFundarPrimeiraCidade) or die("Falha inserindo gravando nova cidade. Erro: ".mysqli_error($conexao));
	  // Seleciona o ID recem gravado da nova cidade
	  $sql_retornoIdFundarPrimeiraCidade = "SELECT LAST_INSERT_ID()";
	  $exe_retornoIdFundarPrimeiraCidade = mysqli_query($conexao,$sql_retornoIdFundarPrimeiraCidade); // Retorna o ID da query acima(Primeira cidade fundada e inserida no banco de dados)
	  $idPrimeiraCidade = mysqli_fetch_array($exe_retornoIdFundarPrimeiraCidade);
	  $idPrimeiraCidadeVar = $idPrimeiraCidade[0];
	  //echo "Id da cidade gerada: " . @ID;
	  
	  for($x=1;$x<=10;$x++)
	  {
		  for($y=1;$y<=10;$y++)
		  {
			 echo "<br><br><br>";
			 echo "ID da Cidade: ".$idPrimeiraCidadeVar;
			 echo "<br>Pos X: " .$x;
			 echo "<br>Pos Y: 	" .$y;
			 $terrenoGerado = rand(1,11);
			 echo "<br>Tipo do terreno: ". $terrenoGerado; 
			 
			 $sql_geraMapaNovaCidade = "INSERT INTO mapacidade(idCidade,posX,posY,tipoTerreno) VALUES('$idPrimeiraCidadeVar','$x','$y','$terrenoGerado')";
			 $exe_geraMapaNovaCidade = mysqli_query($conexao,$sql_geraMapaNovaCidade);	
		  }  
	  }

 

Nesta parte do código ele insere os dados e está inserindo somente o conteúdo do primeiro laço:

 

$sql_geraMapaNovaCidade = "INSERT INTO mapacidade(idCidade,posX,posY,tipoTerreno) VALUES('$idPrimeiraCidadeVar','$x','$y','$terrenoGerado')";

$exe_geraMapaNovaCidade = mysqli_query($conexao,$sql_geraMapaNovaCidade);	

 

Pensei em ter algum campo errado, como a chave primária não estar bem definida ou sem o "auto increment" implementado, mas está tudo definido e implementado, creio eu, corretamente.

 

 

Obrigado.

 

 

=== EDIT ===

 

Consegui resolver. Estava tendo problemas com a chave estrangeira da tabela "cidades". Deletei a chave estrangeira e adicionei uma nova com o comando:

 


ALTER TABLE 'mapacidade' ADD CONSTRAINT `fk_cidadePertencente` FOREIGN KEY ( `idCidade` ) REFERENCES `cidades` ( `cidadeId` );

 

Resolveu.

 


Obrigado.

Editado por Insurgent3

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






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×