Jump to content

Problemas com PHP-MySQL


PHP
 Share

Recommended Posts

Preciso que o meu script vá verificar à base de dados todas as datas DIFERENTES numa array.

O problema é que se eu procurar com mysql_fetch_array, dá-me todas as datas, e não apenas uma versão de cada. Por exemplo, cada data é formatada em H:i:s, portanto se houverem 2 que digam 22:51:12 e 5 que digam 22:11:54, só quero que a array tenha 1 de 22:51:12 e outra de 22:11:54 e não todas elas. Depois disso faço um while para cada resultado dessa array procurar na DB os dados com essa data. Se houvessem 2 resultados diferentes de duas datas iguais, iria repetir a mesma acção diversas vezes, o que não é realmente muito prático (imaginem se houverem 100 resultados com datas iguais, iria ser algo mesmo inpraticável).

Se me consegui exprimir bem, por favor respondam o mais cedo possível.

Link to comment
Share on other sites

Não sei muito bem se percebi a tua dúvida, mas ela parece-me mais de SQL do que de PHP.

Tens vários operadores em SQL que deves explorar pois creio que te são úteis (pelo que compreendi da tua dúvida): count, group by, distinct e in.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Já descobri como fazer, existe uma funçao em PHP para isso:

array_unique($array);

Mas tenho outro problema:

Em MySQL:

$responses_query = mysql_query('SELECT date FROM `'.$mysql_prefix.'formresponsefields` WHERE formid LIKE \''.$_GET['form'].'\' LIMIT 0, 30 '); // Get the dates to unduplicate.

Isto dá direito, se eu fizer print, imprime um código perfeito que o PhpMyAdmin executa sem erros. No entanto, quando saco como array e faço um loop, aquilo simplesmente repete o primeiro resultado. SEMPRE. Porque é que não dá?

Link to comment
Share on other sites

$responses_query = mysql_query('SELECT date FROM `'.$mysql_prefix.'formresponsefields` WHERE formid LIKE \''.$_GET['form'].'\' LIMIT 0, 30 '); // Get the dates to unduplicate.

while ($array = mysql_fetch_array($responses_query, MYSQL_BOTH)) {
	$form_responses = mysql_query('SELECT `key`, ip '
. ' FROM '.$mysql_prefix.'formresponsefields '
. ' WHERE date LIKE \''.$array['date'].'\' LIMIT 0, 300 ') or die(mysql_error()); // Get the key and IP.
$keys_IP = mysql_fetch_array($form_responses, MYSQL_BOTH);
print "Response $responsenumber:<br><br>";
$responsenumber++;
while ($key = $keys_IP) {
	$ips = $key['ip'];
	$text = $key['key'];
	print "Field $fieldnumber (By $ips): $text<br>";
	$fieldnumber++;
}
print "<br><br><hr>";
}
Link to comment
Share on other sites

Fiz agora outra coisa:

$responses_query = mysql_query('SELECT distinct date FROM `'.$mysql_prefix.'formresponsefields` WHERE formid LIKE \''.$_GET['form'].'\' LIMIT 0, 30 ');
$array = mysql_fetch_array($responses_query, MYSQL_ASSOC);	
foreach ($array as 	$date) {
print "$date<br>";
}

E agora só me dá um resultado, em vez de repetir infinitas vezes o mesmo resultado. Porque é que não funciona?

Link to comment
Share on other sites

Fiz agora outra coisa:

$responses_query = mysql_query('SELECT distinct date FROM `'.$mysql_prefix.'formresponsefields` WHERE formid LIKE \''.$_GET['form'].'\' LIMIT 0, 30 ');
$array = mysql_fetch_array($responses_query, MYSQL_ASSOC);	
foreach ($array as 	$date) {
print "$date<br>";
}

E agora só me dá um resultado, em vez de repetir infinitas vezes o mesmo resultado. Porque é que não funciona?

Faz me um favor , faz lá isto :

echo count($array);

antes de foreach e depois faz exit();

Quantos valores retornou ele ?

Link to comment
Share on other sites

Já resolvi o problema...

$responses_query = mysql_query('SELECT distinct date FROM `'.$mysql_prefix.'formresponsefields` WHERE formid LIKE \''.$_GET['form'].'\'');

while ($result = mysql_fetch_array($responses_query, MYSQL_ASSOC)) {

foreach ($result as  $date) {

      print "Reply number $responsenumber (Posted on $date)<br><br>";

      $responsenumber++;

Link to comment
Share on other sites

Desculpa, podes me explicar o que é $mysql_prefix . 'formresponsefields' ?

Boas Gurzi,

$mysql_prefix, nesse exemplo é uma variavel que tem um prefixo para as tabelas da base de dados. É útil caso queiras ter várias aplicações na mesma bd, ajuda a compreender de que aplicação pertence determinada tabela e evita problemas caso existam tabelas com o mesmo nome em ambas as aplicações.

Venho um bocado (bom bocado) tarde, mas espero ser útil 👍

Abraço,

milks

Link to comment
Share on other sites

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
 Share

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