Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

03-05-2011 21:06

Cara me da uma luz em uma parada.
Tenho no banco de dados a tabale A. Nela tenho o campo produto e código.
Cada produto tem seu código, mas os nomes estão repetidos.
Queria fazer alguma coisa para pegar os campos repetidos, exemplo:

produto: lápis - código: 01
produto: lápis - código: 02
produto: lápis - código: 03


e tranformar em:

produto: lápis a - código: 01
produto: lápis b - código: 02
produto: lápis c - código: 03


Ou coisa parecida. Derrepente só acrescentar o código no final para diferenciar os nomes dos produtos.

É isso.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

03-05-2011 21:22

Eu fiz uma base aqui de como pode ser identificado e alterado valores repetidos, só que usando array e session. Não é complicado trabalhar esses valores no MySQL, estude o script e leia os comentários.

É importante que os itens da lista estejam em ordem alfabética, para que a comparação dos valores seja precisa.

<?php // A SESSION É USADA PARA ARMAZENAR O ÚLTIMO VALOR DA LISTA session_start(); // ESSE ARRAY SIMULA A CONSULTA, ONDE TERÁ VÁRIOS RESULTADOS $array = Array("eee", "aaa", "aaa", "aaa", "abc", "ddd"); // ESSE VALOR É O DA SESSION, QUE ARMAZENA O ÚLTIMO VALOR LISTADO $_SESSION['v']= ""; // AQUI É O QUE SERÁ ADICIONADO AO VALOR DA LISTA, QUANDO REPETIDO $soma = 0; // ESSE FOREACH REPRESENTA O WHILE, QUE IRÁ RETORNAR TODOS VALORES DA LISTA foreach($array AS $v) { // AQUI SIMULA O ECHO DENTRO DO WHILE, MOSTRANDO OS VALORES DO BD echo "$v"; // ESSE IF DEVE ESTAR DENTRO DO WHILE, SERVE PARA MOSTRAR O VALOR AO LADO DO ITEM DA LISTA if($v==$_SESSION['v']) {  $soma++; echo $soma;  } // SEPARAMOS COM UMA QUEBRA DE LINHA PARA EXIBIR O PRÓXIMO ITEM DA CONSULTA / FOREACH echo "<br />"; // AQUI SALVAMOS NA SESSION O VALOR LISTADO ATUALMENTE, QUE LÁ EMCIMA SERÁ COMPARADO $_SESSION['v'] = $v; } // AQUI SERIA O FECHAMENTO DO WHILE DA CONSULTA MYSQL ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

04-05-2011 08:21

Cara, perfeito. Era isso mesmo.
Só acho que vou adaptar para listar somente os que repetem e depois fazer um update.

Ficou assim:

session_start(); include "banco.php"; $_SESSION['v']= ""; $soma = 1; $strSQL = "SELECT * FROM produtos"; $qrSQL = mysql_query($strSQL) or die(mysql_error()); while($row = mysql_fetch_array($qrSQL)){ $produto = $row['produto']; echo $produto; if($produto==$_SESSION['v']) { $soma++; echo ' - mod. '.$soma; } echo "<br />"; $_SESSION['v'] = $produto; }  

Valeu.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

04-05-2011 08:29

Boa.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

04-05-2011 08:42

Putz quase tudo certo. Agora reparei uma coisa.
No teu exemplo que é mais fácil de entender.

exeplo: array('aaa', 'aaa', 'aaa', 'bbb', 'bbb', 'bbb').

lista:
aaa
aaa1
aaa2
bbb3 -> Aqui começa a bronca. Queria que fosse bbb1 (UM hovamente).
bbb4
bbb5.

abraço.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

04-05-2011 10:46

Mas, bbb é repetido, tipo:

aaa
aaa
abc
bbb
bbb
ddd?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

04-05-2011 11:28

Sim. Eu tenho o produto:
parafuso cód 01
parafuso cód 02
parafuso cód 03


e tenho

porca
porca
porca


Queria que ficasse:

parafuso
parafuso2
parafuso3


e

porca
porca2
porca3


Mas está ficando assim:

parafuso
parafuso2
parafuso3


e

porca4
porca5
porca6
.

Está pegando na continuidade e não voltando no produto separadamente.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

04-05-2011 12:11

Fiz umas modificações, adicionando o valor incrementado em uma SESSION, confere ai

