Select count in array

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve a tutti

mis to un pò impappinando su una select

PHP:
$query = "SELECT COUNT(*) FROM tabella WHERE id_nome IN($id_pl)  AND  data <= '".$sette."' AND mese= '".$mese."' AND anno='".$anno."'";

praticamente conteggio quante righe ci sono per l'array di $id dove la data e inferiore al sette del mese.

il problema e che il risultato del conteggio lo devo associare all'id ma non ho proprio idea su come ipostare il while

in pratica devo ricevere questo risultato:

se pippo(id=5) è presento 10 volte e topolino(id=7) e presente 18 volte prima del sette del mese mid eve restuitire

array{ [5]=>10, [7]=>18}

di solito il count l'ho sempre fatto su una variabile sola è la prima volta che provoa farlo su un array

sono in alto mare
help me
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciiao,
usa GROUP BY
PHP:
$query = "SELECT COUNT(*) FROM tabella WHERE id_nome IN($id_pl)  AND  data <= '".$sette."' AND mese= '".$mese."' AND anno='".$anno."' GROUP BY id_nome";
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Ciiao,
usa GROUP BY
PHP:
$query = "SELECT COUNT(*) FROM tabella WHERE id_nome IN($id_pl)  AND  data <= '".$sette."' AND mese= '".$mese."' AND anno='".$anno."' GROUP BY id_nome";

okkkk ma in php come tiro fuori la variabile associata all'id?

nel ciclo while

