Problema con empty() e ||...

Il mio scopo è quello di verificare se sono presenti 3 variabli $_GET nell'url. Se ne è presente anche una sola, la pagina deve visualizzare altra roba. Passando al codice:

if(empty($_GET['anno']) || empty($_GET['mese']) || empty($_GET['id']))

Se l'url è fatto così la pagina dovrebbe visualizzare altra roba:

foto.php?anno=2008&mese=08

anche:

foto.php?id=5

Invece la riga di codice con l'if funziona solo se tutte e tre le variabili sono presenti come mai?

In pratica se non c'è niente nell'url viene visualizzata una home page invece se sono presenti dei dati ad es. anno e mese ci sarà una catalogazione invece se ci sarà id verrà visualizzata una pagina con varie foto.

Ecco tutto il codice:

   //INCLUDE
include('../include/dati_collegamento_database.inc.php');

$link = mysql_connect($host_connect, $utente_connect, $password_connect);   
if (!$link)   
{   
   printf("Connessione non riuscita: %sn", mysql_connect_error());   
   exit();   
} 
else
{  
      //SELEZIONO IL DATABASE
   mysql_select_db($db1);
   
   if(empty($_GET['anno']) || empty($_GET['mese']) || empty($_GET['id']))
   {
      $sql = "SELECT * FROM foto ORDER BY data DESC, ora DESC LIMIT 0,10 ;";
      $result = mysql_query($sql, $link)
       or die(mysql_error());
      $numero_eventi = mysql_num_rows($result);
      if($numero_eventi != 0)
      {
?>
<h3> Ultimi 10 eventi con foto</h3>
<br />
<table class="fotoTable">
   <thead>
      <tr>
         <th>Data</th>
         <th>Nome evento</th>
         <th>Numero foto</th>
      </tr>
   </thead>
   
   <tbody>
<?php
         while($row = mysql_fetch_row($result))
         {
            echo ("<tr>\n<td>\n".date("d-m-Y", strtotime($row[1]))."</td>\n<td>\n".$row[3]."</td>\n<td>\n".$row[4]."</td>\n</tr>");
         }
?>
   </tbody>
</table>
<?php
      echo("Numero eventi con foto: <strong>".$numero_eventi."</strong>");
      }
   }
}

Se può servire questo lavoro viene fatto con l'aiuto di mySql...

Vi prego aiutooooo.

Spero di avervi dato l'idea...

inviato 8 anni fa
matteostringher
X 0 X
Invece la riga di codice con l'if funziona solo se tutte e tre le variabili sono presenti come mai?

è sufficiente che una delle condizioni dell'if sia vera (indi che sia vuota una delle variabili passate a empty) per dare come vera tutta l'espressione.

d'altronde, se non erro, è sufficiente passare un parametro via get senza valore, e tutta l'espressione è vera (sia che nell'url siano presenti i restanti parametri con o senza valori).

infine ti suggerirei di controllare i parametri GET e POST usando isset il cui scopo è quello di controllare se un'associazione è definita all'interno dell'array GET o POST.

per il resto cedo la parola...

risposto 8 anni fa
larchitetto
modificato 8 anni fa
X 0 X

Una mano....???!!!????!!!!????

risposto 8 anni fa
matteostringher
X 0 X

GET, POST, etc si controllano con isset se devi valutare un indice dell'array se è esistente o meno; poi magari dopo potresti controllare l'effettivo valore... se è pieno, vuoto, se è il dato che ti aspetti (stringa e relative lunghezza, numero, float, etc)...

risposto 8 anni fa
larchitetto
X 0 X

Nono è sbagliato l'OR bisogna mettere AND.

Non so perchè ma funziona...

risposto 8 anni fa
matteostringher
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda