salve a tutti,
da scarso conoscitore di php vi pongo questo problema: ho copiato un metodo per pubblicare i risultati di una query su piu' di una pagina e l'ho applicato al mio db.
Tutto ok....ma c'e' una cosa che non riesco a fare; se la query contiene al suo interno una variabile, non riesco a passare questa variabile alle varie pagine e la query non viene effettuata come voglio.
Vi posto i tre file cosi' e' piu' facile...(salto il .html altrimenti il messagio e' troppo lungo)
search3.php
codice:
<html>
<title>ORQUAM</title>
<h1 align="center">Offline Run QUAlity Monitor</h1>
<body bgcolor="gray">
<h3 align="center">All selected runs</h3>
<a href="http://######/orquam/cosmics_web.html">
Back</a>-
<a href="http://######/orquam/quality3_web.html">
Home</a>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
DETECTOR:
                             TRIGGER:
<form action="http://#######/orquam/search3.php" method="get">
         TPC:
<input type="checkbox" name="detector1" value="tpc">
TRD:
<input type="checkbox" name="detector2" value="trd">
                 TOF:
<input type="checkbox" name="trigger1" value="tof">
                 SPD:
<input type="checkbox" name="trigger3" value="spd">
ACORDE:
<input type="checkbox" name="detector3" value="acorde">
SSD:
<input type="checkbox" name="detector4" value="ssd">
                 TRD:
<input type="checkbox" name="trigger2" value="trd">
                 SSD:
<input type="checkbox" name="trigger5" value="ssd">
         SDD:
<input type="checkbox" name="detector5" value="sdd">
SPD:
<input type="checkbox" name="detector6" value="spd">
        ACORDE:
<input type="checkbox" name="trigger4" value="acorde">
                 SDD:
<input type="checkbox" name="trigger6" value="sdd">
<input type="submit" value="Submit">
</form>
<?php
$det1=$_REQUEST["detector1"];
$det2=$_REQUEST["detector2"];
$det3=$_REQUEST["detector3"];
$det4=$_REQUEST["detector4"];
$det5=$_REQUEST["detector5"];
$det6=$_REQUEST["detector6"];
$trg1=$_REQUEST["trigger1"];
$trg2=$_REQUEST["trigger2"];
$trg3=$_REQUEST["trigger3"];
$trg4=$_REQUEST["trigger4"];
$trg5=$_REQUEST["trigger5"];
$trg6=$_REQUEST["trigger6"];
$Det=$_REQUEST["Det"];
if ($det1=="tpc")
$Det1 = sprintf("AND tpc='x'");
if ($det2=="trd")
$Det2 = sprintf("%sAND trd='x'",$Det1);
if ($det3=="acorde")
$Det3 = sprintf("%sAND acorde='x'",$Det2);
if ($det4=="ssd")
$Det4 = sprintf("%sAND ssd='x'",$Det3);
if ($det5=="sdd")
$Det5 = sprintf("%sAND sdd='x'",$Det4);
if ($det6=="spd")
$Det6 = sprintf("%sAND spd='x'",$Det5);
if ($trg1=="tof")
$Trg1 = sprintf("AND trigger1='TOF'",$Det6);
if ($trg2=="trd")
$Trg2 = sprintf("AND trigger2='TRD'",$Trg1);
if ($trg3=="spd")
$Trg3 = sprintf("AND trigger3='SPD'",$Trg2);
if ($trg4=="acorde")
$Trg4 = sprintf("AND trigger4='ACORDE'",$Trg3);
if ($trg5=="ssd")
$Trg5 = sprintf("AND trigger5='SSD'",$Trg4);
if ($trg6=="sdd")
$Trg6 = sprintf("AND trigger6='SDD'",$Trg5);
$Det = sprintf("%s %s %s %s %s %s %s %s %s %s %s %s",$Det1,$Det2,$Det3,$Det4,$Det5,$Det6,$Trg1,$Trg2,$Trg3,$Trg4,$Trg5,$Trg6);
//echo $Det;
include 'paginazioneSearch.php';
$DB_host = '########';
$DB_user = '#######';
$DB_password = '#######';
$DB_name = '########';
$righe_per_pagina = 5;
$url_base = "search3.php";
$pagine_vicine = 2;
// ----------------------------------------------------------------
// C O N N E S S I O N E A L D A T A B A S E
$link = mysql_connect($DB_host, $DB_user, $DB_password);
if (!$link) {
die ('Non riesco a connettermi: ' . mysql_error());
}
$db_selected = mysql_select_db($DB_name, $link);
if (!$db_selected) {
die ("Errore nella selezione del database: " . mysql_error());
}
// ----------------------------------------------------------------
// C A L C O L O D E L N U M E R O D I P A G I N E
// ricavo il numero totale di record
$query = "SELECT COUNT(*) FROM runs where jolly='Null' $Det";
//$query = "SELECT COUNT(*) FROM runs";
//echo $query;
$result = mysql_query($query);
// record complessivi
$tot_righe = mysql_result($result,0);
// totale pagine
$tot_pagine = ceil($tot_righe / $righe_per_pagina);
// ----------------------------------------------------------------
// P A G I N A C O R R E N T E
$pagina_corrente = isset($_GET['pag']) ? (int)$_GET['pag'] : 1;
// se la pagina corrente è minore di 1
if($pagina_corrente < 1) {
header('location: ' . $url_base);
exit();
}
// se la pagina corrente è maggiore dell'ultima pagina
if($pagina_corrente > $tot_pagine) {
header('location: ' . crea_url($url_base, $tot_pagine));
exit();
}
// ----------------------------------------------------------------
// E S T R A Z I O N E D E I R E C O R D
// calcolo la prima riga da estrarre con la query
$prima_riga = ($pagina_corrente - 1) * $righe_per_pagina;
$query = "SELECT *
FROM runs where jolly='Null' $Det
LIMIT $prima_riga, $righe_per_pagina";
echo $query;
$result = mysql_query($query);
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
$runs_list = array();
while ($row = mysql_fetch_assoc($result)) {
$runs_list[] = $row;
}
// creazione dei link di paginazione
$link_paginazione = paginazione($tot_pagine, $url_base, $pagina_corrente, $pagine_vicine, $Det);
// carico il template HTML
include 'runsIndexSearch.html';
?>
</html>
paginazioneSearch.php
codice:
<?php
function crea_url($url_base, $pagina, $Det) {
if(strpos($url_base,'?') === false) {
return $url_base . '?pag=' . $pagina . '?Det=' . $Det;
} else {
return $url_base . '&pag=' . $pagina;
}
}
function crea_link($url_base, $pagina_corrente, $numero_pagina) {
if($pagina_corrente == $numero_pagina) {
return "[$numero_pagina]";
} else {
return '' . $numero_pagina . '';
}
}
// funzione che crea i link alle pagine dei risultati
function paginazione($tot_pagine, $url_base, $pagina_corrente, $pagine_vicine) {
$link_paginazione = "Pages: ";
// link alla pagina precedente
if($pagina_corrente != 1) {
$link_paginazione .= '« ';
}
// mostriamo sempre il link alla prima pagina
$link_paginazione .= crea_link($url_base, $pagina_corrente, 1);
// se il prossimo link non è alla seconda pagina aggiungo dei puntini ...
// oppure la sola pagina mancante
if($pagina_corrente - $pagine_vicine > 2) {
if($pagina_corrente - $pagine_vicine == 3) {
$link_paginazione .= " " . crea_link($url_base, $pagina_corrente, 2);
} else {
$link_paginazione .= " ... ";
}
}
// creo i link alla pagina corrente ed a quelle ad essa vicine
for($i = $pagina_corrente - $pagine_vicine; $i <= $pagina_corrente + $pagine_vicine; $i++) {
// se tra quelle vicine c'è la prima pagina (già riportata)
if($i < 2) continue;
// se tra quelle vicine c'è l'ultima pagina (che mostrerò con le prossime istruzioni)
if($i > $tot_pagine - 1) continue;
$link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $i);
}
// se il precedente link non era alla penultima pagina aggiungo dei puntini ...
// oppure la sola pagina mancante
if($pagina_corrente + $pagine_vicine < $tot_pagine - 1) {
if($pagina_corrente + $pagine_vicine == $tot_pagine - 2) {
$link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $tot_pagine - 1) . " ";
} else {
$link_paginazione .= " ... ";
}
}
// mostriamo il link all'ultima pagina se questa non coincide con la prima
if($tot_pagine != 1) {
$link_paginazione .= " " . crea_link($url_base, $pagina_corrente, $tot_pagine);
}
// link alla pagina successiva
if($pagina_corrente != $tot_pagine) {
$link_paginazione .= ' »';
}
return $link_paginazione;
}
?>
grazie a tutti quelli che mi aiuteranno!!