Ir para conteúdo

POWERED BY:

Arquivado

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

Follow

Interpretação de Gerador de Palavras randomicas

Recommended Posts

Achei o seguinte script e gostaria de salvar da seguinte forma no banco de dados. Eu definiria os caracteres exemplo : $caracter = array('a','b','c') $tamanhomaximo_palavra = 3 e ele me retornaria as variações e salvaria no banco algo +- assim

 

a
b
c
aa
ab
ac
ba
bb
bc
ca
cb
cc
aaa
aab
aac
...
se assim sucessivamente até o fim do arquivo. No caso eu gostaria de gerar uma lista baseada no conteudo do array e salvar no banco. Segue o script que eu possuo para apenas uma palavra na tela.

 

<?
$vogais = array('a','e','i','o','u');
$consoantes = array('b','c','d','f','g','h','nh','lh','ch','j','k','l','m','n','p','qu','r','rr','s','ss','t','v','w','x','y','z',);
$palavra = '';
$tamanho_palavra = rand(2,5);
$contar_silabas = 0;
while($contar_silabas < $tamanho_palavra){
   $vogal = $vogais[rand(0,count($vogais)-1)];
   $consoante = $consoantes[rand(0,count($consoantes)-1)];
   $silaba = $consoante.$vogal;
   $palavra .=$silaba;
   $contar_silabas++;
   unset($vogal,$consoante,$silaba);
}
echo "<h3>A palavra aleatória gerado foi: $palavra</h3>";
unset($vogais,$consoantes,$palavra,$tamanho_palavra,$contar_silabas);
?>
A ideia é gravar 1 palavra por linha e caso ja exista faça algum skip. Sera que alguem pode me ajudar eu agradeço :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

1- Cria uma tabela na sua base de dados.

2- Cria uma conexão no PHP.

3- Faça um Select verificando se o que gerou já existe na tabela.

4- Se existir gera outro. Senão, insere na tabela.

 

Qual seu Banco de Dados ?

Entende sobre Banco de Dados + PHP ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - A tabela teste ja esta criada e o campo1 vai ser a coluna que vai receber as palavras

2 - Seria isso no inicio do arquivo?

$dbConnection = mysql_connect("mysql01.endereco.com.br", "user", "senha") or die("Não foi possível estabelecer uma ligação ao MYSQL!");
$dbSelected = mysql_select_db("teste",$dbConnection) or die("Não foi possível seleccionar a Base de Dados! |Conexão ao MYSQL: ".$dbConnection);

Eu to aprendendo ainda, unica experiencia que tenho com php é mexer com um script Oscomerce, sou novato mesmo querendo aprender com exemplos

Compartilhar este post


Link para o post
Compartilhar em outros sites

A conexão é assim mesmo. =)

Agora você faz um select para verificar se o numero que gerou já existe:

 

<?php

$vogais = array('a','e','i','o','u');
$consoantes = array('b','c','d','f','g','h','nh','lh','ch','j','k','l','m','n','p','qu','r','rr','s','ss','t','v','w','x','y','z',);
$palavra = '';
$tamanho_palavra = rand(2,5);
$contar_silabas = 0;
do
{
while($contar_silabas < $tamanho_palavra){
   $vogal = $vogais[rand(0,count($vogais)-1)];
   $consoante = $consoantes[rand(0,count($consoantes)-1)];
   $silaba = $consoante.$vogal;
   $palavra .=$silaba;
   $contar_silabas++;
   unset($vogal,$consoante,$silaba);
}
echo "<h3>A palavra aleatória gerado foi: $palavra</h3>";
unset($vogais,$consoantes,$palavra,$tamanho_palavra,$contar_silabas);

$sql = "select * from tabela where campo = '$palavra'";
$exe = mysql_query($sql);
$lin = mysql_num_rows($exe);

if($lin == 1)
{
   // existe, gera outro
}
else
{
   // Insere
   $ins = "insert into tabela(campo)values('$palavra')"; 
   $exe = mysql_query($ins);
}
}while($lin == 1);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai desculpa acho que fiz voce entender errado. Eu tenho esse código e gostaria de me basear nele para montar algo parecido. Assim eu definiria o caracter exemplo :'V','o','v' e o tamanho maximo que a palavra seria gerada exemplo 4 re o retorno seria salvo no banco: o, ovo, Ovo, OvO, vovo, Vovo, etc no caso ir somando os caracteres, não apenas quando eu abri a pagina toda hora ele geraria 1, no caso é uma listinha de palavras na primeira abertura de pagina e deixar gerando no fim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não consegui editar a ultima postagem, vamos la ele criou uma linha em branco na tabela e gerou o loop. Acho que é isso só determinar agora em um unico array as linhas e tamanho da palavra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parou o loop, porem continua gravando em branco um unico registro no segundo onde ocorria o loop "A palavra Gerada foi:" acho que é alguma coisa no $palavra

 

