ana88 Posted February 5, 2014 at 11:26 AM Report #544035 Posted February 5, 2014 at 11:26 AM Ola amigos sou nova aqui no forum. E estou aqui porque tenho que fazer um projecto, e já procurei por todo o lado e não encontro solução para me ajudar. 😞 O projecto consiste em comparar chaves vencedoras, com chaves jogadas de um sorteio. exemplo Euromilhoes a bd contem tabela chaves_vencedoras id_cv data_sorteio n1 n2 n3 n4 n5 e1 e2 e terei uma página em que terá um form para o utilizador inserir os seus 5 nº jogados mais as 2 estrelas e o que eu quero é que se compare os números introduzidos pelo utilizador com os que eu inseri na bd e me devolva os números acertados e quantos. ex: na bd tem n1 - 10 n2 - 15 n3 - 20 n4 - 45 n5 - 47 e1 - 1 e2 - 5 e o utilizador coloca os seus na Página form n1 - 4 n2 - 14 n3 - 40 n4 - 45 n5 - 47 e1 - 2 e2 - 5 neste caso teria que devolver Acertou 2 números(40,45) e 1 estrela (5) Espero ter explicado bem a ideia. espero que me ajudem , por favor,
bioshock Posted February 5, 2014 at 11:43 AM Report #544040 Posted February 5, 2014 at 11:43 AM (edited) Só tens de substituir para dados vindos da base de dados. $numbers_drawn = array("n1" => 10, "n2" => 15, "n3" => 20, "n4" => 45); $numbers_user = array("n1" => 4, "n2" => 15, "n3" => 40, "n4" => 45) $match = array(); for($i = 0; $i <= count($numbers_drawn) - 1; $i++){ for($y = 0; $y <= count($numbers_user) - 1; $y++){ if($numbers_drawn[$i] == $numbers_user[$y]){ array_push($match, $numbers_user[$y]); } } } Edited February 5, 2014 at 11:44 AM by bioshock
HappyHippyHippo Posted February 5, 2014 at 12:31 PM Report #544052 Posted February 5, 2014 at 12:31 PM (edited) // ligação à base de dados $db = ...; // altera para o id_cv que pretendes $id_cv = 1; $numbers = $db->query("select n1, n2, n3, n4, n5 chaves_vencedoras where id_cv = '{$id_cv}'")->fetch_assoc(); $stars = $db->query("select e1, e2 chaves_vencedoras where id_cv = '{$id_cv}'")->fetch_assoc(); // vou assumir que os dados vêm em POST e com os nomes apresentados no problema (n1, n2, ..., e1, e2) $nmatch = array(); $ematch = array(); foreach ($_POST as $name => $value) { if ($name[0] == 'n' && array_search($value, $numbers) !== false) $nmatch[] = $value; elseif ($name[0] == 'e' && array_search($value, $starts) !== false) $ematch[] = $value; } echo "Acertou ".count($nmatch)." números(".implode(", ", $nmatch).") e ".count($ematch)." estrela (".implode(", ", $ematch).")"; edit : correcção do último implode de $nmatch para $ematch Edited February 5, 2014 at 01:21 PM by HappyHippyHippo 2 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ana88 Posted February 5, 2014 at 02:05 PM Author Report #544061 Posted February 5, 2014 at 02:05 PM Muito obrigado, vou experementar e já digo alguma coisa. agradeça a vossa ajuda
ana88 Posted February 5, 2014 at 03:37 PM Author Report #544074 Posted February 5, 2014 at 03:37 PM Bem estou a tentar testar mas estou com problema a conectar-me a base de dados e não sei porque, porque sempre fiz assim e funciona mas desta vez não me está a dar eu criei esta tabela CREATE TABLE `chaves` ( `id` int(11) NOT NULL auto_increment, `data` timestamp NOT NULL default CURRENT_TIMESTAMP, `n1` varchar(3) NOT NULL, `n2` varchar(3) NOT NULL, `n3` varchar(3) NOT NULL, `n4` varchar(3) NOT NULL, `n5` varchar(3) NOT NULL, `e1` varchar(3) NOT NULL, `e2` varchar(3) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; e estou a conectar da seguinte forma <? $database="************"; // SERVIDOR E PORTA UTILIZADA $dbname="u********_escru"; // BASE DE DADOS $usuario="u****_escru"; // USUÁRIO DO MYSQL $dbsenha="es*******"; // SENHA DO MYSQL $conn=mysql_connect ($database, $chaves); if($conn){ if (mysql_select_db($dbname, $conn)){ print ""; }else{ print "Não foi possível selecionar o Banco de Dados"; } }else{ print "Erro ao conectar o MySQL"; } ?> Pois vou a testar e da-me erro no line 8 que é ($conn=mysql_connect ($database, $chaves) 😉 o que poderá ser??
HappyHippyHippo Posted February 5, 2014 at 03:42 PM Report #544076 Posted February 5, 2014 at 03:42 PM $conn=mysql_connect ($database, $usuario, $dbsenha, $dbname); 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ana88 Posted February 5, 2014 at 03:59 PM Author Report #544077 Posted February 5, 2014 at 03:59 PM Ha!!! 🙂 pois é, pencei que tinha que mencionar o nome da tabela aqui. Já é tantos dias a tentar o mesmo que já não faço nada de jeito. 😛 Obrigado mais uma vez usando o seu código fiz assim: <?php // ligação à base de dados $db= "sql.php"; // altera para o id_cv que pretendes $id = 1; $numbers = $conn->query("select n1, n2, n3, n4, n5 chaves where id = '{$id}'")->fetch_assoc(); $stars = $conn->query("select e1, e2 chaves where id = '{$id}'")->fetch_assoc(); // vou assumir que os dados vêm em POST e com os nomes apresentados no problema (n1, n2, ..., e1, e2) $ematch = array(); $ematch = array(); foreach ($_POST as $name => $value) { if ($name[0] == 'n' && array_search($value, $numbers) !== false) $ematch[] = $value; elseif ($name[0] == 'e' && array_search($value, $starts) !== false) $ematch[] = $value; } echo "Acertou ".count($ematch)." números(".implode(", ", $ematch).") e ".count($ematch)." estrela (".implode(", ", $ematch).")"; ?> ao testar dá-me erro na line 7 O que esta errado? eu sou muito novata nisto ainda, peço desculpa o estar a ser chata....
HappyHippyHippo Posted February 5, 2014 at 04:09 PM Report #544079 Posted February 5, 2014 at 04:09 PM (edited) o código apresentado é usando o mysqli_*, mas tu estás a suar o antigo e desaconselhado mysql_* $numbers = mysql_query("select n1, n2, n3, n4, n5 chaves where id = '{$id}'"); $stars = mysql_query("select e1, e2 chaves where id = '{$id}'"); $numbers = mysql_fetch_assoc($numbers); $stars = mysql_fetch_assoc($stars); Edited February 5, 2014 at 04:10 PM by HappyHippyHippo 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ana88 Posted February 5, 2014 at 04:37 PM Author Report #544082 Posted February 5, 2014 at 04:37 PM obrigado mais uma vez... bem eu testei e estava a dar-me um erro de conecção e já resolvi substituindo na line 3 $db= por include. só que agora da-me erro na line 9 e 10 ($numbers = mysql_fetch_assoc($numbers); $stars = mysql_fetch_assoc($stars) o que poderá ser? <?php // ligação à base de dados include "sql.php"; // altera para o id_cv que pretendes $numbers = mysql_query("select n1, n2, n3, n4, n5 chaves where id = '{$id}'"); $stars = mysql_query("select e1, e2 chaves where id = '{$id}'"); $numbers = mysql_fetch_assoc($numbers); $stars = mysql_fetch_assoc($stars); // vou assumir que os dados vêm em POST e com os nomes apresentados no problema (n1, n2, ..., e1, e2) $ematch = array(); $ematch = array(); foreach ($_POST as $name => $value) { if ($name[0] == 'n' && array_search($value, $numbers) !== false) $ematch[] = $value; elseif ($name[0] == 'e' && array_search($value, $starts) !== false) $ematch[] = $value; } echo "Acertou ".count($ematch)." números(".implode(", ", $ematch).") e ".count($ematch)." estrela (".implode(", ", $ematch).")"; ?>
HappyHippyHippo Posted February 5, 2014 at 04:39 PM Report #544083 Posted February 5, 2014 at 04:39 PM qual o valor da variável $id ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ana88 Posted February 5, 2014 at 04:51 PM Author Report #544085 Posted February 5, 2014 at 04:51 PM este é todo o código que tenho <?php // ligação à base de dados include "sql.php"; // altera para o id_cv que pretendes $numbers = mysql_query("select n1, n2, n3, n4, n5 chaves where id = '{$id}'"); $stars = mysql_query("select e1, e2 chaves where id = '{$id}'"); $numbers = mysql_fetch_assoc($numbers); $stars = mysql_fetch_assoc($stars); // vou assumir que os dados vêm em POST e com os nomes apresentados no problema (n1, n2, ..., e1, e2) $ematch = array(); $ematch = array(); foreach ($_POST as $name => $value) { if ($name[0] == 'n' && array_search($value, $numbers) !== false) $ematch[] = $value; elseif ($name[0] == 'e' && array_search($value, $starts) !== false) $ematch[] = $value; } echo "Acertou ".count($ematch)." números(".implode(", ", $ematch).") e ".count($ematch)." estrela (".implode(", ", $ematch).")"; ?> <style type="text/css"> .campo{ width:400px; } </style> <form name="form1" action="escrutinio.php" method="POST" style="padding-top:40px;"> <?php if(isset($erro)){ print '<div style="width:80%; background:#ff6600; color:#fff; padding: 5px 0px 5px 0px; text-align:center; margin: 0 auto;">'.$erro.'</div>'; } ?> <table border="0" width="80%" bgcolor="#f0f0f0" style="border:1px solid #ccc; margin:0 auto; position:relative;"> <thead> <tr> <th colspan="2">.:: Degite a sua chave ::.</th> </tr> </thead> <tbody> <tr> <td width="20%">n1:</td> <td width="auto"><input type="text" name="n1" class="campo" id="n1"></td> </tr> <tr> <td>n2:</td> <td><input name="n2" type="text" class="campo" id="n2"></td> </tr> <tr> <td>n3:</td> <td><input name="n3" type="text" class="campo" id="n3"></td> </tr> <tr> <td>n4</td> <td><input name="n4" type="text" class="campo" id="n4"></td> </tr> <tr> <td>n5:</td> <td><input name="n5" type="text" class="campo" id="n5"></td> </tr> <tr> <td>e1:</td> <td><input name="e1" type="text" class="campo" id="e1"></td> </tr> <tr> <td>e2:</td> <td><input name="e2" type="text" class="campo" id="e2"></td> </tr> <tr> <tr> <td></td> <td><input type="submit" value="Comparar" /> <input type="button" name="button" id="button"; " value="Cancelar" /> <input type="hidden" name="done" value="" /><input name="id" type="hidden" /></td> </tr> </tbody> </table> </form> ao abrir aparece-me isto " Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/public_html/escrutinio/escrutinio.php on line 9 Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/public_html/escrutinio/escrutinio.php on line 10 Acertou 0 números() e 0 estrela () " e ao testar faz-me isto " Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/public_html/escrutinio/escrutinio.php on line 9 Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/public_html/escrutinio/escrutinio.php on line 10 Warning: array_search() expects parameter 2 to be array, null given in /home/public_html/escrutinio/escrutinio.php on line 16 Warning: array_search() expects parameter 2 to be array, null given in /home/public_html/escrutinio/escrutinio.php on line 16 Warning: array_search() expects parameter 2 to be array, null given in /home/public_html/escrutinio/escrutinio.php on line 16 Warning: array_search() expects parameter 2 to be array, null given in /home/public_html/escrutinio/escrutinio.php on line 16 Warning: array_search() expects parameter 2 to be array, null given in /home/public_html/escrutinio/escrutinio.php on line 16 Warning: array_search() expects parameter 2 to be array, null given in /home/public_html/escrutinio/escrutinio.php on line 18 Warning: array_search() expects parameter 2 to be array, null given in /home/public_html/escrutinio/escrutinio.php on line 18 Acertou 7 números(11, 11, 22, 33, 44, 01, 02) e 7 estrela (11, 11, 22, 33, 44, 01, 02) " os números que estão a vermelho, são os números que eu degitei na form e mandei comparar e fez isso?!! o id é o da minha tabela correcto??! esta automático neste momento tem "1" qual o valor da variável $id ? o id é o da minha tabela correcto??! esta automático neste momento tem "1"
HappyHippyHippo Posted February 5, 2014 at 04:54 PM Report #544089 Posted February 5, 2014 at 04:54 PM neste momento tem "1" como podes dizer que a variável $id tem o valor de 1 ? onde está o pedaço de código que valida essa afirmação ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ana88 Posted February 5, 2014 at 04:58 PM Author Report #544090 Posted February 5, 2014 at 04:58 PM como podes dizer que a variável $id tem o valor de 1 ? onde está o pedaço de código que valida essa afirmação ? o id não corresponde ao id da Tabela em questão?
HappyHippyHippo Posted February 5, 2014 at 05:00 PM Report #544091 Posted February 5, 2014 at 05:00 PM responde às perguntas ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ana88 Posted February 5, 2014 at 05:15 PM Author Report #544093 Posted February 5, 2014 at 05:15 PM responde às perguntas ... já respondi! eu o código que tenho é só isso <?php // ligação à base de dados include "sql.php"; // altera para o id_cv que pretendes $numbers = mysql_query("select n1, n2, n3, n4, n5 chaves where id = '{$id}'"); $stars = mysql_query("select e1, e2 chaves where id = '{$id}'"); $numbers = mysql_fetch_assoc($numbers); $stars = mysql_fetch_assoc($stars); // vou assumir que os dados vêm em POST e com os nomes apresentados no problema (n1, n2, ..., e1, e2) $ematch = array(); $ematch = array(); foreach ($_POST as $name => $value) { if ($name[0] == 'n' && array_search($value, $numbers) !== false) $ematch[] = $value; elseif ($name[0] == 'e' && array_search($value, $starts) !== false) $ematch[] = $value; } echo "Acertou ".count($ematch)." números(".implode(", ", $ematch).") e ".count($ematch)." estrela (".implode(", ", $ematch).")"; ?> <style type="text/css"> .campo{ width:400px; } </style> <form name="form1" action="escrutinio.php" method="POST" style="padding-top:40px;"> <?php if(isset($erro)){ print '<div style="width:80%; background:#ff6600; color:#fff; padding: 5px 0px 5px 0px; text-align:center; margin: 0 auto;">'.$erro.'</div>'; } ?> <table border="0" width="80%" bgcolor="#f0f0f0" style="border:1px solid #ccc; margin:0 auto; position:relative;"> <thead> <tr> <th colspan="2">.:: Degite a sua chave ::.</th> </tr> </thead> <tbody> <tr> <td width="20%">n1:</td> <td width="auto"><input type="text" name="n1" class="campo" id="n1"></td> </tr> <tr> <td>n2:</td> <td><input name="n2" type="text" class="campo" id="n2"></td> </tr> <tr> <td>n3:</td> <td><input name="n3" type="text" class="campo" id="n3"></td> </tr> <tr> <td>n4</td> <td><input name="n4" type="text" class="campo" id="n4"></td> </tr> <tr> <td>n5:</td> <td><input name="n5" type="text" class="campo" id="n5"></td> </tr> <tr> <td>e1:</td> <td><input name="e1" type="text" class="campo" id="e1"></td> </tr> <tr> <td>e2:</td> <td><input name="e2" type="text" class="campo" id="e2"></td> </tr> <tr> <tr> <td></td> <td><input type="submit" value="Comparar" /> <input type="button" name="button" id="button"; " value="Cancelar" /> <input type="hidden" name="done" value="" /><input name="id" type="hidden" /></td> </tr> </tbody> </table> </form> eu é que pencei que o id fosse o id da tabela chaves a que se refere o "id" então??
HappyHippyHippo Posted February 5, 2014 at 05:16 PM Report #544094 Posted February 5, 2014 at 05:16 PM (edited) já respondi! onde estão as respostas a estas duas questões ? como podes dizer que a variável $id tem o valor de 1 ? onde está o pedaço de código que valida essa afirmação ? a que se refere o "id" então?? à variável $id <--- nota no $, logo é uma variável do PHP Edited February 5, 2014 at 05:18 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
faianca Posted February 5, 2014 at 05:16 PM Report #544095 Posted February 5, 2014 at 05:16 PM (edited) Depois de teres os teus dados nos arrays respectivos, usa array_intersect $euromilhoes = array(10, 15, 20, 45); $numbers = array(4, 15,40, 45); print_r(array_intersect($euromilhoes, $numbers)); Como é obvio as estrelas estarão num array diferente. Edited February 5, 2014 at 05:18 PM by faianca
HappyHippyHippo Posted February 5, 2014 at 05:19 PM Report #544096 Posted February 5, 2014 at 05:19 PM Depois de teres os teus dados nos arrays respectivos, usa array_intersect $euromilhoes = array(10, 15, 20, 45); $numbers = array(4, 15,40, 45); print_r(array_intersect($euromilhoes, $numbers)); para isso seria necessário não só passar os dados lidos da base de dados para um array assim como separar para arrays distintos os dados vindo do pedido ($_POST/$_GET) ... o que se torna irrelevante após o código que apresentei IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ana88 Posted February 5, 2014 at 05:20 PM Author Report #544097 Posted February 5, 2014 at 05:20 PM onde estão as respostas a estas duas questões ? eu disse que o id tem valo "1" porque fui ver a tabela, pençando que se referia a esse id mas pelos visto estava errada!!?? 😞 Poratnto não tenho esse pedaço de código
faianca Posted February 5, 2014 at 05:22 PM Report #544098 Posted February 5, 2014 at 05:22 PM para isso seria necessário não só passar os dados lidos da base de dados para um array assim como separar para arrays distintos os dados vindo do pedido ($_POST/$_GET) ... o que se torna irrelevante após o código que apresentei Certo, mas é mt mais simples enviar o $_POST multidimensional $_POST['n'] = array numeros, $_POST['e'] = estrelas; Dados limpos da db tb não é problema, e limpa ai umas boas linhas de codigo.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now