Ir para conteúdo

Arquivado

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

elitediego

[Resolvido] Update pelo php no mysql

Recommended Posts

olá pessoal!

 

tenho um campo em uma tabela no mysql que armazena email, porem ñ tinha validação na hora de entrar com dados pelo php e os usuários algumas vezes entravam com dados assim: fulano ao invés de fulano@exemplo.com , o que eu preciso é alterar os dados completando no email: fulano + @exemplo.com.

 

ALGUÉM SABE COMO FAZER ISSO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

claro, no mysql tem ser ASP que é a linguagem do windowns. é mto dificil você colocar PHP no mysql.

só conheço um jeito para conciliar os dois. com o sistema hibrido, que concilia as duas linguagens PHP+ASP

Conheço um host bom, a Inter.net. já trabalhei com eles e o sistema deles de hospedagem hibrida é mto bom e único. só eles tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas será que não tem jeito de montar uma query e acrescentar o @exemplo.com em todos os campos que estão com email imcompleto ou fazer isso pelo php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu já tentei criar o loop e fazer a verificação o problema é na hora de fazer o update ele não acrescenta o @exemplo.com ele substitui

Compartilhar este post


Link para o post
Compartilhar em outros sites

claro, no mysql tem ser ASP que é a linguagem do windowns. é mto dificil você colocar PHP no mysql.

só conheço um jeito para conciliar os dois. com o sistema hibrido, que concilia as duas linguagens PHP+ASP

Conheço um host bom, a Inter.net. já trabalhei com eles e o sistema deles de hospedagem hibrida é mto bom e único. só eles tem.

 

Da onde você tirou que precisa usar ASP pra conectar com MySQL?

 

PHP + MySQL é a combinação mais usada na internet e o MySQL é usado mais em ambiente Linux do que Windows.

 

Até pouco tempo atrás a maioria dos hosts só disponibilizavam apenas Access ou SQL Server para usar em conjunto com o ASP, portanto, essa linguagem sim não é nativa pra trabalhar com MySQL. O PHP tem drivers nativos para se conectar com o MySQL.

 

Se você desconhece o assunto por favor não poste informações equivocadas no fórum, pois isso pode prejudicar muita gente.

 

eu já tentei criar o loop e fazer a verificação o problema é na hora de fazer o update ele não acrescenta o @exemplo.com ele substitui

 

Você tem que concatenar o registro atual com o restante do e-mail.

 

Poste o código do seu loop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Taí Leozitho o código, no final tem um echo para testar o resultado e está imprimindo @netway.psi.br ao invés de fulano@netway.psi.br

 

<?php
include "conexao_cliente.php";

$sql= "select email1 from clientes";
$resultado= mysql_query($sql);

       while($registros = mysql_fetch_array($resultado))
	{

            if (strstr($registros['email1'], "@"))
                      {
                         $email1= $registros['email1'];
		} else {
		        $email1= $registros['email1']."@netway.psi.br";

				}


       }
         echo  $email1;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

acredito que dava para fazer com uma unica query, direto no banco.

 

usando um UPDATE REPLACE()

 

mas ai precisa pesquisar um pouco, por causa do IF() ou REGEXP()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que deva haver algum espaço depois do nome, tente usar a função trim para remover eventuais espaços.

 

$email1= trim( $registros['email1'] ) . '@netway.psi.br';

 

EDIT:

 

Desculpe, entendi errado o problema, pensei que estava tendo um espaço depois do nome mas na verdade ele está exibindo apenas depois do '@' certo?

 

Neste caso provavelmente o registro do campo "email1" está vazio, você já verificou isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

acredito que dava para fazer com uma unica query, direto no banco.

 

usando um UPDATE REPLACE()

 

mas ai precisa pesquisar um pouco, por causa do IF() ou REGEXP()

 

É exatamente isso que eu quero e tenho pesquisado só que eu to com muita dificuldade e por isso eu to tentando com php é que eu não tenho muita habilidade com () ou REGEXP() ,mas se me ajudadrem eu tento...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você não entende de expressões regulares não convem tentar usá-las neste momento, só irá atrasar o seu trabalho. A não ser que você tenha tempo para estudá-las.

 

Dei uma melhorada no seu código, tente dessa forma:

 

<?php
include 'conexao_cliente.php';

$sql= 'SELECT email1 FROM clientes';
$query = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_object($query)) {
if (!empty($row->email1)) {
	$email = $row->email1;
	if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) === FALSE ) {
		$email = $email . '@netway.psi.br';
	}
	echo '<li>' . $email . '</li>' . PHP_EOL;
}
}

mysql_free_result($query);

 

Se todos os e-mails retornarrem corretamente você pode fazer o update. Se tiver algum erro no SQL ele vai exibir.

Compartilhar este post


Link para o post
Compartilhar em outros sites
claro, no mysql tem ser ASP que é a linguagem do windowns. é mto dificil você colocar PHP no mysql.

só conheço um jeito para conciliar os dois. com o sistema hibrido, que concilia as duas linguagens PHP+ASP

Conheço um host bom, a Inter.net. já trabalhei com eles e o sistema deles de hospedagem hibrida é mto bom e único. só eles tem.

