• Home
  • Forum
  • Fare Web
  • PHP

[PHP] Escludere campi non valorizzati

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio 4 Lug 2018
  • 1
  • 2
Succ.
1 di 2 Succ. Ultimo
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 4 Lug 2018
  • #1
Salve, sono di nuovo qua a chiedere aiuto, questa volta avrei bisogno di contare quante volte è presente una persona nel DB nell'anno.
Ho fatto una query unione che mi crea una tabella con 3 colonne, una con l'anno, una con il nome della persona e una con il numero di presenze, il problema sta nel fatto che mi conteggia anche i record vuoti,
Es.:
2017 vuoto 10
2017 pippo 45
2017 pluto 25
questa è la query che utilizzo i campi sono:
varchar(255) utf8_general_ci
NULL=No
PREDEFINITO=Nessuno

PHP:
CREATE TABLE stampapresenzepeg AS SELECT t.AnnoVerbale,t.tecnico, Sum(t.counter) AS conta_presenze
FROM (SELECT AnnoVerbale,RespTecnico as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespTecnico
UNION

SELECT AnnoVerbale,RespPM as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespPM
UNION

SELECT AnnoVerbale,RespVerdeUrbano as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespVerdeUrbano
UNION

SELECT AnnoVerbale,CompagniaAssicurativa as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,CompagniaAssicurativa
UNION

SELECT AnnoVerbale,RespComAssicurativa as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespComAssicurativa
UNION

SELECT AnnoVerbale,UfficioLegaleComune as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,UfficioLegaleComune
UNION


SELECT AnnoVerbale,UfficioAttivitaAssicurative as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,UfficioAttivitaAssicurative
UNION
SELECT AnnoVerbale,RespEconomato as tecnico, count(*) as counter FROM tblverbali GROUP BY RespEconomato
)  AS t
WHERE (((t.tecnico)<>'' AND AnnoVerbale='$AnnoVerbale'))
GROUP BY t.tecnico

Max61
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 4 Lug 2018
  • #2
come prima cosa modifica la select, rendendola uguale alle altre
Codice:
SELECT AnnoVerbale,RespEconomato as tecnico, count(*) as counter FROM tblverbali GROUP BY RespEconomato

GROUP BY AnnoVerbale,RespEconomato

..... mi conteggia anche i record vuoti .....
in realtà vuoti non sono perché
..... varchar(255) utf8_general_ci NULL=No .....

il campo potrebbe contenere la parola "vuoto" ????
..... 2017 vuoto 10 .....

se é vero ciò che ho scritto, modifica

