Select count in array

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio
ciao
mi è venuto un dubbio eventualmente prova a modificare

PHP:
<?php
//......
foreach($row as $ch => $val){//corretto rov
    if(in_array($val, $id_nomi)){//**** qui $val al posto di $ch percchè se non erro l'id è in $val
        $array[$row['id_nome']] = $row['conta'];
        unset($riserva[$ch]);//elimino quelli che ho trovato
    }
}
//.....
?>
 
Niente mi porta ancora tutti a 0

allora preciso,giusto eprchè ci tengo che si sappia che on mi imito ad un copia-incollam che già dal primo codice avevo sostituito $id_pl con l'array originale cioè $id_nomi e penso che il danno sia proprio li

ricapitolo

Estraggo tutti gli id creando l'array $id_nomi che si presenta cosi

PHP:
array{[0]=>id1,[1]=>id2,[2]=>id3,[3]=>id4,.....[44]=>id45,[45]=>id46,etc}

poi faccio l'implode per poter fare il select count e ricavo $id_pl

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

effettuo cosi il slect count IN($id_pl)

il danno sta nella chiave di $id_pl effettivamente perchè coem dicevi te la chaive di $row è il valore di $idnomi.

credo che il problema sia nell'unset adesso

PHP:
unset($riserva[$ch]);//elimino quelli che ho trovato
--->prima di questo unset mi restituisce l'array con i conteggi giusti escludendo quelli non trovati quindi fin li ci siamo

se non sbaglio questo unset si può tradurre in

"Taglia da riserva(cioè $idnomi) dove la chaive è uguale alla chiave di $row cioè $ch

(ho provato anche $val ma ovviamente non va) mentre in realtà non è cosi perchè le chiavi di $riserva sono [0] [1] etc. invece dovrebbe tagliare $idnomi dove il valore è uguale alla chiave di $row

sbaglio?
 
ciao
forse è più semplice di quello che sembra, prova questo
al massimo sei ancora al punto di partenza
PHP:
<?php
//......
//metti a zero tutti gli elementi di $array
foreach($id_nomi as $ch => $val){
	$array[$val]=0;
}
/*in pratica
array{id1=>0, id2=>0, .....id46=>0}
*/
$id_pl= "'".implode("','", $id_nomi)."'";
$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);
while ($row = mysql_fetch_array($res)) {
    $array[$row['id_nome']] = $row['conta'];//in pratica qui modifiche per quell'id il valore da 0 a quello che è
}
// prova
var_dump($array); 
?>

p.s.
l'avevo capito che non fai il semplice copy/paste :)
 
:incazz2::incazz2::incazz2::incazz2::incazz2::incazz2:

noooooooooooooooooooooooooooooooooooooooooo

dovevo arrivarci io porca zozza

in realtà avevo pensato di andare a modificare l'array di partenza però c'era una cosa che non sapevo quindi mi sembrava un enormità la cosa da fare.

In pratia correggimi se sbagliose definisco un array
PHP:
$mio_array{[0]=>1,[1]=>2,[2]=>3}
esu ccessivamente ricavo ina ltro modo un altro array e loc hiamo allo stesso nome
PHP:
$mio_array{[0]=>10,[1]=>20,[2]=>30}

questi si fondono sommando i valori dove trova le chaivi uguali ? diventando cosi

PHP:
$mio_array{[0]=>11,[1]=>22,[2]=>33}

mannaggia la pizza sta cosa non la sapevo proprio o eprlomeno ho usato una cosa del genere con il multiarray ma li aggiungevo [chiave]=>valore

grazie borgo, quasi ti eprdono per la svista di stamane :D

Grande grande

mi vien da piangere, con gli array ho un rapporto odio amore, in certi casi ti sveltiscono dannatamente il lavoro ma in altri casi c'è da 'impazzire

Grazie ancora
 

Discussioni simili