PDA

View Full Version : [PHP Expert]Cliclo di confronto dei dati in una colonna


borexino
24-07-2006, 18:45
Salve,

Sono un radioamatore,e sto creando un logbook in php (logbook =quaderno di stazione dove vengono inseriti tutti i contatti fatti) ho la necessità di eseguire un confronto fra tutti i dati contenuti nella colonna "div" del database "logbook" .

"div" contiene un dato int - devo eseguire uno script che confronti tutti i valori presenti in essa e se il valore è diverso venga incrementata una variabile.

Esempio
________
| DIV |
________

30 = Spagna

1 = Italia

30 = Spagna

1 = Italia

2 = USA

Ogni valore di "div" nello standard radioamatoriale corrisponde ad una nazione che si è collegata quindi lo scopo è quello di sapere quante nazioni si è collegate.
Oggi per esempio ho parlato con 2 operatori italiani 3 operatori spagnoli 1 operatore americano,quindi se faccio il conto delle nazioni con cui ho parlato è di 3 nazioni (italia spagna e usa)

Spero di essere stato chiaro.

:muro: :confused:

shinya
25-07-2006, 08:06
Non penso di aver capito bene...scusa ma com'è la struttura del tuo database? Probabilmente basta una select distinct.

borexino
25-07-2006, 08:16
La struttura è Database "logbook" Tabella "logbook"

campi

id int(8)autoincrement
div int(3)
qrz varchar(255)
freq int(20)
modo varchar(255)
data date
qsm varchar(255)
commenti varchar(255)

shinya
25-07-2006, 14:01
"div" contiene un dato int - devo eseguire uno script che confronti tutti i valori presenti in essa e se il valore è diverso venga incrementata una variabile.

Esempio
________
| DIV |
________

30 = Spagna

1 = Italia

30 = Spagna

1 = Italia

2 = USA



Non ho ancora capito se il campo 'div' contiene campi ripetuti o univoci, ma vabbè.
Cmq io farei una cosa tipo (pseudo-codice):

query = "select distinct div from logbook;"
results = execute query;
for item in results:
if my_var == item:
// esiste!
end if
end for


Volendo potresti far lavorare il db al posto tuo nella query con qualcosa tipo (io l'ho provata su oracle con un altro db ma il concetto è lo stesso):

query = "select "esisto!" as exist
from dual
where " . my_var . " in (select distinct div from logbook);
results = execute query;
if results is not empty:
// vai, trovato!
end if


Spero di aver capito il tuo problema :)
bye!

ps EDIT:
A volte ci si scorda delle soluzioni più semplici:

query = "select count(*) as exist_div from logbook where div = " . my_var;
results = execute query;
if results["exists_div"] > 0:
// trovato


sempre se ho capito il tuo problema...

borexino
25-07-2006, 15:19
Grazie tante per la pazienza :D

Div contiene dati numerici ripetuti devo controllare quante volte varia....

credo che si possa ovviare al problema utilizzando una select ma purtroppo dalla mia bozza non ho nessun output

count :confused:


<?php
include("configsess.php");
$link=mysql_connect("$db_host","$db_login","$db_pass")
or die ("Non riesco a connettermi a <b>$db_host");

mysql_select_db ($database, $link)
or die ("Non riesco a selezionare il db $database<br>");


$sql = mysql_query("SELECT COUNT(div) AS contatti FROM logbook WHERE (1) GROUP BY div");

echo mysql_num_rows($sql);

?>



Dove sbaglio?

shinya
25-07-2006, 16:32
Apri mysql da linea di comando, copia la query, eseguila, e incolla qui il risultato, così capisco meglio.

Comunque io sarei più su un:

select div, count(*) contatti
from logbook
group by div

shinya
25-07-2006, 16:49
Div contiene dati numerici ripetuti devo controllare quante volte varia....


Ah aspetta! Forse adesso ho capito cosa vuoi!
Che ne dici di una cosa così?


select count(distinct div)
from logbook;