if else (filtri per una tabella)

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
43
Massa, Italy
Salve, si come che non capisco ancora come si usano gli if , else if , else.

Mi sapete riscrivere il codice ha modo di questo pezzo :

Dovrei fare dei filtri "Categoria" e "utente",
solo che non so sistemare la cosa dei if else.

ecco il codice:
PHP:
<?php

	$id_cat = $_GET["id"];	
	$id_user = $_GET["user"];
	if(empty($id_cat) && empty($id_user))
	{
				$pag = new Paginazione("SELECT * FROM articoli ", 20, "pagina");
	
	}else
	{
	if($id_cat == $_GET["id"])
	{
				$pag = new Paginazione("SELECT * FROM articoli WHERE  _catid='".$id_cat."'", 10, "pagina");

	}
	if($id_user == $_GET["user"])
	{
				$pag = new Paginazione("SELECT * FROM articoli WHERE  _userid='".$id_user."'", 10, "pagina");
				
	}
	}
?>

vi prego mi potete aiutarmi?

grazie mille.
buona giornata.
 
Non ho capito bene...

Non hai capito come funzionano if, elseif ed else???
E' semplicissimo:
PHP:
if(condizione1) {
    //se condizione1 è vera eseguo qusto codice
}
elseif(condizione2) {
    //se condizione1 è false e condizione2 è vera eseguo qusto codice
}
else {
    //se condizione1 è falsa e condizione2 è falsa eseguo qusto codice
}

Il tuo codice dovrebbe essere:

PHP:
<?php
          if($id_cat = $_GET["id"]) {
                $pag = new Paginazione("SELECT * FROM articoli WHERE       _catid='".$id_cat."'", 10, "pagina");
         }
         elseif($id_user == $_GET["user"]) {
                $pag = new Paginazione("SELECT * FROM articoli WHERE   _userid='".$id_user."'", 10, "pagina");     
         }
         else {
                $pag = new Paginazione("SELECT * FROM articoli ", 20, "pagina");
        }
?>

Non so se è quello ke volevi fare... visto ke non lo hai scritto
Oppure io farei:

PHP:
<?php
          $query="SELECT * FROM articoli WHERE 1=1";
          $num_righe=20;

          if($id_cat = $_GET["id"]) {
                $query.=" AND _catid='".$id_cat."'";
                $num_righe=10;
         }
         if($id_user == $_GET["user"]) {
                $query =" AND _userid='".$id_user."'";     
                $num_righe=10;
         }
          $pag = new Paginazione($query, $num_righe, "pagina");
?>

Più pulito e + semplice non credi?
 
Ultima modifica:
grazie mille per la spiegazione.
un'altra cosa
con questo pezzo di codice :

PHP:
<?php
         if($id_cat = $_GET["id"]) {
                $pag = new Paginazione("SELECT * FROM articoli WHERE   _catid='".$id_cat."'", 10, "pagina");
         }
         elseif($id_user == $_GET["user"]) {
                $pag = new Paginazione("SELECT * FROM articoli WHERE   _userid='".$id_user."'", 10, "pagina");     
         }
         else {
                $pag = new Paginazione("SELECT * FROM articoli ", 20, "pagina");
        }
?>

funziona,

ma non funziona l'else perchè mi dice che non ci sono record invece ci sono.

per i get funziona bene e fa quello che doveva fare e solo per l'else.

Mi dici come risolvere ?

grazie mille.
 
No

Usa questo!
PHP:
<?php
          $query="SELECT * FROM articoli WHERE 1=1";
          $num_righe=20;

          if($id_cat = $_GET["id"]) {
                $query.=" AND _catid='".$id_cat."'";
                $num_righe=10;
         }
         if($id_user == $_GET["user"]) {
                $query =" AND _userid='".$id_user."'";     
                $num_righe=10;
         }
          echo $query;//Questo ci fa vedere quale parte becca poi toglilo
          $pag = new Paginazione($query, $num_righe, "pagina");
?>

Penso che sia quello ke vuoi fare...
Dimmi che query ti esce scritta in tutti i vari casi e cosa non ti piace...
Se non spieghi cosa vuoi fare non posso risolvere il problema.
 
Ultima modifica:

Discussioni simili