Stabilire condizione if ed else in query php

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Buonasera a tutti,
vorrei stampare un echo qual'ora l'array generato tramite query non contenga nessun dato.

Ho provato cosi:

PHP:
$dataincasso = $_POST['dataincasso'];

$sql="SELECT SUM(totale) as tot FROM CommesseO WHERE data = STR_TO_DATE('$dataincasso', '%d/%m/%Y') ";
    $result=mysql_query($sql) or die(mysql_error());

	
		if (empty $result)) {
		echo "Nessun dato presente in db";
	}
		else {    
    
    //apro la tabella       
    $contenuto = "<table align=center>";
    
    //ciclo di caricamento delle righe
    while ($riga = mysql_fetch_assoc($result)) {
    $contenuto .= "<tr><td>". $riga['tot'] ."</td></tr>";
	}
	
    //chiudo la tabella
    $contenuto .= "</table>";
	
		}

?>

Ma il ciclo if else sembra proprio errato, ma video non ricevo messaggi di errore.

:byebye:
 

Akuma

Nuovo Utente
17 Mag 2014
28
0
1
33
Peschiera del Garda (VR)
Allora prova una soluzione del genere:

PHP:
<?php
    $sql = mysql_query("SELECT SUM(totale) as tot FROM CommesseO WHERE data = STR_TO_DATE('$dataincasso', '%d/%m/%Y')")
        or die("Query non valida: " . mysql_error());

    if(mysql_num_rows($sql) <= 0) {
         echo "Nessun dato presente in db"; 
    } else {     
     
        //apro la tabella        
        $contenuto = "<table align=center>"; 

        //ciclo di caricamento delle righe 
        while ($riga = mysql_fetch_assoc($sql)) { 
        $contenuto .= "<tr><td>". $riga['tot'] ."</td></tr>"; 
        } 

        //chiudo la tabella 
        $contenuto .= "</table>"; 
     
    } 
?>

non conoscendo come effettui la connessione al database, come è strutturato ed i contenuti richiesti dalla query, non so se sia li il problema.

Facci sapere :D
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Allora prova una soluzione del genere:
Facci sapere :D

Se provo ad eseguirla cosi, senza il controllo dell'if funziona ...

PHP:
$dataincasso = $_POST['dataincasso'];

$sql="SELECT SUM(totale) as tot FROM Commesse WHERE data = STR_TO_DATE('$dataincasso', '%d/%m/%Y') ";
    $result=mysql_query($sql) or die(mysql_error());

    
    //apro la tabella       
    $contenuto = "<table>";
    
    //ciclo di caricamento delle righe
    while ($riga = mysql_fetch_assoc($result)) {
    $contenuto .= "<tr><td>". $riga['tot'] ."</td></tr>";
}

    //chiudo la tabella
    $contenuto .= "</table>";

    //visualizzo la tabella
    echo $contenuto;
    
?>

