Paginazione impossibile

  • Creatore Discussione Creatore Discussione lughino
  • Data di inizio Data di inizio

lughino

Nuovo Utente
23 Mar 2010
24
0
0
Ciao a tutti, prima di tutto chiedo scusa per le mie sempre domande stupide riguardo la programmazione, ma si sa, non si nasce imparati!
Sto cercando di imparare, ma la fregola e le tante nozioni mi fregano...
Dopo essere impazzito con il php per creare la paginazione dei risultati di una ricerca, ora li devo mettere in un div, all'interno di un altro div, sia in alto che in basso nella pagina.
Mi spiego con un po' di codice..
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang="it" xmlns="http://www.w3.org/1999/xhtml" xml:lang="it"> 
<head>
<link href="css/stile_ufficiale.css" rel="stylesheet" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>
Risultato Ricerca
</title>

</head>
<body>
<div id="container">
       		 
	<div id="header"> 
    
    	<a href="home.php"><img src="http://Img/logo.jpg" width="920" height="122"  border="0" /></a>
		</div>
        <div id="navigation">
	In questa sezione ci sarà la barra dei menu con la funzione di ricerca e il login all'area riservata
	In questa sezione ci sarà la barra dei menu con la funzione di ricerca e il login all'area riservata
	In questa sezione ci sarà la barra dei menu con la funzione di ricerca e il login all'area riservata
	In questa sezione ci sarà la barra dei menu con la funzione di ricerca e il login all'area riservata
		</div>
        <div id="content">
<?php
function pagination_4($total_pages,$page,$_REQUEST){

    global $webpage;
    global $tipo;
    global $prezzo;
    global $acquisto;
    global $comune;
    $pagination="";

        if($total_pages!=1){

       //Impostiamo il numero massimo di elementi visualizzabili all'apertura della pagina, in questo caso 20;

        $max = 20;

        //Usiamo questa variabile nel cilco for piu sotto;

        $max_links = $max+1;
        $h=1;

            //Se la pagina è > di $max_links

        if($page>$max_links){

            //Facciamo partire il nostro loop

            $h=(($h+$page)-$max_links);
        }

          //Se la pagina non è l'unica

        if($page>=1){

                //estendiamo il nosto range di link visualizzabili

            $max_links = $max_links+($page-1);
        }

            //Se il numero massimo di link visualizzabili, supera il numero totale delle pagine, allora il numero di links è =numero totale di pagine

        if($max_links>$total_pages){
            $max_links=$total_pages+1;
        }

            //Creiamo i link prima e prev
	$pg = "&tipo=". $tipo ."&c=". $acquisto ."&com". $comune ."&p=". $prezzo;
        if($page>1){
/*		if($tipo != ""){
			if($pg == ""){
				$pg = "&amp;tipo=". $tipo;
			} else {
				$pg.= "&amp;tipo=". $tipo;
			}
		} 
		elseif($acquisto != ""){
			if($pg == ""){
				$pg = "&amp;c=". $acquisto;
			} else {
				$pg.= "&amp;c=". $acquisto;
			}
		}
		elseif($prezzo != "") {
			if($pg == ""){
				$pg = "&amp;p=". $prezzo;
			} else {
				$p .= "&amp;p=". $prezzo;
			}
		}*/
		$pagination.="<a href=". $webpage ."?page=". ($page-1) . $pg .">Prev</a>";

        }

            //Creiamo le pagine linkate

        for ($i=$h;$i<$max_links;$i++){
            if($i==$page){
                $pagination.="<a>".$i."</a>";
            }
            else{
/*		if($tipo != ""){
			if($pg == ""){
				$pg = "&amp;tipo=". $tipo;
			} else {
				$pg.= "&amp;tipo=". $tipo;
			}
		} 
		elseif($acquisto != ""){
			if($pg == ""){
				$pg = "&amp;c=". $acquisto;
			} else {
				$pg.= "&amp;c=". $acquisto;
			}
		}
		elseif($prezzo != "") {
			if($pg == ""){
				$pg = "&amp;p=". $prezzo;
			} else {
				$pg.= "&amp;p=". $prezzo;
			}
		}*/
                $pagination.="<a href=". $webpage ."?page=". $i . $pg .">". $i . "</a>";


            }
        }

            //Creiamo i link Next buttons

        if(($page >="1")&&($page!=$total_pages)){
/*		 if($tipo != ""){
			if($pg == ""){
				$pg = "&amp;tipo=". $tipo;
			} else {
				$pg.= "&amp;tipo=". $tipo;
			}
		} 
		elseif($acquisto != ""){
			if($pg == ""){
				$pg = "&amp;c=". $acquisto;
			} else {
				$pg.= "&amp;c=". $acquisto;
			}
		}
		elseif($prezzo != "") {
			if($pg == ""){
				$pg = "&amp;p=". $prezzo;
			} else {
				$pg.= "&amp;p=". $prezzo;
			}
		}*/
            $pagination.="<a href=".$webpage."?page=". ($page+1) . $pg .">Next</a>";

        }
    }

    //if one page of results

    else{
        $pagination.="";
    }
    
    return($pagination);
}

