Follow 0 Denunciar post Postado Dezembro 29, 2009 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
Dee 0 Denunciar post Postado Dezembro 29, 2009 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
Follow 0 Denunciar post Postado Dezembro 29, 2009 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
Dee 0 Denunciar post Postado Dezembro 29, 2009 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
Follow 0 Denunciar post Postado Dezembro 29, 2009 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
Follow 0 Denunciar post Postado Dezembro 29, 2009 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
Dee 0 Denunciar post Postado Dezembro 29, 2009 Tira o DO{ E o Ultimo }While q eu fiz no código. E como está seu código! ??? Compartilhar este post Link para o post Compartilhar em outros sites
Follow 0 Denunciar post Postado Dezembro 29, 2009 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
Dee 0 Denunciar post Postado Dezembro 29, 2009 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
Follow 0 Denunciar post Postado Dezembro 29, 2009 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
Dee 0 Denunciar post Postado Dezembro 29, 2009 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
Follow 0 Denunciar post Postado Dezembro 29, 2009 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
Follow 0 Denunciar post Postado Dezembro 30, 2009 tentei recolocar o while mas nao entra em loop :/ Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 30, 2009 Mas você quer gerar essas palavras até quando ? Quando essa randomização tem que parar ? Compartilhar este post Link para o post Compartilhar em outros sites
Follow 0 Denunciar post Postado Dezembro 30, 2009 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
~TiuTalk~ 7 Denunciar post Postado Dezembro 30, 2009 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
Follow 0 Denunciar post Postado Dezembro 30, 2009 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
Follow 0 Denunciar post Postado Janeiro 3, 2010 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