:(
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
ciao
guarda che lo script di akuna dovrebbe funzionare, a parte quel CommesseO al posto di Commesse

Buongiorno,
lo script proposto da akuna effettivamente dovrebbe funzionare, al di la di quel CommesseO che nello script in produzione risulta essere correttamente settato a Commesse.

Il punto è un altro, se effettuo la ricerca su di una data dove il calcolo del (SUM) è diverso da 0,00 il risultato della query viene correttamente mostrato a video, ne deduco pertanto che lo script entri correttamente nell'else e stampi a video la table con il risultato della query:

PHP:
.....

else {     
     
        //apro la tabella        
        $contenuto = "<table align=center>"; 

        //ciclo il caricamento delle righe 

        while ($riga = mysql_fetch_assoc($sql)) { 
        $contenuto .= "<tr><td>". $riga['tot'] ."</td></tr>"; 
        } 

        //chiudo la tabella 
        $contenuto .= "</table>"; 
		
		echo "$contenuto";

Mi rimane comunque il problema della stampa a video di un messaggio qual'ora fosse restituito dalla query un risultato vuoto.

Notavo che se scrivo il primo if (giusto per test), in questo modo :

PHP:
.....

if(mysql_num_rows($sql) > 0) {
         echo "Nessun dato presente in db"; 
    }

viene stampato in tutte le ricerche "Nessun dato presente in db" ...

Questo mi fa pensare che venga stampata sempre e comunque una riga, pertanto dovrei indicare a php

"Se il contenuto della cella ['tot'] è uguale a 0 oppure uguale a "vuoto" ("") stampa la scritta "Nessun dato presente in db" altrimenti prosegui con l'else " ...

Voi cosa ne pensate ?

:byebye:
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Ho eseguito la query nel database, quindi rettifico quanto scritto prima:


"Se il contenuto della cella ['tot'] è uguale a NULL stampa la scritta "Nessun dato presente in db" altrimenti prosegui con l'else " ...

Questo il risultato della query eseguita sul database:


Provato cosi ma non va:

PHP:
if(empty ($sql) OR ($sql) == 'NULL') {
         echo "Nessun dato presente in db";
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
PHP:
if(mysql_num_rows($sql) == 0) {
//non trovate...
}else{
//trovate..
}
mysql_num_rows restituisce il numero di righe trovate, 0 se non trovate
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
ciao
PHP:
if(mysql_num_rows($sql) == 0) {
//non trovate...
}else{
//trovate..
}
mysql_num_rows restituisce il numero di righe trovate, 0 se non trovate

Soluzione già provata, funziona correttamente se la SUM contiene un valore, ma stranamente restituisce pagina bianca e nessun errore nel log se non trova nulla. Bha !!!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto guarda che il while non ti serve, la query restituisce un valore unico se trova record che soddisfino il where
prova questo
PHP:
<?php
//....
$sql = mysql_query("SELECT SUM(totale) as tot FROM Commesse WHERE data = STR_TO_DATE('$dataincasso', '%d/%m/%Y')")
        or die("Query non valida: " . mysql_error());
$riga = mysql_fetch_assoc($sql);
if($riga['tot']=== NULL) {
         echo "Nessun dato presente in db"; 
} else {           
	$contenuto = "<table align=center><tr><td>". $riga['tot'] ."</td></tr></table>";
	echo $contenuto;  
}
//.....
?>
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
ciao
intanto guarda che il while non ti serve, la query restituisce un valore unico se trova record che soddisfino il where
prova questo
PHP:
<?php
//....
$sql = mysql_query("SELECT SUM(totale) as tot FROM Commesse WHERE data = STR_TO_DATE('$dataincasso', '%d/%m/%Y')")
        or die("Query non valida: " . mysql_error());
$riga = mysql_fetch_assoc($sql);
if($riga['tot']=== NULL) {
         echo "Nessun dato presente in db"; 
} else {           
	$contenuto = "<table align=center><tr><td>". $riga['tot'] ."</td></tr></table>";
	echo $contenuto;  
}
//.....
?>

Ora ci siamo :), grazie a voi ho risolto.

Solo una curiosità, perchè :

PHP:
if($riga['tot']=== NULL)

e non :

PHP:
if($riga['tot']== NULL)

Grazie ancora :fonzie:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
volevo mostrarti un esempio in cui è importante ===
PHP:
<?php
$stringa="abbondio";
$cerca="a";
if(strpos($stringa, $cerca)== FALSE){
	echo 'il carattere "a" non è stato trovato in "abbondio" !!!FALSO!!!<br>';
}else{
	echo 'il carattere "a" è stato trovato in "abbondio" !!!dovrebbe essere vero!!!<br>';
}
if(strpos($stringa, $cerca)=== FALSE){
	echo 'il carattere "a" non è stato trovato in "abbondio"<br>';
}else{
	echo 'il carattere "a" è stato trovato in "abbondio" al posto '.strpos($stringa, $cerca).' !!!vero!!!<br>';
}
?>
se lo provi vedi la differenza IMPORTANTISSIMA
come vedi il carattere "a" si trova al posto 0 (ricorda la numerazione parte da zero)
nel primo if php interpreta 0 come false e quindi ti da un risultato errato
il secondo valuta sia il valore che il tipo quindi ti da il risultato giusto
 
Discussioni simili
Autore Titolo Forum Risposte Data
S PHP Impossibile stabilire la connessione PHP 8
I Come stabilire il prezzo di un sito?? Guadagnare col Sito 15
Y verificare condizione dopo esecuzione della funzione Programmazione 0
M Update con condizione SQL PHP 7
maxnegri Contare sessioni aperte e creare condizione PHP 1
G Campo Not null a condizione MySQL 8
S [Javascript] Problema con condizione "if" Javascript 2
D Mailchimp - Possibile inserire doppia condizione per i triggers? Email Marketing 0
N [PHP] Controllare condizione ciclo While PHP 9
D [PHP] Update non trasferisce condizione where PHP 1
P [Javascript] Inserire una nuova condizione in una funzione Javascript 3
R [MS Access] CONDIZIONE CHE CAMBIA PROPRIETA' DI UNA CONTROLLO MS Access 7
giancadeejay inserire condizione php PHP 6
R [Javascript] Geolocalizzazione con condizione Javascript 8
C Colorare righe tabella tramite condizione Java 5
A Redirect con condizione Javascript 2
pup3770 Passare parametro ad un'altra pagina in base alla condizione PHP 3
K Array_shift e condizione PHP 1
M condizione MS Access 3
L Condizione if PHP 1
B Condizione if html HTML e CSS 1
felino [Smarty] Stampa di una tabella dinamica, condizione su una cella PHP 1
M Redirect con condizione precisa PHP 2
S Blocco campo per condizione vera MS Access 4
F exit condizione if jQuery 1
M nascondere la colonna di una tabella in base ad una condizione PHP 8
felino Array: eliminare gli elementi che soddisfano una condizione PHP 5
felino Selezionare le colonne con una certa condizione PHP 2
C condizione if convertibile in array PHP 1
T problema ciclo + condizione if PHP 1
C modifica condizione IF in mudulo OSTimer per Joomla PHP 0
T Problema condizione di un form con mysql PHP 15
I Condizione if su valore array Javascript 2
L Blocco if | Condizione sul colore Javascript 0
A Radio button con condizione link Javascript 6
I Insert Into con condizione PHP 9
A condizione di una select PHP 6
D Non funziona la condizione IF PHP 2
D URGENTE: condizione Javascript da pagina ASP Classic ASP 5
R problema con else PHP 0
L if ed else PHP 9
S [PHP] Difficoltà con costrutto if/else PHP 6
A [PHP] If e Else paginazione ok ci sono risultati no ma avanti lo stesso PHP 15
X [PHP] Problema if else PHP 23
trattorino [Javascript] ELSE su java script Javascript 1
Trapano [PHP] come impostare un if else PHP 10
bubino8 [PHP] esleif oppure else if PHP 4
W creare un app con if ed else Sviluppo app per iOS 0
Shyson Creare funzione if else jQuery 69
G condizioni if then else all interno di una query?? MySQL 2

Discussioni simili