function query_immobili($tipo,$acquisto,$prezzo,$comune) {
require_once ("../conndb.php");
if (get_magic_quotes_gpc()) 
{ 
    $tipo = stripslashes($tipo); 
}
$tipo = mysql_real_escape_string($tipo);
$acquisto = mysql_real_escape_string($_REQUEST['c']);
$prezzo = mysql_real_escape_string($_REQUEST['p']);
$comune = mysql_real_escape_string($_REQUEST['com']);
//inizio parte inerente la paginazione
/*$ris_conteggio = mysql_query("SELECT count(*) as tot FROM Immobili WHERE Tipo LIKE '%$tipo%'") or die( mysql_error() );
$righe = mysql_fetch_array( $ris_conteggio );
$messaggi = 20;
$current_page = (!$_GET['pag']) ? 1 : (int)$_GET['pag'];
$pagine = ceil ( $righe['tot'] / $messaggi );
echo "Pagine: ";
for ($i = 1; $i <= $pagine; $i++) {
	if($i == $current_page) {
$paginazione .= $i . " ";
} else {
$paginazione .= "<a href=\"risultato.php?tipo=" . $tipo . " &amp;pagina=" . $i . "&amp;Inviato=true&amp;Invia=Invia!\">" . $i . "</a>";
}
}
echo "$paginazione";
// estraggo i record
if (! isset($_GET['pag']) || (int)$_GET['pag'] < 1) {
  $_GET['pag'] = 1;
}

if (isset($_GET['pag']) && (int)$_GET['pag'] > $pagine) {
  $_GET['pag'] = $pagine;
}
if(isset($_GET['Invia']) && $_GET['Inviato'] == "true") {
$query = "SELECT Immobili.Tipo, Immobili.Comune, Immobili.Acquisto, Immobili.Prezzo, Immobili.Descrizione, Immobili.ID, Immagini.Id_Immobili, Immagini.Percorso, Immagini.Flag FROM Immobili JOIN Immagini ON Immobili.ID = Immagini.Id_Immobili  WHERE Immobili.Tipo LIKE '%$tipo%' LIMIT " . ( ( (int)$_GET['pag'] - 1 ) * $messaggi ) . "," . $messaggi;
$risultato = mysql_query($query);
// qui il codice che stampa i messaggi 

if(mysql_num_rows($ris_conteggio) == 0) {
echo ("<div id=\"contenutorecord\">Non ci sono immobili al momento per questa sezione.</div>");
}else{*/
//prova mr webmaster
$page = $_GET['page'];
// Controllo se $pag è valorizzato...
// ...in caso contrario gli assegno valore 1
if (!$page) $page = 1; 
/*Setto il numero massimo di record per pagina */ 
$max_results = 20; 
//query di ricerca 
//$query_ricerca= "SELECT Immobili.Tipo, Immobili.Comune, Immobili.Acquisto, Immobili.Prezzo, Immobili.Data_ins, Immobili.Descrizione, Immobili.ID, Immagini.Id_Immobili, Immagini.Percorso, Immagini.Flag FROM Immobili JOIN Immagini ON Immobili.ID = Immagini.Id_Immobili "; 
//metti vuota la variabile
$were="";
if($tipo != ""){ 
    $were= "WHERE Immobili.Tipo = '". $tipo ."' "; 
} //fine if tipo
if($acquisto != ''){
    if($were ==""){
        $were= "WHERE Immobili.Acquisto = '". $acquisto ."'";
    }else{
        $were .= " AND Immobili.Acquisto = '". $acquisto ."'";
    }//fine if-else were vuota
} // fine if acquisto
if($comune != ''){
    if($were ==""){
        $were= "WHERE Immobili.Comuni = '". $comune ."'";
    }else{
        $were .= " AND Immobili.Comuni = '". $comune ."'";
    }//fine if-else were vuota
} // fine if comuni
if($prezzo == "fino1") {
    if($were ==""){
        $were= "WHERE Immobili.Prezzo <= 100000 ";
    }else{
        $were .= " AND Immobili.Prezzo <= 100000 ";
    }
}elseif($prezzo == "100000") {
    if($were ==""){
        $were= "WHERE Immobili.Prezzo BETWEEN 100000 AND 200000";
    }else{
        $were .= " AND Immobili.Prezzo BETWEEN 100000 AND 200000";
    }
}elseif($prezzo == "oltre2"){
    if($were ==""){
        $were= "WHERE Immobili.Prezzo > 200000";
    }else{
        $were .= " AND Immobili.Prezzo > 200000";
    }
}//fine selezione prezzi

$query_ricerca = "SELECT Immobili.Tipo, Immobili.Comune, Immobili.Acquisto, Immobili.Prezzo, Immobili.Data_ins,
 Immobili.Descrizione, Immobili.ID, Immagini.Id_Immobili, Immagini.Percorso, Immagini.Flag FROM Immobili 
 JOIN Immagini ON Immobili.ID = Immagini.Id_Immobili ". $were; 
//$sql = substr($query_ricerca,0,strlen($query_ricerca)-4); // questo serve a togliere l'ultima and che farebbe andare in errore la query
$result= mysql_query($query_ricerca) or die(mysql_error()); 
$total_results = mysql_num_rows($result); 
$total_pages = ceil($total_results / $max_results); 
$webpage = basename($_SERVER['PHP_SELF']); 
$pagination = pagination_4($total_pages,$page); 
/* Mi calcolo l'offset */ 
$from = ($page - 1) * $max_results;
//$from = (($page * $max_results) - $max_results);  
$query_ricerca .= " ORDER BY Immobili.Prezzo ASC, Immobili.Data_ins DESC LIMIT $from, $max_results ";
$result2 = mysql_query($query_ricerca) or die(mysql_error()); 
while ($ris_array = mysql_fetch_assoc($result2)) {
	if ($ris_array['Flag'] == 1){
		echo "<div id=\"contenutorecord\">";
		echo "<div id=\"sfondoimgsmall\"><img src=\"" . $ris_array['Percorso'] . "\" height=\"99\" width=\"150\" /></div>";
		echo "<div id=\"contenutoimmobile\">";
		$Acquisto = strtoupper($ris_array['Acquisto']);
		$Tipo = strtoupper($ris_array['Tipo']);
		$Comune = strtoupper($ris_array['Comune']);
		$Descrizione = tagliastringa($ris_array['Descrizione'],150);
		$Prezzo = "&euro; " . $ris_array['Prezzo'];
		echo "<h2><a href=\"scheda.php?id=" . $ris_array['ID'] . "\">" . $Acquisto . " - " . $Tipo . " - " . $Comune . "   -   " . $Prezzo . "</a></h2>";
		echo "<p>" . $Descrizione . "</p></div>";
		echo "<div id=\"schedaimmobile\"><a href=\"scheda.php?id=" . $ris_array['ID'] . "\"><img src=\"/Img/scheda-casa.jpg\" border=\"0\" width=\"155\" height=\"105\" /></a></div></div>";
	}
}
echo "<div class=\"pagine\">" .$pagination;
mysql_close($link);
}
$tipo = htmlentities($_REQUEST['tipo']);
query_immobili($tipo,$acquisto,$prezzo,$comune);

