Ir para conteúdo

POWERED BY:

Arquivado

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

Walck

[Resolvido] Problema com IF e ELSE

Recommended Posts

Estou fazendo um sistema para importação de um file csv , mas me deparei com mais um problema

 

coloquei uma condição que ao importar se na coluna estiver a palavra NORTE ele deve assumir que o valor seria 1 e gravar no bd e se na coluna estiver a palavra SUL ele deve assumir o valor como 2 ....

 

Não sei se são os meus IF que estão dando problema ou se não estou conseguindo indicar a variavel corretamente por favor me ajudem , já li e reli o que fala o manual sobre if e else e não encontrei segue o codigo abaixo:

 

ah, não esta dando erro algum apenas ele não obedece a troca que eu mandei...

 

 

$arq = fopen($arquivo,'r');// le o arquivo txt
$k = 0;
while( $conteudo = fgets($arq) ){

	if( $k > 0 and trim( $conteudo ) != '' ){
	
	 $rand = mt_rand() . "\n";

	 $linha = explode(';', $conteudo);// divide por coluna onde tiver ponto e virgula
		
if (mysql_num_rows(mysql_query("SELECT * FROM `teste` WHERE `email` = '".$linha[1]."'")) > 0) {
echo "<p>registro duplicado.</p>";
 } else {

if ($linha[2] == "NORTE") {
$linha[2] = "1"; 
} else {
if ($linha[2] == "SUL")
$linha[2] = "2";
}
 $sql = "INSERT INTO $tabela (id, empresa, email, grupo_id, regiao_id, rand, status ) VALUES ('', '" . $linha[0] . "', '" . $linha[1] . "', '" . $linha[2] . "', '6', '$rand', '0')";
		$result = mysql_query($sql) or die(mysql_error());
		
		
}
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

No CSV tá:

 

"NORTE";"SUL"

 

ou

 

NORTE;SUL

 

?

 

Se for o primeiro caso você precisa mudar o IF pra isso:

 

...

if ($linha[2] == '"NORTE"') {

...

Ou seja: precisa incluir as aspas na string de comparação. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po cara como sempre você me dando mó força valew msm , entao está assim:

 

NORTE;SUL ou seja sem as aspas...abraço

 

cara eu to achando que precisaria ter isso '".$linha[2]."' no nome da variavel... será que é isso ??

 

 

No CSV tá:

 

"NORTE";"SUL"

 

ou

 

NORTE;SUL

 

?

 

Se for o primeiro caso você precisa mudar o IF pra isso:

 

...

if ($linha[2] == '"NORTE"') {

...

Ou seja: precisa incluir as aspas na string de comparação. ;)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só... Vou te dar uma sugestão. Sempre identa o código para ficar mais fácil de entender a lógica que está seguindo, principalmente por ter muitos ifs e elses. Refiz a identação e coloquei um elseif na linha

} elseif ($linha[2] == "SUL") {

Confere se a lógica que está seguindo está correta.

<?php
while( $conteudo = fgets($arq) ){
	if( $k > 0 and trim( $conteudo ) != '' ){
		$rand = mt_rand() . "\n";
		$linha = explode(';', $conteudo);// divide por coluna onde tiver ponto e virgula
		if (mysql_num_rows(mysql_query("SELECT * FROM `teste` WHERE `email` = '".$linha[1]."'")) > 0) {
			echo "<p>registro duplicado.</p>";
		} else {
			if ($linha[2] == "NORTE") {
				$linha[2] = "1"; 
			} elseif ($linha[2] == "SUL") {
				$linha[2] = "2";
			}
		$sql = "INSERT INTO $tabela (id, empresa, email, grupo_id, regiao_id, rand, status ) VALUES ('', '" . $linha[0] . "', '" . $linha[1] . "', '" . $linha[2] . "', '6', '$rand', '0')";
		$result = mysql_query($sql) or die(mysql_error());
	}
}
?>

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso que é estranho não da nenhum erro e imporat sem nenhum problema só que de jeito nehum ele consegue substituir NORTE PARA 1 E SUL PARA 2... ME AJUDEM HEHEHE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, faz um teste pra ver como está ficando o array:

$linha = explode(';', $conteudo);// divide por coluna onde tiver ponto e virgula
echo '<pre>';
print_r($linha);
echo '</pre>';
exit;

Ele vai imprimir o array com as posições. De repente o que pode estar acontecendo é que o NORTE ou SUL não estão na posição 2 e sim em outra posição.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

A situação continua estranha ,

 

matias_rezende valeu pela força então não é a posição errada pq ele consegue gravar no bd as palavras norte sul o que ele não consegue e achar norte e ao invés de gravar norte gravar 1....

 

~TiuTalk~ amigão , cara fiz o que você me sugeriu mas não sei se fiz certo , o que passou acontecer foi gravar nda no bd como se fosse " "... nao sei se fiz certo o que você falou....

 

 

galera me ajuda por favor a descobrir q situação estranha é esta abraço

 

 

 

Estou fazendo um sistema para importação de um file csv , mas me deparei com mais um problema

 

coloquei uma condição que ao importar se na coluna estiver a palavra NORTE ele deve assumir que o valor seria 1 e gravar no bd e se na coluna estiver a palavra SUL ele deve assumir o valor como 2 ....

 

Não sei se são os meus IF que estão dando problema ou se não estou conseguindo indicar a variavel corretamente por favor me ajudem , já li e reli o que fala o manual sobre if e else e não encontrei segue o codigo abaixo:

 

ah, não esta dando erro algum apenas ele não obedece a troca que eu mandei...

 

 

$arq = fopen($arquivo,'r');// le o arquivo txt
$k = 0;
while( $conteudo = fgets($arq) ){

	if( $k > 0 and trim( $conteudo ) != '' ){
	
	 $rand = mt_rand() . "\n";

	 $linha = explode(';', $conteudo);// divide por coluna onde tiver ponto e virgula
		
if (mysql_num_rows(mysql_query("SELECT * FROM `teste` WHERE `email` = '".$linha[1]."'")) > 0) {
echo "<p>registro duplicado.</p>";
 } else {

if ($linha[2] == "NORTE") {
$linha[2] = "1"; 
} else {
if ($linha[2] == "SUL")
$linha[2] = "2";
}
 $sql = "INSERT INTO $tabela (id, empresa, email, grupo_id, regiao_id, rand, status ) VALUES ('', '" . $linha[0] . "', '" . $linha[1] . "', '" . $linha[2] . "', '6', '$rand', '0')";
		$result = mysql_query($sql) or die(mysql_error());
		
		
}
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

... nao sei se fiz certo o que você falou....

 

 

galera me ajuda por favor a descobrir q situação estranha é esta abraço

Mostre como você está fazendo, se não é impossível adivinharmos onde está o erro. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

... nao sei se fiz certo o que você falou....

 

 

galera me ajuda por favor a descobrir q situação estranha é esta abraço

Mostre como você está fazendo, se não é impossível adivinharmos onde está o erro. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

heheh verdade William não acredito que seja tão dificil não sei mais o que fazer para o array assumir o valor que eu estou passando se vier com SUL grava no bd com 2 e se vier como NORTE gravar no bd 1:

 

 

 

$arq = fopen($arquivo,'r');// le o arquivo txt

$k = 0;
while( $conteudo = fgets($arq) ){
	if( $k > 0 and trim( $conteudo ) != '' ){
		$rand = mt_rand() . "\n";
		$linha = explode(';', $conteudo);// divide por coluna onde tiver ponto e virgula
		if (mysql_num_rows(mysql_query("SELECT * FROM `teste` WHERE `email` = '".$linha[1]."'")) > 0) {
			echo "<p>registro duplicado.</p>";
		} 
		
			 if($linha[2] == "NORTE") { 
			  $linha[2] = "1"; }
			 if($linha[2] == "SUL") {
				$linha[2] = "2"; }
				
							
		$sql = "INSERT INTO $tabela (id, empresa, email, grupo_id, regiao_id, rand, status ) VALUES ('', '" . $linha[0] . "', '" . $linha[1] . "', '6', '". $linha[2] . "', '$rand', '0')";
		$result = mysql_query($sql) or die(mysql_error());
	
}
	$k++;

$t = $k-1;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente isso:

 

$varDB = 'TESTE';

$linha[2] = trim($linha[2]); // Tira espaços ao redor de $linha[2]

if($linha[2] == "NORTE") {
	$varDB = "1";
} else if($linha[2] == "SUL") {
	$varDB = "2";
}

$sql = "INSERT INTO `".$tabela."` (`id`, `empresa`, `email`, `grupo_id`, `regiao_id`, `rand`, `status` ) VALUES (NULL, '" . $linha[0] . "', '" . $linha[1] . "', '6', '". $varDB . "', '".$rand."', '0')";
Criei uma nova variável (como tinha dito antes)... Verifique se agora funciona, se não funcionar, dê echo no $sql e veja como a query está sendo montada e coloque aqui no fórum.

 

Por ultimo, execute isso:

var_dump($linha[2]); exit;

 

Que vai te dizer exatamente como é a variavel $linha[2]

 

...

 

Esse problema já era pra estar resolvido. :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse problema já era pra estar resolvido. :P

 

CARACA!!!!!

 

O problema era justamente estes malditos espaços:

$linha[2] = trim($linha[2]); // Tira espaços ao redor de $linha[2]

FUNCIONOU 100% ai desativei esta linha pra saber se o motivo de ter dado certo era por causa do espaços e batata quando desativei não deu certo, cara sem palavras pra te agradescer muuuuuuuuuuuito obrigado msm estava quase desistindo deste caminho.... abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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