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


Moderador: web

 

foreach só pega a ultima entrada do array()

07-06-2007 20:42

Tenho este codigo:
// Verifica se o assunto tem o ticket_id $sql_tickets = mysql_query("SELECT * FROM tickets"); while ($dados_tickets_existentes = mysql_fetch_array($sql_tickets)) { $tickets_existentes_id[] = $dados_tickets_existentes[ticket_id]; } foreach ($tickets_existentes_id as $ticket_id_busca) { echo $ticket_id_busca; echo "<br>"; if(eregi($ticket_id_busca,$head['subject'])) { $array_preenchido = "SIM"; $ticket_id_existente = $ticket_id_busca; } else { $array_preenchido = "NAO"; $ticket_id_existente = $ticket_id_busca; } }

No while é criado um array com todos os tickets_id do banco de dados ex:
Array ( [0] => XXX1 [1] => YYY2 [2] => ZZZ3 )

O problema é que o foreach só "vê" a ultima entrada que seria ZZZ3 como faço apra que ele percorra toda a array?
0
 

foreach só pega a ultima entrada do array()

07-06-2007 21:02

Resolvi colocando um break quando um resultado bater:

if(eregi($ticket_id_busca,$head['subject'])) {
$array_preenchido = "SIM";
$ticket_id_existente = $ticket_id_busca;
break;
} else {
$array_preenchido = "NAO";
$ticket_id_existente = $ticket_id_busca;
}
}

Isso é o certo a se fazer? Sera que vai funcionar mesmo? Testei muito aqui e deu certo em todos testes, mas estou em duvidas se ta 100%
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17743
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

foreach só pega a ultima entrada do array()

07-06-2007 21:07

Sim, mas, qual é o seu objetivo nessa consulta?

Se for verificar a existência no BD, poderia fazer assim:
SELECT * FROM tabela WHERE seucampo='talvalor'

ai, trabalharia com mysql_num_rows() para verificar se retornou linha, se o retorno for >= 1 existe, caso contrário não existe.
0
A melhor hospedagem para o seu site HostGator!
 

foreach só pega a ultima entrada do array()

07-06-2007 21:52

eu ja tinha tentado diretamente no mysql, e nao tinha dado, estava usando assim: campo like '$variavel' mas agora me lembrei que eu nao colquei os % la assim: campo like '%$variavel%'

Porque eu quero buscar uma palavra numa frase entende.

Tipo buscar Inser na frase: Olá Insert, tudobem?

Vou testar agora com isso e te aviso dai, mas de qualquer forma ja ta funcioando da forma que eu queria :)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17743
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

foreach só pega a ultima entrada do array()

07-06-2007 22:05

Blz ¨menupic¨
0
A melhor hospedagem para o seu site HostGator!
 

foreach só pega a ultima entrada do array()

07-06-2007 22:05

Testei aqui e nao deu nao: campo like '%$variavel%'

Exibe 0, tem alguma outra forma sera?

Tipo tenha esta frase:
RE: [XXXX] Ola, bla, bla bla

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

foreach só pega a ultima entrada do array()

07-06-2007 22:06

Vou fazer uns testes e passo o resultado.
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17743
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

foreach só pega a ultima entrada do array()

07-06-2007 22:26

Fiz alguns testes aqui.

frases:
meu texto abc
texto meu abc

Se uso: SELECT * FROM tabela WHERE campo LIKE '%texto%'
Obtenho ambas linhas

Se uso: SELECT * FROM tabela WHERE campo LIKE 'texto%'
Obtenho somente a segunda frase, que começa com: texto

Se uso: SELECT * FROM tabela WHERE campo LIKE '%texto'
Obtenho somente a primeira frase, não pega nada com o 'texto' no começo do campo

Ou seja, ambos selects tem como base o tipo de informação buscada e posição da palavra dentro da tabela.

A partir dai, dá para ter uma base.

No caso, o mais recomendado é o %texto% que busca em todo texto.

O exemplo que usei é:

<?php $conexao = mysql_connect("localhost", "login", "senha") or die(mysql_error()); $db = mysql_select_db("bancodedados"); ?> <?php $selec = "SELECT * FROM tabela WHERE campo LIKE '%texto%'"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); $total = mysql_num_rows($exec); ?> <?php while($dados=mysql_fetch_array($exec)) { extract($dados); echo $campo."<br>"; } echo "total de $total dado(s)."; ?> <?php mysql_close($conexao); ?>

0
A melhor hospedagem para o seu site HostGator!

Quem está online

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