PHP:
while ($row= mysql_fetch_array($result, MYSQL_ASSOC)) {
 $ris= $row['??????????????'];
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
modifica l'inizio della query cosi
Codice:
SELECT COUNT(*) as conta, id_nome FROM
PHP:
$count= $row['conta'];  
$id= $row['id_nome'];
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
modifica l'inizio della query cosi
Codice:
SELECT COUNT(*) as conta, id_nome FROM
PHP:
$count= $row['conta'];  
$id= $row['id_nome'];

:incazz::incazz::incazz:

però ci siamo quasi

mi crea l'array ma riaprte con le chiavi da 0 etc. mentre mi servirebbe la chiave pario all'id_nome per poter riutilizzare il dato

ho provato a fare na cosa del genere

PHP:
$id= $row['id_nome'];
$count[$id]= $row['conta'];
[/QUOTE]

ma niente e da una parte mi apre anche ovvio che non lo faccio
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Prova cosi, non ho testato
PHP:
<?php

$query = "SELECT COUNT(*) as conta, id_nome FROM tabella 
                 WHERE id_nome IN($id_pl)  AND  
                       data <= '" . $sette . "' AND 
                       mese= '" . $mese . "' AND 
                       anno='" . $anno . "' 
                 GROUP BY id_nome";
$res = mysql_query($query);
$array = array();
while ($row = mysql_fetch_array($query)) {
    $array[$row['id_nome']] = $row['conta'];
}

// prova
var_dump($array);
?>
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
avevo già provato cosi ma non andava.

provando la tua va,difatti avevo sbagliato a mettere il campo sul count.

Babbè l'importante che è andata. Grassie grassie.

una domanda a tempo perso

se il count lo volessi fare su due campi?

che so voglio contare quanti nomi e cognomi ci sono

quindi del tipo
PHP:
 <?php

$query = "SELECT COUNT(*) as conta, id_nome,id_cognome FROM tabella 
                 WHERE id_nome IN($id_pl)  AND  id_cognome IN($id_pl)
                       data <= '" . $sette . "' AND 
                       mese= '" . $mese . "' AND 
                       anno='" . $anno . "' 
                 GROUP BY id_nome ?????";
$res = mysql_query($query);
$array = array();
while ($row = mysql_fetch_array($query)) {
    $array[$row['id_nome']] = $row['conta'];
??????????????
}

// prova
var_dump($array);
?>

si può fare?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ma perche non sono uguali ?

se hai 30 nomi dovresti avere 30 cognomi
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ma perche non sono uguali ?

se hai 30 nomi dovresti avere 30 cognomi

non e detto

potrei avere più nomi uguali ma cognomi diversi

tipos e facio la query per il cognome poniamo

Rossi Paolo conto quanti rossi ci sono nel database in quella data ma potreia vere Rossi Paolo e Rossi Giuseppe

e quindi se voglio verificare solo i Rossi Paolo
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova cosi
Codice:
GROUP BY id_cognome, id_nome
ma non riesco a immaginare l'effetto
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
prova cosi
Codice:
GROUP BY id_cognome, id_nome
ma non riesco a immaginare l'effetto

mi fai prendere paura cosi huhuhuhu

cioè voelndo potevo fare una query sui cognomi a parte e poi unire i due array in base alla chiave, ma non ricordo come si fa

diverso tempo fa avevo avuto risposta proprio qui(ovviamente) al riguardo dell'unione di array con identiche chiavi

devo spulciarmi le discussioni
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Si come dice criric bisognerebbe inserire
Codice:
GROUP BY id_cognome, id_nome
Questi esempi cadono a pennello per il tuo caso.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Riprendo questa discussione perhcè il problema che ho riscontrato riguarda proprio questo codice

PHP:
 <?php

$query = "SELECT COUNT(*) as conta, id_nome FROM tabella 
                 WHERE id_nome IN($id_pl)  AND  
                       data <= '" . $sette . "' AND 
                       mese= '" . $mese . "' AND 
                       anno='" . $anno . "' 
                 GROUP BY id_nome";
$res = mysql_query($query);
$array = array();
while ($row = mysql_fetch_array($query)) {
    $array[$row['id_nome']] = $row['conta'];
}

// prova
var_dump($array);
?>

allor ain $id_pl ho un insieme di id che deve contarmi. se $id_pl è ugauale a ('10','22','43','54') e il count trovatutti e 4 i valori funzniona tutto correttamente, in realtà la query funziona bene però mi deve fare una cosa in più

se trova tutti e 4 gli id $array mi restituisce

PHP:
array{[10]=>nr,[22]=>nr,[43]=>nr,[54]=>nr}

praticamente se nella tabella non è presente l'id 43 la query mi resituisce

PHP:
array{[10]=>nr,[22]=>nr,[54]=>nr}

invece io voglio che mi restituisca 0 quando non trova l'id

PHP:
array{[10]=>nr,[22]=>nr,[54]=>nr, [43]=>0}

per cortesia una mano che sono due giorni che provo di tutte le maniere
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
è un po' arzigogolato, ma fai una prova
PHP:
<?php
$query = "SELECT COUNT(*) as conta, id_nome FROM tabella 
                 WHERE id_nome IN($id_pl)  AND  
                       data <= '" . $sette . "' AND 
                       mese= '" . $mese . "' AND 
                       anno='" . $anno . "' 
                 GROUP BY id_nome";
$res = mysql_query($query);
$array = array();
$row = mysql_fetch_array($query)
$riserva=$id_pl;//se $id_pl come immagino è un array, faccio per mantenere i valori in $id_pl
foreach($rov as $ch => $val){
	if(in_array($ch, $id_pl)){//se $id_pl come immagino è un array
		$array[$row['id_nome']] = $row['conta'];
		unset($riserva[$ch]);//elimino quelli che ho trovato
	}
}
if(is_array($riserva)){//verifico di non averli eliminati tutti
	foreach($riserva as $val){//tiro fuori gli idi rimasti
		$array[$val]=0;
	}
}

// prova
var_dump($array);
?>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Meglio prevenire che curare..monital quando lo provi attento a questa riga;
PHP:
//...
foreach($rov as $ch => $val){
//...
Dove ovviamente ci va $row.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
mmh ninete mi restituisce sempre int(0) anche per gli id che 0 non dovrebbero avere

al riguardo ma credo non sia lo stesso


PHP:
$riserva=$id_pl;//se $id_pl come immagino è un array, faccio per mantenere i valori in $id_pl

in realtà id_pl è l'implode dell'array degli id

PHP:
$id_pl= "'".implode("','", $id_nomi)."'";

senza non potevo metterlo nell IN

cmq ho sostituito dal codice $id_pl con l'array($id_nomi) quindi siamo là però non va

int(0) a tutti

scusa però mi chiedo una cosa

forse è stupida però a rigor di logica non si può fare una cosa del genere teoricamente?
PHP:
 <?php

$query = "SELECT COUNT(*) as conta, id_nome FROM tabella 
                 WHERE id_nome IN($id_pl)  AND  
                       data <= '" . $sette . "' AND 
                       mese= '" . $mese . "' AND 
                       anno='" . $anno . "' 
                 GROUP BY id_nome";
$res = mysql_query($query);
$array = array();
while ($row = mysql_fetch_array($query)) {
    $array[$row['id_nome']] = $row['conta'];
}

//////////////Fin qui mi trovo e fa tutto correttamente

// prova
var_dump($array);
?>

in questo moemnto ho $array che mi conta tutto correttamente non si può successivamente mettere a confronto con $id_nomi?

il problema è che id_nomi risulta come [0]=>id0,[1]=>id1 etc. quindi si potrebbe confrontare le chiavi di $array con il valore di $idnomi ed eliminare quelle già trovate poi far diventare il valore restante di idnomi la chiave ed il valore 0 e rimettere questo in $array

na parola eh?
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Diciamo che era quello che faceva il suo script. Ma se viene da un'implode allora non è un array ma una stringa.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
allora usa per lo script l'array originale
PHP:
<?php
//....
//immagino che qui tu abbia questo
$id_pl= "'".implode("','", $id_nomi)."'";//che ti serve per IN
/* e che $id_nomi sia fatto (es.) così
$id_nomi=array('10','22','43','54');//con meno o più valori
*/
$query = "SELECT COUNT(*) as conta, id_nome FROM tabella 
                 WHERE id_nome IN($id_pl)  AND  
                       data <= '" . $sette . "' AND 
                       mese= '" . $mese . "' AND 
                       anno='" . $anno . "' 
                 GROUP BY id_nome";
$res = mysql_query($query);
$array = array();
$row = mysql_fetch_array($res);//avevo messo $query :(
$riserva=$id_nomi;//cioè usa l'array originale $id_nomi
foreach($row as $ch => $val){//corretto rov
    if(in_array($ch, $id_nomi)){
        $array[$row['id_nome']] = $row['conta'];
        unset($riserva[$ch]);//elimino quelli che ho trovato
    }
}
if(is_array($riserva)){//verifico di non averli eliminati tutti
    foreach($riserva as $val){//tiro fuori gli idi rimasti
        $array[$val]=0;
    }
}

// prova
var_dump($array);
?>

al massimo non funzia nemmeno questo. se non funzia esplicita come è fatto esattamente l'array originale (tutto dipende da quello)
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Estrarre valore con SELECT COUNT PHP 0
G [risolto] MySql, SELECT, GROUP BY e COUNT MySQL 6
F select count php ajax Ajax 12
A RecordCount e Select Count Classic ASP 2
C select count PHP 2
L Ripetere Campi disabilitando input in riferimento ad un valore della select jQuery 0
otto9due Ordinare option di una select Javascript 5
W MySQL ciclo in SELECT MySQL 0
W MySQL SELECT list dinamica MySQL 0
M Select Option dentro una Table jQuery 2
G Colorare menu select attraverso ricerca php PHP 0
L problema con query select PHP 2
F menù select dinamico da db in php PHP 3
D popolare campi tra th alla select PHP 36
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Select Dinamiche...da txt? PHP 3
E Php select option e ajax PHP 23
R Select concatenata che non funziona la seconda volta Ajax 3
L select join e sottrazione punti PHP 13
L input dati con inser into select ? PHP 4
V hierarchy-select jQuery 0
Emix Select concatenate php sql ajax PHP 2
F query e form con select multipla PHP 17
T recupero valori select multipla da android Javascript 3
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
Tommy03 Select in ordine per numero di record MySQL 7
T problema con select dinamica con jquery Javascript 0
J Far comparire e scomparire un div con un select Javascript 1
M Opzioni select da 1 a 200 PHP 0
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
C input in sostituzione della select PHP 2
G Insert into select - Aiuto MySQL 0
max1974 autocomplete trigger select jQuery 0
X [Select] Valori chiave non presenti in un'altra tabella MySQL 2
M Estrarre dati da una select HTML PHP 3
MarcoGrazia jquery validate, necessità di validare almeno un elemento select su due jQuery 1
T [PHP] Autocompilazione input multiple da una select PHP 1
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
S [PHP] aggiornamento table tramite select senza ricaricare la pagina PHP 5
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
M [PHP] Problema con query select PHP 2
C [PHP] Controllo <select> comportamento anomalo PHP 2
G [PHP] Select con opzioni dipendenti da un'altra select PHP 3
L [Javascript] Select option in campi input Javascript 4
M [PHP] Problemi con select PHP 6
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
S [ASP] SALVARE VALORE SELECT OPTION SU CAMPO TABELLA ACCESS Classic ASP 9
max1974 [Javascript] malfunzionamento select Javascript 0
M [PHP] Drop down in campo select PHP 1
D [PHP] Select dinamici PHP 2

Discussioni simili