Oppure

Loading
04/03/16 12:29
TheDarkJuster
Il codice php è eseguito sempre e solo dal server, il browser non ha alcun ruolo.

Detto questo se non ci sono errori nella query allora del db non ci sono righe che soddisfano le condizioni del where.

Edit: per qualche assurda ragione la mia tastiera ha cambiato server con kernel.
Ultima modifica effettuata da TheDarkJuster 04/03/16 12:49
aaa
04/03/16 13:08
Aangelus
Grazie per i suggerimenti eseguirò altre prove e vedrò cosa ne uscirà nella peggiore delle ipotesi creo due if annidati
aaa
04/03/16 14:08
TheDarkJuster
non funziona mica così.....

Non importa se lo fai con if o con una query, se non ci sono righe che soddisfano entrambi i criteri otterrai sempre un insieme vuoto, come è giusto che sia.

La query non ha problemi, il db nemmeno, stai solo cercando dati con un criterio che non porta alcun risultato nello stato attuale del db!
aaa
04/03/16 21:26
Aangelus
Ho trovato la query che printa i valori corretti con php, cambiando l'operatore logico con or
<?php
  if(mysql_num_rows($Trovato =mysql_query("SELECT * FROM ".$Nome." WHERE (AnnoDb = '$DbAnno' and NumCD like '7')  or (Brani like 'Migliori' and NumeroBrani like '7') ") ) == 0){
             
              echo "Dentro";      
      }else{
         
         echo "fuori";
                    }
?>


anche se ciò non ha senso :om::blush:
la query in questione dovrebbe restituire 0 a una sola delle due condizioni per essere vera e printare Dentro ma per qualche oscuro :rofl: motivo non è così entra solo quando sono entrambe vere ????:-| ?????
Mi potrei limitare a usare il codice così com'è senza pormi tante domande ma non riesco :_doubt: vorrei capire :-?:noway::-?
Ultima modifica effettuata da Aangelus 04/03/16 21:28
aaa
04/03/16 23:11
TheDarkJuster
per soddisfare una condizione OR è necessario che ALMENO una delle due condizioni sia vera, quindi è un comportamento corretto selezionare quelle righe che soddisfano entrambe le condizioni, ma NON è corretto che funga da AND.

if(mysql_num_rows($Trovato =mysql_query("SELECT * FROM ".$Nome." WHERE (AnnoDb = '$DbAnno' and NumCD like '7') or (Brani like 'Migliori' and NumeroBrani like '7') ";) ) == 0)

Ora che riguardo bene il codice noto una cosa..... Secondo me hai invertito "Dentro" e "fuori"............
Tu vuoi stampare "Dentro" quando TROVI ALMENO UN RISULTATO, quindi nell'if dovevi avere (mysql_num_rows (...) != 0), non == 0. :rotfl::rotfl::rotfl::rotfl::rotfl:
Ultima modifica effettuata da TheDarkJuster 04/03/16 23:14
aaa
06/03/16 10:35
Aangelus
Salve quella quey è stata creata con la concezione logica di: se entrambe le condizioni restituiscono 0 righe il valore in questione non esiste quindi creo un'altra query di inserimento all'interno, mentre se restituisse più righe creo un switch dove il valore viene inserito nella giusta collocazione

if (se entrambi le condizioni producono Numero righe == 0){

query inserimento (sarebbe la condizione DENTRO)

}else{

condizione FUORI
switch(N righe){
case > 5
inserimento tabella x
case > 10
inserimento tabella y
ecc
}
}
aaa
07/03/16 7:45
TheDarkJuster
Ok se ragioni in logica negata noterai che per eseguire Dentro entrambe le condizioni sono false. Quindi questa è una ulteriore conferma che il tuo db non ha ciò che vuoi al suo interno.
aaa