WHERE (((t.tecnico)<>'vuoto'
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 4 Lug 2018
  • #3
No no, per vuoto intendo senza nome della persona
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 4 Lug 2018
  • #4
prova così, sostituendo le righe…
Codice:
UNION
SELECT AnnoVerbale,RespEconomato as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespEconomato
)  AS t
WHERE LENGTH(t.tecnico)>0 AND t.AnnoVerbale='$AnnoVerbale'
GROUP BY t.tecnico
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 4 Lug 2018
  • #5
Ciao, provato mi restituisce questo:
MySQL ha restituito un insieme vuoto (i.e. zero righe). (La query ha impiegato 0,0000 secondi.)
L tabella stampapresenzepeg è vuota
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 4 Lug 2018
  • #6
prova con un valore fisso come AnnoVerbale
WHERE LENGTH(t.tecnico)>0 AND t.AnnoVerbale='2017'

e aggiungi,
GROUP BY t.AnnoVerbale, t.tecnico
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 4 Lug 2018
  • #7
Scusa prima non avevo valorizzato l'anno ecco perchè era vuota, ora valorizzandolo me la crea ma conta ancora quelli vuoti...
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 4 Lug 2018
  • #8
visto che il campo non può essere vuoto ( NULL=No )
cosa ci può essere all'interno per cui la condizione " LENGTH(t.tecnico)>0 " ovvero lunghezza del nome, non sia soddisfatta ???
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 4 Lug 2018
  • #9
Io non trovo niente nei campi che vuoti, sono semplicemente senza niente, ho anche provato a scaricare la tabella sotto forma di sql, ma i campi vuoti che mi conta sono così '', '', '', '', '', '', ma se provassi a metterli NULL?
questi sono i campi:
`RespVerdeUrbano` varchar(255) CHARACTER SET utf8 NOT NULL,
`RespPM` varchar(255) CHARACTER SET utf8 NOT NULL,
`UfficioAttivitaAssicurative` varchar(255) CHARACTER SET utf8 NOT NULL,
`CompagniaAssicurativa` varchar(255) CHARACTER SET utf8 NOT NULL,
`RespEconomato` varchar(255) CHARACTER SET utf8 NOT NULL,
`RespTecnico` varchar(255) CHARACTER SET utf8 NOT NULL,
`RespComAssicurativa` varchar(255) CHARACTER SET utf8 NOT NULL,
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 4 Lug 2018
  • #10
di seguito il risultato con la sola scelta dell'anno ( WHERE t.AnnoVerbale='2017' )



inserendo anche la verifica della lunghezza ( WHERE len(t.tecnico)>0 AND t.AnnoVerbale='2017' )
(LENGTH x MySQL !!!!!!)



mi sembra che il suggerimento sia corretto e la verifica lo dimostra,

abbi cura di inserire "UNION ALL" pena risultati parziali
 
Ultima modifica: 4 Lug 2018
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 4 Lug 2018
  • #11
Ciao Marino51, scusa ma io non capisco dove sbaglio...
PHP:
CREATE TABLE presenzepeg AS SELECT t.AnnoVerbale,t.tecnico, Sum(t.counter) AS conta_presenze
FROM (SELECT AnnoVerbale,RespTecnico as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespTecnico
UNION

SELECT AnnoVerbale,RespPM as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespPM
UNION

SELECT AnnoVerbale,RespVerdeUrbano as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespVerdeUrbano
UNION

SELECT AnnoVerbale,CompagniaAssicurativa as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,CompagniaAssicurativa
UNION

SELECT AnnoVerbale,RespComAssicurativa as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespComAssicurativa
UNION

SELECT AnnoVerbale,UfficioLegaleComune as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,UfficioLegaleComune
UNION

SELECT AnnoVerbale,UfficioAttivitaAssicurative as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,UfficioAttivitaAssicurative
UNION

SELECT AnnoVerbale,RespEconomato as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale,RespEconomato

)  AS t
WHERE LENGTH(t.tecnico)>0 AND t.AnnoVerbale='2017'
GROUP BY t.AnnoVerbale,t.tecnico
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 4 Lug 2018
  • #12
intanto prova la select da sola senza la creazione della tabella
essendo certo di usare quella che ti sto postando ora,
Codice:
SELECT t.AnnoVerbale, t.tecnico, sum(t.counter) AS conta_presenze
FROM (
SELECT AnnoVerbale, RespVerdeUrbano as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale, RespVerdeUrbano
UNION ALL
SELECT AnnoVerbale, RespPM as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale, RespPM
UNION ALL
SELECT AnnoVerbale, UfficioAttivitaAssicurative as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale, UfficioAttivitaAssicurative
UNION ALL
SELECT AnnoVerbale, CompagniaAssicurativa as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale, CompagniaAssicurativa
UNION ALL
SELECT AnnoVerbale, RespEconomato as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale, RespEconomato
UNION ALL
SELECT AnnoVerbale, RespTecnico as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale, RespTecnico
UNION ALL
SELECT AnnoVerbale, RespComAssicurativa as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale, RespComAssicurativa
UNION ALL
SELECT AnnoVerbale, UfficioLegaleComune as tecnico, count(*) as counter FROM tblverbali GROUP BY AnnoVerbale, UfficioLegaleComune
) t
WHERE LENGTH(t.tecnico)>0 AND t.AnnoVerbale='2017'
GROUP BY t.AnnoVerbale, t.tecnico
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 5 Lug 2018
  • #13
Provato la select che hai postato, mi conta sempre i campi vuoti...
una domanda, nella prova che hai fatto te, i campi come li hai definiti, così?
`RespVerdeUrbano` varchar(255) CHARACTER SET utf8 NOT NULL,
o in altro modo?

Ho fatto una prova, ho fatto l'update di tutti i campi interessati, con nomi fittizzi, poi ho svuotato alcuni campi per vedere se mi contava i vuoti come prima, invece me li esclude correttamente come a te...secondo te come si può fare a capire cosa inserisce?
L'inserimento dei professionisti lo faccio così, andando a selezionare da menu a tendina dalle varie tabelle, per es.:
PHP:
$Query1="SELECT * FROM tblrespverdeurbano ORDER BY id";
       //esecuzione della query
            $Leggi_RespVerdeUrbano=@mysql_query($Query1) or die (mysql_error());
       if(!$Leggi_RespVerdeUrbano)
         print("<H2>Queryfallita!</H2>");
       else
       echo "<select name='RespVerdeUrbano' id='RespVerdeUrbanoid'>";//Genera casella a discesa
       while ($row = mysql_fetch_array($Leggi_RespVerdeUrbano))
{
$RespVerdeUrbano = $row['RespVerdeUrbano'];

echo "<option value =\"$RespVerdeUrbano\">$RespVerdeUrbano </option>"; //Popola casella
}
echo "value=$RespVerdeUrbano </select>";
Forse è qui che genera qualcosa?
Perchè anche a video io non vedo nulla inserito e se scarico l'sql vedo i campi vuoti in questo modo '', quindi vuoti...boh
Grazie
Max61
 
Ultima modifica: 5 Lug 2018

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 5 Lug 2018
  • #14
i campi li ho creati esattamente come li hai inseriti nel post numero 9, ho fatto copia incolla delle tue definizioni
ho solo usato sql server invece di MySQL, ma non dovrebbe fare differenza

la query per me funziona

lo script cercherò di guardarlo e capirlo in giornata … tardi, ora non posso
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 5 Lug 2018
  • #15
Grazie per la pazienza...a dopo
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 9 Lug 2018
  • #16
ho tardato un po' ma non ho potuto prima … , non so se hai già risolto, in ogni caso,

nel codice che hai postato trovo strana questa riga
PHP:
echo "value=$RespVerdeUrbano </select>";
che, secondo me dovrebbe essere
PHP:
echo "</select>";
ma non so valutare l'effetto sulla scrittura dei valori nel db

prova a scrivere un record nel db ed immediatamente vedi il contenuto che è stato scritto,
si dovrebbe capire facilmente se c'è qualche problema….
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 10 Lug 2018
  • #17
Ciao Marino51, ho fatto varie prove, purtroppo non ho risolto, la tua modifica non inficia sull'inserimento, ma non risolve il problema.
Ho trovato in rete questo codice, ma anche questo non funziona...
PHP:
$query = mysql_query('SELECT DISTINCT(RespTecnico) FROM tblresptecnico ORDER BY id ASC');
$select = '<select name="RespTecnico">';

while($result = mysql_fetch_assoc($query))
      $select .= '<option value="' . $result['RespTecnico'] . '">' . $result['RespTecnico'] . '</option>';

$select .= '</select>';

echo $select;
Ciao
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 11 Lug 2018
  • #18
se è possibile,
scarica una decina di record dal db
e postali in un file txt,
avendo cura di scegliere i record con errore e non
 
M

Max61

Utente Attivo
2 Mar 2014
760
4
18
  • 11 Lug 2018
  • #19
Ho inserito alcuni record, l'unico campo valorizzato è quello con RespPM, gli altri sono "vuoti".
Invio anche il file excel che conteggia i campi vuoti e pieni
Ciao e grazie
 

Allegati

  • tblverbali.zip
    tblverbali.zip
    596 bytes · Visite: 358
  • Presenze GIL anno 2018.zip
    Presenze GIL anno 2018.zip
    3,8 KB · Visite: 330
Ultima modifica: 11 Lug 2018

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 11 Lug 2018
  • #20
i campi che vuoi selezionare non sono vuoti ma contengono,
correttamente il nome, vedi 'RespPM'
oppure, in maniera errata (credo), i caratteri "carriage return" e "line feed" vedi '\r\n'

Codice:
'\r\n', 'RespPM', '\r\n', '', '\r\n', '\r\n', '\r\n', '\r\n', '\r\n', '\r\n'


prova a sostituire

Codice:
WHERE LENGTH(t.tecnico)>0 AND t.AnnoVerbale='2017'

con

Codice:
WHERE LENGTH(t.tecnico)>0 AND t.tecnico <> '\r\n' AND t.AnnoVerbale='2017'

poi dovresti capire/sapere chi scrive quei caratteri e perchè .....
 
  • 1
  • 2
Succ.
1 di 2 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

S
[PHP] Selezionare ultimo campo ed escludere doppioni
  • samurai.sette
  • 19 Ago 2016
  • PHP
Risposte
16
Visite
4K
PHP 29 Ago 2016
samurai.sette
S
M
[PHP] Escludere i record con pratica conclusa
  • Max61
  • 22 Giu 2016
  • PHP
  • 2
Risposte
26
Visite
4K
PHP 19 Lug 2016
Max61
M
H
Need Help with PHP Database Connection Issues
  • hellmmithha
  • 19 Dic 2024
  • PHP
Risposte
1
Visite
660
PHP 21 Mar 2025
therope
T
F
Cerco Hosting con VECCHIE versioni di php
  • frk
  • 4 Mar 2024
  • Hosting
Risposte
0
Visite
2K
Hosting 4 Mar 2024
frk
F
Captcha php
  • Cosina
  • 21 Gen 2024
  • PHP
Risposte
1
Visite
2K
PHP 22 Gen 2024
WmbertSea
S
passare un valore da un form a un file .php con metodo post
  • smack2005
  • 15 Nov 2023
  • PHP
Risposte
4
Visite
1K
PHP 23 Nov 2023
zorro
N
php msyql
  • nik13
  • 10 Ott 2023
  • PHP
Risposte
6
Visite
2K
PHP 23 Ott 2023
zorro
N
php problemi a visualizzare video
  • nik13
  • 8 Ott 2023
  • PHP
Risposte
3
Visite
2K
PHP 11 Ott 2023
WmbertSea
A
menu a tendina php
  • Annama74
  • 30 Apr 2023
  • PHP
Risposte
1
Visite
2K
PHP 1 Mag 2023
marino51
D
  • Bloccata
protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito
  • dastur67
  • 5 Apr 2023
  • Web Server
Risposte
1
Visite
3K
Web Server 5 Apr 2023
dastur67
D
F
Php date_diff
  • Fra_23
  • 30 Mar 2023
  • PHP
Risposte
1
Visite
1K
PHP 31 Mar 2023
marino51
K
[PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa
  • Kiko74b
  • 16 Mar 2023
  • PHP
Risposte
2
Visite
2K
PHP 18 Mar 2023
Kiko74b
K
C
Wp-admin a file php
  • Cpu03
  • 25 Gen 2023
  • WordPress
Risposte
5
Visite
4K
WordPress 6 Mar 2023
Cpu03
C
[Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress
  • Lino80
  • 9 Gen 2023
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
3K
Offerte e Richieste di Lavoro e/o Collaborazione 9 Gen 2023
Lino80
Inviare file jpg in locale alla stampante con php
  • csi
  • 14 Dic 2022
  • PHP
Risposte
0
Visite
917
PHP 14 Dic 2022
csi
M
Passaggio variabili array php su un tasto jq
  • maubox8
  • 9 Dic 2022
  • PHP
Risposte
3
Visite
1K
PHP 10 Dic 2022
maubox8
M
E
Php aggiornamento tabella
  • Emanuele85
  • 1 Dic 2022
  • PHP
Risposte
9
Visite
2K
PHP 2 Dic 2022
WmbertSea
G
phpmailer e php 8.1 con estensione mysqli
  • giacomo9783
  • 24 Nov 2022
  • PHP
Risposte
6
Visite
2K
PHP 5 Dic 2022
giacomo9783
G
M
Invio dati database via email php
  • Maelstrom
  • 23 Nov 2022
  • PHP
Risposte
0
Visite
1K
PHP 23 Nov 2022
Maelstrom
M
K
[php] Problema con inner join
  • Kiko74b
  • 22 Nov 2022
  • PHP
Risposte
4
Visite
2K
PHP 23 Nov 2022
Kiko74b
K
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?