PHP Posted September 16, 2006 at 09:55 PM Report #51064 Posted September 16, 2006 at 09:55 PM 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.
Triton Posted September 16, 2006 at 10:58 PM Report #51081 Posted September 16, 2006 at 10:58 PM Então pretendes remover todos os dados duplicados de uma array? <3 life
M6 Posted September 17, 2006 at 09:50 AM Report #51124 Posted September 17, 2006 at 09:50 AM 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."
PHP Posted September 17, 2006 at 12:13 PM Author Report #51147 Posted September 17, 2006 at 12:13 PM Sim, pretendo remover todos os dados duplicados, ficando apenas com uma cópia de cada dado.
Anonym Posted September 17, 2006 at 01:26 PM Report #51161 Posted September 17, 2006 at 01:26 PM SELECT distinct campo FROM tabela tu queres é remover os campos repetidos numa tabela? ficando um exemplar
PHP Posted September 17, 2006 at 01:58 PM Author Report #51164 Posted September 17, 2006 at 01:58 PM 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á?
kingless Posted September 17, 2006 at 02:55 PM Report #51175 Posted September 17, 2006 at 02:55 PM Como é que fizeste o loop ?
PHP Posted September 17, 2006 at 03:21 PM Author Report #51177 Posted September 17, 2006 at 03:21 PM $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>"; }
PHP Posted September 17, 2006 at 04:09 PM Author Report #51188 Posted September 17, 2006 at 04:09 PM 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?
Gurzi Posted September 17, 2006 at 06:26 PM Report #51215 Posted September 17, 2006 at 06:26 PM 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 ?
PHP Posted September 18, 2006 at 03:17 PM Author Report #51367 Posted September 18, 2006 at 03:17 PM 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++;
Gurzi Posted September 18, 2006 at 05:45 PM Report #51385 Posted September 18, 2006 at 05:45 PM Desculpa, podes me explicar o que é $mysql_prefix . 'formresponsefields' ?
milks Posted October 9, 2006 at 03:31 PM Report #56065 Posted October 9, 2006 at 03:31 PM 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
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