[PHP] Difficoltà con costrutto if/else

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao a tutti. Come da titolo ho una piccola difficoltà con il costrutto if/else.
Ho creato un database con una tabella di 5 colonne (id - valore1 - valore2 - valore3 - attivo).
Se nelle righe della colonna "attivo" è scritto SI , di quella riga devo estrarre il valore della colonna 1; se nella colonna "attivo" non è scritto nulla devo stampare a video un messaggio di errore.
Se nella colonna "attivo" è scritto SI funziona perfettamente mentre se non è scritto nulla non funziona.
Questo è quello che ho fatto
PHP:
<?php
$conn = mysqli_connect("localhost", "root", "", "db");
$query = mysqli_query($conn, "SELECT * FROM tabella WHERE attivo = 'SI' ORDER BY id");

if ($query) {
    while ($dati = mysqli_fetch_array($query)) {
        echo $dati[1] . "<br />";
        mysqli_close($conn);
    }
}

else {
        echo "Errore!";
    }
?>
Spero che qualcuno possa darmi una dritta.
Ciao a tutti e grazie anticipatamente.
 
Comunque indipendentemente dall'utilizzo di mysqli o meno, se ho capito bene..., non otterrai mai quello che vuoi se non modifichi la query, infatti tu vai ad estrarre dal db SOLO le colonne che hanno attivo=si, quindi le altre non PHP non le vede proprio.
Ti consiglio di estrarre tutta la tabella, poi controllando la colonna attivo se è si fai una cosa, altrimenti ne fai un'altra
 
Ti consiglio di estrarre tutta la tabella, poi controllando la colonna attivo se è si fai una cosa, altrimenti ne fai un'altra
....????
Scherziamo....
Comunque non serve del codice per la valutazione del "si" - "no", ma solo un punto di escape in caso di risultato nullo...
Con l'estrazione di tutti i risultati avrai un baco nn indifferente....
 
....????
Scherziamo....
Comunque non serve del codice per la valutazione del "si" - "no", ma solo un punto di escape in caso di risultato nullo...
Con l'estrazione di tutti i risultati avrai un baco nn indifferente....

No, non scherzo affatto.
la query "SELECT * FROM tabella WHERE attivo = 'SI' ORDER BY id" estrae SOLO i record che soddisfano la condizione richiesta, e che quindi hanno la colonna 'attivo' valorizzata a 'Si', quindi l'unica possibilità per avere un risultato nullo è che nel db non ci sia nessun record con la colonna attivo=Si.

L'estrazione di tutti i dati non è certo un baco, sicuramente è meglio mirare le query per estrarre il minimo indispensabile per non appesantire il server e velocizzare le chiamate, ma i bachi sono altre cose, un baco è quello che cerca di fare lui con quella query perchè non riuscirà mai ad ottenere il risultato cercato, nel suo caso il codice antrerà sempre e solo nell'if o sempre e solo nell'else.

Poi secondo te se non controlla i dati estratti come lo fa il punto di escpe? a caso?
Se l'intento è quello di vedere se ci sono record con attivo=Si allora la query va bene com'è, ma se vuole controllare QUALI record hanno si e quali no (o null), il WHERE non va certo bene così
 
Nel caso sopra da te descritto concordo pienamente con te, certo sarebbe improponibile effettuare una valutazione con molti dati in tempi accettabili, sarebbe ripeto un baco/ errore concettuale....

if ($query) {
while (
$dati = mysqli_fetch_array($query)) {
echo
$dati[1] . "<br />";
mysqli_close($conn);
}
}

else {
echo
"Errore!";
}

In definitiva, non è stata richiesta la verifica/check sul campo, da nessuna parte viene effettuato il check sul campo SI ma solo sulla valorizzazione del risultato query....

-------
Edit.... Mi ero fermato al codice.... Sorry! Hai ragione!
 

Discussioni simili