e il relativo css:
Codice:
/*stili per il layout fisso*/
html,body{margin: 0;padding:0}
body {
	background:#363636 url(../Img/bg_body_red2.jpg) repeat-x fixed center top;
	margin:0 auto;
	padding: 0 auto;
	font-family:Arial, Helvetica, sans-serif;
	font-size:12px;
	text-align:justify;}
div#container{width: 920px;margin: 0 auto;text-align: left;}
/*paginazione*/
.pagine {
	background-color: #FFF;
	text-align: left;
	height: 25px;
	width: 318px;
	margin-top:2px;
	margin-left:5px;
	float:right;
}
/*stili generici, su header e footer*/
#header{background-image:url(../Img/header.jpg);color: #ff0;border-left: 0px;border-right: 0px}
h1,h2{margin: 0;padding:0}
h1{padding-left:0.5em;font: bold 2.3em/80px arial,serif}
h2{color: #999;font-size: 1.5em}
/*div#footer{text-align:center;padding: 0.5em;
    background-color: red; color: #000;border-left: 2px solid red;border-right: 2px solid red}*/
div#footer a{color: #fff;font-weight: bold;text-decoration: underline;border-left: 2px solid red;border-right: 2px solid red}
/*colori link*/
a:link {
color : black;
text-decoration : none;
}
a:visited {
color : #b50042;
text-decoration : none;
}
a:hover {
color : #999;
text-decoration : none;
}
/*fine colori link*/
/*stili specifici per il layout*/
div#navigation{background-color:red;border-left: 2px solid red;border-right: 2px solid red}
div#content{background-color:white;padding: 1em;border: 2px solid red;}
#contenuto {
	margin:0 auto;
	text-align: center;
	background-color: white;
	padding: 1em;
	border: 2px solid red;
	}

#contenutorecord {
	width:800px;
	background-color: white;
	float:left;
	padding-left:50px;
	padding-right:35px;
	padding-bottom:15px;
	border: 2px solid red;
	}	
#contenuto-dettaglio {
	width:906px;
	margin-top:25px;
	float:left;}

#contenutoimmobile {
	width:420px;
	height:115px;
	padding-top:5px;
	padding-left:15px;
	text-align:justify;
	float:left;
}


#sfondoimgsmall {
	width:155px;
	height:105px;
	float:left;
	background:white;
	padding-top:1px;
	padding-left:1px;
	margin-top:3px;
/*	margin-left:17px; */
margin-right:18px}

#schedaimmobile {
	width:155px;
	height:105px;
	float:right;
	position:relative;
	margin-top:20px;
	padding-left:5px;
	padding-top:5px;
	background:white;
	border:0;
	}
	
#schedaimmobile:hover{
	width:165px;
	height:115px;
	position:relative;
	margin-top:19px;
	padding-left:5px;
	padding-top:5px;
	background-image:url(../Img/sfondoimg2.png);
	float:right;
	border:0;
	}

dal lato del funzionamento, va tutto, ma per la paginazione...se non metto "<div class=\"pagine\">" nell'echo alla quintultima riga tutto ok, il div "content" racchiude tutti i risultati, se invece lo metto il div "content" si apre e si chiude ma è alto circa 10pixel e non raccihude un bel niente! i risultati del ciclo ed il div "pagine" sono fuori dal div "content".
E questo proprio non lo capisco, i div racchiudono tutti gli altri div ma questo gli sta antipatico!
Tra l'altro il div "pagine" lo vorrei mettere prima del ciclo e dopo.
Spero che abbiate pazienza di aiutarmi, mi sento molto indietro ma voglio assolutamente imparare.
Grazie ciao
 
ciao
prova a verificare che per ogni <div> aperto corrisponda il suo </div> chiuso
quello che hai postato è un po' incasinato da leggere e sembrerebbe che ci siano dei div non chiusi
 
Ciao,
si quello l'ho verificato ed è ok.
So che è un po' tutto incasinato ma all'atto del funzionamento va tutto, è l'impaginazione che s'incasina quando metto quel div..
 
ciao, dai un occhio
PHP:
</head>
<body>
<div id="container">           
	<div id="header"> 
		<a href="home.php"><img src="http://Img/logo.jpg" width="920" height="122"  border="0" /></a>
	</div><!--fine div header -->
	<div id="navigation">
		In questa sezione ci........
	</div><!--fine div navigation -->
	<div id="content">
	<?php
		//tutto quello che ci deve essere
	?>
	</div> <!--fine div content -->
		<div class="pagine">
		<?php
			echo $pagination; 
		?>
		</div> <!--fine div pagine -->
</div> <!--fine div container -->
	
oppure se la paginazione tutta dentro php

	</div> <!--fine div content -->
	<?php
		//tutto quello che ci deve essere
		echo "<div class=\"pagine\">$pagination</div>";
	?>
</div> <!--fine div container -->

verifica che lo schema sia simile, eventualmente devi provare a dare display block e/o clear ai div,
caso mai fai uno screeshot di come dovrebbe venire e postalo
 

Discussioni simili