Acho que você está confundido MySQL com M$SQL (Micro$oft SQL).

MySQL é open-source e trabalha nativamente com o PHP.

ASP + MySQL pode até existir, mas não é original.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é pessoal infelizmente tô tendo problema com a query, ela estã colocando Resource id #4 no primerio campo nos demais não acontece nada, alguém sabe me dizer o que pode ser?

 

<?php

include 'conexao_cliente.php';

$sql= 'SELECT email1 FROM clientes';
$query = mysql_query($sql) or die(mysql_error());

	while ($row = mysql_fetch_object($query)) {
			if (!empty($row->email1)) {
					$email = $row->email1;
					if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) === FALSE ) {
							$email = $email . '@netway.psi.br';
					}
					echo '<li>' . $email . '</li>' . PHP_EOL;
			}
	}

mysql_free_result($query);

$up= "UPDATE `netxxx`.`clientes` SET `email1` = '$query' WHERE `clientes`.`id` = '010301'";

$query2 = mysql_query($up);
if ($query2)
	echo "ok";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem q colocar a query dentro do loop, e usar a variavel $email

 

 

 $up= "UPDATE `netxxx`.`clientes` SET `email1` = '$email' WHERE ...;

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei assim e ñ funcionou...

 

<?php

include 'conexao_cliente.php';

$sql= 'SELECT email1 FROM clientes';
$query = mysql_query($sql) or die(mysql_error());

	while ($row = mysql_fetch_object($query)) {
			if (!empty($row->email1)) {
					$email = $row->email1;
					if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) === FALSE ) {
							$email = $email . '@netxx.psi.br';

							$up= "UPDATE `netway2`.`clientes` SET `email1` = '$email' WHERE `clientes`.`email` = '$query'";

					}
					echo '<li>' . $email . '</li>' . PHP_EOL;
			}
	}

mysql_free_result($query);



$query2 = mysql_query($up);
if ($query2)
	echo "ok";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso aqui:

 

        $query2 = mysql_query($up);
       if ($query2)
               echo "ok";

também deve ficar dentro do loop.

 

cara, analisa oque você tá fazendo. Um pouco de lógica só.

 

 

o teu WHERE está incorreto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

po eu modifiquei a query...

 

<?php

include 'conexao_cliente.php';

$sql= 'SELECT email1 FROM clientes';
$query = mysql_query($sql) or die(mysql_error());

	while ($row = mysql_fetch_object($query)) {
			if (!empty($row->email1)) {
					$email = $row->email1;
					if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) === FALSE ) {
							$email = $email . '@netway.psi.br';

							$up= "UPDATE `netway2`.`clientes` SET `email1` = '$email' WHERE `clientes`.`email1` = '$query'";

					}
					echo '<li>' . $email . '</li>' . PHP_EOL;
			}

			 $query2 = mysql_query($up);
       if ($query2)
               echo "ok";

	}

mysql_free_result($query);



/*$query2 = mysql_query($up);
if ($query2)
	echo "ok";*/

?>

 

o echo mostra isso:

 

Notice: Undefined variable: up in C:\Users\programacao\Desktop\webserver_apache_php_mysql\root\coti\banco.php on line 20

 

Notice: Undefined variable: up in C:\Users\programacao\Desktop\webserver_apache_php_mysql\root\coti\banco.php on line 20

 

Notice: Undefined variable: up in C:\Users\programacao\Desktop\webserver_apache_php_mysql\root\coti\banco.php on line 20

Resource id #4@netway.psi.br

okokokokokokokokokokokokokokokokokokok

denisesilva@netway.psi.br

okokokok

naysa@netway.psi.br

ok

andergg@netway.psi.br

okokokok

susanasoares@netway.psi.br

 

e no banco apenas a primeiro campo entra esse valor: Resource id #4@netway.psi.br

quando na verdade deveria entrar em todos o proprio valor do campo+@netway.psi.br tipo: fulano@netway.psi.br

 

será que eu tenho que usar um mysql_fetch_array? ou algo do tipo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o William falou a cláusula WHERE também está errada. Sua tabela não tem uma chave primária não? Se tiver é melhor usar esta chave na hora do update.

a tabela tem chave primária o que eu não to sabendo montar a query correta com o where certinho.

 

pensei que tinha dado certo, mas ta inserindo o primero email pra todo mundo, tipo em todos os campos ta aparecendo fulano@exemplo.com e ainda tá exibindo na tela o seguinte erro: Notice: Undefined variable: up in C:\Users\

 

E AGORA O QUE TÁ DANDO ERRADO?

 

	include 'conexao_cliente.php';

$sql= 'SELECT email1 FROM clientes';
$query = mysql_query($sql) or die(mysql_error());

	while ($row = mysql_fetch_object($query)) {
			if (!empty($row->email1)) {
					$email = $row->email1;
					if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) === FALSE ) {
							$email = $email . '@netway.psi.br';

							$up= "UPDATE `netway2`.`clientes` SET `email1` = '$email' WHERE `clientes`.`id` > 0";

					}
					echo '<li>' . $email . '</li>' . PHP_EOL;
			}

			 $query2 = mysql_query($up);
       if ($query2)
               echo "ok";

	}

mysql_free_result($query);

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.