$vogais = array('a','e','i','o','u');
$consoantes = array('b','c','d','f','g','h','nh','lh','ch','j','k','l','m','n','p','qu','r','rr','s','ss','t','v','w','x','y','z',);
$palavra = '';
$tamanho_palavra = rand(2,5);
$contar_silabas = 0;
while($contar_silabas < $tamanho_palavra){
   $vogal = $vogais[rand(0,count($vogais)-1)];
   $consoante = $consoantes[rand(0,count($consoantes)-1)];
   $silaba = $consoante.$vogal;
   $palavra .=$silaba;
   $contar_silabas++;
   unset($vogal,$consoante,$silaba);
}
echo "<h3>A palavra aleatória gerado foi: $palavra</h3>";
unset($vogais,$consoantes,$palavra,$tamanho_palavra,$contar_silabas);

$sql = "select * from teste where campo1 = '$palavra'";
$exe = mysql_query($sql);
$lin = mysql_num_rows($exe);

if($lin == 1)
{
   // existe, gera outro
}
else
{
   // Insere
   $ins = "insert into teste(campo1)VALUES('$palavra')"; 
   $exe = mysql_query($ins);
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas mano, nao sei se eh isso que você ta fazendo.

Mas o select que eu fiz foi apenas um exemplo.

 

você colocou o nome certo da tabela ? e o nome da Coluna ? Tanto no Select como no Insert ?

E outra, aqui:

unset($vogais,$consoantes,$palavra,$tamanho_palavra,$contar_silabas);
você está destruindo a variável, está matando ela.

você vai pra cadeia.

 

essa linha:

unset($vogais,$consoantes,$palavra,$tamanho_palavra,$contar_silabas);
coloca por ultimo depois do else.

Compartilhar este post


Link para o post
Compartilhar em outros sites

comentei o unset($vogais,$consoantes,$palavra,$tamanho_palavra,$contar_silabas); e coloquei depois do else

Agora ta gravando outras linhas, maldito cache :)

Tipo não tem como simplificar essa conta de arrays para min, exemplo o que ta em $vogais = array('a','e','i','o','u'); apenas gerar de 1 a 3 digitos com citei no inicio do post. Eu gostei do "do while" em loop "A palavra gerada foi" e descendo a linha com varias repetições foi legal, asim eu deixaria gerando e quando nao existice mais palavras ele faria um exit do script, sei la se é possivel ou to viajando =]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo.

Qual o tipo do campo CAMPO1 ? É Varchar ? Tem que ser.

E faça assim aqui:

echo $sql = "select * from teste where campo1 = '$palavra'";
die();
$exe = mysql_query($sql);
$lin = mysql_num_rows($exe);

Veja o q mostra e posta aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim o campo é varchar, o que apareceu:

 

A palavra aleatória gerado foi: fugu

select * from teste where campo1 = 'fugu'

 

Agora esta gravando, como citei acima. Precisava de uma simplificada nele e que fica-se em loop gerando :)

To agradecendo desde ja sua paciência comigo, pois não é facil aguentar novato assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando o banco de dados pedir arrego, sei vai gerar bilhoes de palavras com essa quantidade de caracter. Quando nao exitir mais possibilidade exit ou poe um limite de registro por abertura da pagina exemplo 1000. Entendeu pq quero simplificar assim eu limitaria o caracter em 3 por exemplo e só geraria de 1 a 3 :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tá querendo gerar uma lista de todos os anagramas possíveis a partir de uma lista de caracteres e um numero x máximo de caracteres?

 

Sem Repetição de Caracteres, com 10 caracteres diferentes e com 5 caracteres por palavra:

Total de possibilidades = 10x9x8x7x6 = (10!) / (5!)

 

Com Repetição de Caracteres, com 10 caracteres diferentes e com 5 caracteres por palavra:

Total de possibilidades = 10x10x10x10x10 = 10^5

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que esse seria o termo mais correto mesmo. Pensei que seria loucura matematica minha, mas alguem ja penso antes =]

A ideia é ele gerar combinações de letras mesmo, eu definiria o caracter e a quantidade e ele geraria a "listitinha"

Compartilhar este post


Link para o post
Compartilhar em outros sites

gostaria de agradecer o pessoal que ajudou.

for ($i=1; $i<=1000; $i++)
No inicio do arquivo me ajudou bastante a compreender agora determino a quantidade de registros :)

Mas voltando a minha ideia inicial, alguem poderia me ensinar como fazer daquela maneira um unico array de caracteres somando os caracteres internos, assim eu saberia o que ja foi gerado, no caso ai ta gerando coisa randomica.

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.