Newsgroup: it.comp.www.php
Titolo: Database PHP

Salve! ho fatto un semplice DB in PHP Mysql che mi sunziona perfettamente - 
ora ho un problema che non so proprio come risolvere e per questo chiedo 
gentilmente un aiuto per risolverlo
ecco in sintesi il codice che ho fatto
<?php
Include("connessione.php");
$link = mysql_connect("$db_host", "$db_username", "$db_password") or 
die("Errore connessione: ". mysql_error());
mysql_select_db("$db_name",$link) or die("Errore apertura database: " . 
mysql_error());
$strsql = "SELECT id,nome FROMdati;
$rs = @mysql_query("$strsql",$link) or die("Errore query database: " . 
mysql_error());
while ($riga = mysql_fetch_array($rs)) {
$id = $riga['id'];
$nome = $riga[nome'];
}
?>
mi da i seguenti risultati
Paolo
Mario
Mario
Mario
Antonio
Antonio
Marco
Marco
Marco
Cortesemente chiedo un aiuto su come devo impostare  il codice per avere 
questo risultato, se qualcuno mi può dare alcune righe di codice come 
esempio
Paolo 1
Mario 3
Antonio 2
Marco 3
Grazie e saluti Pietro 

 Grazie e saluti Pietro 
Per recuperare quello che vuoi, devi "contare" quante volte ci sono i
nomi. Ci sono due strade:
1. Direttamente nella query SQL (cioè fai fare il lavoro sporco al
server SQL)
$codiceSql = "SELECT DISTINCT(d.nome),(SELECT COUNT(sd.nome) FROM dati
sd WHERE d.nome = sd.nome) AS contatore FROM dati d";
Quello che ho fatto è aggiungere una colonna che ho chiamato
"contatore" (grazie alla parola chiave AS) che è in realtà un risultato
di una subquery che non fa altro che contare. Ho dovuto però
differenziare le "risorse" delle due tabelle con le lettere "d" e
"sd" (puoi scegliere qualsiasi lettera/parola), perché altrimenti i
campi mi si andavano a sovrapporre (e non potevo scrivere
"WHERE nome = nome", non avrebbe avuto senso).
Grazie alla parola chiave DISTINCT inoltre, evito di prendere valori già
presi.
2. Contare da PHP (cioè fai fare il lavoro sporco al PHP)
Cambi il while con quello qui sotto e aggiungi un foreach:
$nomi = array(); // "dichiaro" l'array anche se non sarebbe necessario
while ($riga = mysql_fetch_array($rs)) {
	if(isset($nomi[$riga["nome"]])) {
		$nomi[$riga["nome"]]++;
	} else {
		$nomi[$riga["nome"]] = 1;
	}
}
foreach($nomi as $nome => $contatore) {
	echo $nome . " " . $contatore;
}
Personalmente preferisco la prima, quando ci sono molti dati è più
veloce, e poi scarichi il peso sul server SQL, che generalmente "sa fare
meglio" questo lavoro ;-)
Enrico

 ha scritto nel messaggio 
news:1230304402.1...@enrico-desktop.casa...


 Marco 3
Usa questa query:
SELECT nome,COUNT(nome) FROM dati GROUP BY nome
Se per caso vuoi la query in ordine decrescente di conteggio, la query diventa
SELECT nome,COUNT(nome) AS totale FROM dati GROUP BY nome ORDER BY totale DESC
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
The more complex the mind, the greater the need for the simplicity of play.
    --James Kirk, "Shore Leave"

 SELECT nome,COUNT(nome) FROM dati GROUP BY nome
... e confrontala in termini di prestazioni con quella di enrico tramite
EXPLAIN (ma a naso è piu' veloce questa)

 ha scritto nel messaggio 
news:o965l.233726$FR.5...@twister1.libero.it...


>  Chiedo scusa e se avesssi più campi ad esmpio: nome, citta, via
qua è la logica che ti risponde, non puoi contare includendo anche quei
campi

RedWiz said the following on 26/12/08 17:17:

Ovvio che sia consigliabile definire un indice sul campo nome. Non l'avevo
scritto, ma lo davo per scontato.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
La riunificazione della Germania non e` sull'attuale agenda politica.
    --George Bush, Novembre 1989

  Chiedo scusa e se avesssi più campi ad esmpio: nome, citta, via
Quando aggreghi i dati non ha molto senso dettagliare.
Esempio: una squadra sportiva ha un elenco di giocatori, ma nella classifica di
un campionato/girone/torneo quando ragguppi le squadre per posizione di
classifica non puoi elencare i singoli giocatori (potresti, ma non avrebbe senso).
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
I've already told you more than I know.

 ha scritto nel messaggio 
news:o965l.233726$FR.5...@twister1.libero.it...


 concludere bene - saluti e auguri Pietro
Per le prossime volte, dai un'occhiata al seguente link:
http://wiki.news.nic.it/QuotarBene
-- 
rob4you