Jump to content

Recommended Posts

Posted

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,

Posted (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 by bioshock
Posted (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 by HappyHippyHippo
  • Vote 2
IRC : sim, é algo que ainda existe >> #p@p
Posted

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??

Posted

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....

Posted (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 by HappyHippyHippo
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Posted

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).")";
?>
Posted

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"

Posted

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?

Posted

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??

Posted (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 by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (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 by faianca
Posted

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
Posted

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

Posted

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.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.