<?php // A SESSION É USADA PARA ARMAZENAR O ÚLTIMO VALOR DA LISTA session_start(); // ESSE ARRAY SIMULA A CONSULTA, ONDE TERÁ VÁRIOS RESULTADOS $array = Array("eee", "aaa", "aaa", "aaa", "abc", "ddd", "ddd", "ddd", "eee", "sss"); // ESSE VALOR É O DA SESSION, QUE ARMAZENA O ÚLTIMO VALOR LISTADO $_SESSION['v']= ""; // AQUI É O QUE SERÁ ADICIONADO AO VALOR DA LISTA, QUANDO REPETIDO //$soma = 0; // SALVANDO A SOMA EM SESSION, PARA INCREMENTAR NO FOREACH $_SESSION['soma'] = 0; // ESSE FOREACH REPRESENTA O WHILE, QUE IRÁ RETORNAR TODOS VALORES DA LISTA foreach($array AS $v) { // AQUI SIMULA O ECHO DENTRO DO WHILE, MOSTRANDO OS VALORES DO BD echo "$v"; // ESSE IF DEVE ESTAR DENTRO DO WHILE, SERVE PARA MOSTRAR O VALOR AO LADO DO ITEM DA LISTA if($v==$_SESSION['v']) { $_SESSION['soma']++; echo $_SESSION['soma']; } // QUANDO OS VALORES FOREM DIFERENTES, ZERA A SESSION, E INICIA NO 0 if($v!=$_SESSION['v']) { $_SESSION['soma']="0"; } // SEPARAMOS COM UMA QUEBRA DE LINHA PARA EXIBIR O PRÓXIMO ITEM DA CONSULTA / FOREACH echo "<br />"; // AQUI SALVAMOS NA SESSION O VALOR LISTADO ATUALMENTE, QUE LÁ EMCIMA SERÁ COMPARADO $_SESSION['v'] = $v; } // AQUI SERIA O FECHAMENTO DO WHILE DA CONSULTA MYSQL ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

04-05-2011 13:06

Maravilha meu guru.
Agora perfeitaço.
Ficou assim.

<?php session_start(); include "arquivados/connDB.php"; $_SESSION['v']= ""; $_SESSION['soma'] = 0; $strSQL = "SELECT produto FROM produtos ORDER BY produto ASC"; $qrSQL = mysql_query($strSQL) or die(mysql_error()); while($row = mysql_fetch_array($qrSQL)){ echo $produto = trim($row['produto']); if($produto==$_SESSION['v']) { $_SESSION['soma']++; echo ' - mod. '.$_SESSION['soma']; } if($produto!=$_SESSION['v']) { $_SESSION['soma']= 0; } echo "<br />"; $_SESSION['v'] = $produto; } ?>

Muti obrigado.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

04-05-2011 13:08

:)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

04-05-2011 18:25

Cara.
Agora não consigo fazer o update funcionar.
Ele faz mas fica tudo com o número 1. hehe...
O que posso estar fazendo errado?
Me socorre.
abraço.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

04-05-2011 18:27

Em que parte do script colocou o update?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

04-05-2011 18:46

Coloquei dentro do if($produto==$_SESSION['v']).
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

04-05-2011 18:47

O melhor ponto para colocar o UPDATE seria abaixo desse trecho:

// AQUI SIMULA O ECHO DENTRO DO WHILE, MOSTRANDO OS VALORES DO BD echo "$v"; // ESSE IF DEVE ESTAR DENTRO DO WHILE, SERVE PARA MOSTRAR O VALOR AO LADO DO ITEM DA LISTA if($v==$_SESSION['v']) { $_SESSION['soma']++; echo $_SESSION['soma']; } 

Nessa parte você recebe o valor normal da consulta e o valor da SESSION.

Nesse caso como valor a ser atualizado na tabela, deve ser uma variável que contenha o valor da consulta junto com o echo da SESSION.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

04-05-2011 19:02

Eu fiz assim.

//$produto vem do banco. $s = "UPDATE produtos SET produto = '".$produto.$_SESSION['soma']."'"; mysql_query($s); 

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

04-05-2011 19:37

Eu fiz um teste aqui, colocando

echo "UPDATE produtos SET produto = '".$v.$_SESSION['soma']."'"; 

Logo depois do fechamento do if que incrementa a SESSION, e exibiu os valores sem problema com a numeração.

Mas, acho que você deve pegar o id, para definir qual o campo seria alterado, caso contrário vai dar erro, por exemplo:

UPDATE campotal SET campotal='$valor' WHERE id='$id'

Ai você no while vai atualizar o campo atual, e não todos.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

04-05-2011 23:52

Não deu certo. Se coloco abaixo do if retorna tudo 0 e coloco dentro retorna 1.
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

Listar identificar e mudar campo repetido

05-05-2011 09:50

Código final.
Aparentemente tudo certo.
Dá uma olhada e veja o que acha.
Será que está tudo correto?

session_start(); include "banco.php"; $_SESSION['v']= ""; $_SESSION['soma'] = 0; $strSQL = "SELECT * FROM produtos ORDER BY produto ASC"; $qrSQL = mysql_query($strSQL) or die(mysql_error()); while($row = mysql_fetch_array($qrSQL)){ $produto = trim($row['produto']); $id = $row['id_produto']; $cod = $row['codigo']; if($produto==$_SESSION['v']) { $_SESSION['soma']++; } // A qui faço o update se for diferente de 0. E fiz diferente em vez de acrescentar números,  // peguei o código do produto e coloquei. Acho que ficou melhor.  // Até porque tem um produto que tem mais de 200 opções com o mesmo nome e características, o que muda é somente o código. if($_SESSION['soma'] != 0){ echo $sql = "UPDATE produtos SET produto = '".$produto.$cod."' WHERE id_produto='".$id."'"; mysql_query($sql) or die ("Não foi possível alterar os dados"); } if($produto!=$_SESSION['v']) { $_SESSION['soma']= 0; } //echo "<br />"; $_SESSION['v'] = $produto; }

Um abraço e mais uma vez muito obrigado pela força.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17666
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar identificar e mudar campo repetido

05-05-2011 10:07

Sim, aparentemente está ok.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado