Salve a tutti, espongo il mio problema, ho scarabocchiato un codice ricorsivo che mi passa un database, mi visualizza il contenuto delle sue tabelle e me lo organizza limitandomi la query con 45 risultati per pagina, quando si preme il link per la pagina due la query per il database viene modificata ovviamente, il fatto è questo:
Esempio, ricerco il nome e inserisco: a
Ebbene il primo output è giusto, mi appare la tabella corretta e tutto quanto, con i link giù da basso, premo la pagina 2 e ancora la query sembra giusta, premo la pagina 3 e la query mi va in errore, ma perchè questo ?
In sostanza faccio così: la query la costruisco la prima volta prelevando tutti i post e li metto in una variabile chiamata $query, questa variabile query la salvo nella variabile di sessione $_SESSION['query']=$query;
poi alla query aggiungo la parte relativa al ORDER e LIMIT cambiata di volta in volta, se semplificando questa parte la chiamiamo A, al primo passaggio quindi di prelievo valori in POST mi trovo $query+A; Poi clicco sulla pagina 2 e mi trovo $query + B poi clicco sulla pagina 3 oppure X e mi trovo con $query + B + C quando dovrebbe esserci solo $query + C e se vado avanti con le pagine questa sessione mi si incrementa sempre di più ovviamente dandomi errore, dove sbaglio ??? Posto il codice anche se so che sarà un po' dura capirla ...
Codice PHP:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Visualizzazione Ricerca Estesa Abbonati</title>
<?php
// dichiarazione stile css usato
echo "<SCRIPT language=\"JavaScript\" SRC=\"tabs.js\"></SCRIPT>";
echo "<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\" />";
?>
</head>
<body>
<?php
require_once ("../common_db.inc.php");
require_once ("../funzioni.inc.php");
// effettuo la prima connessione al database
$link_id = db_connect();
// error_reporting(0); // bypasso i messaggi di warning che mi puo creare il server /////////////////////
// controllo se sono loggato correttamente o meno tramine la funzione CheckSession
// e se la mia sessione è ancora attiva.
// recupero la sessione corrente
$idsessattiva=$_GET['s'];
$page=(int)$_GET['page'];
$iduser=(int)$_GET['u'];
$ricerca=(int)$_GET['r']; // variabile che dovrebbe identificare il campo ricerca
$errore =0;
//$query ="";
// controllo che la sessione sia corretta e che nel ciclo vi entri solo un utente e non un amministratore
if (CheckSession() && (controlloadmin ($idsessattiva) >= 0)) {
// includo l'interfaccia utente
include_once ("menuadmin.inc.php");
include_once ("../ricerca.inc.php");
// esegui i controlli sui parametri passati in post, se sono tutti corretti passa alla visualizzazione dei risultati chiamando una funzione specifica.
if ((!empty($_POST['categoriaabbonato'])) || (!empty($_POST['sezioneabbonato'])) || (!empty($_POST['nomeabbonato'])) || (!empty($_POST['cognomeabbonato'])) || (!empty($_POST['abbonatoindirizzo1'])) || (!empty($_POST['abbonatocap'])) || (!empty($_POST['abbonatocitta'])) || (!empty($_POST['provinceabbonato'])) || (!empty($_POST['nazioneabbonato'])) || (!empty($_POST['abbonatoemail'])) || (!empty($_POST['abbonatotelefono']))){
$query = "SELECT idan_abbonati, an_categoria_idan_categoria,an_sezione_idan_sezione,an_utenti_idan_utenti,an_nazioni_idnazioni,an_province_an_regioni_idan_regioni,an_province_idan_province,nome,cognome,indirizzo1,indirizzo2,cap,citta,telefono,email,note FROM an_abbonati WHERE ";
$query2 ="SELECT COUNT(*) FROM an_abbonati WHERE ";
$modificato =0;
if (!empty($_POST['categoriaabbonato'])){
$riccategoriaabbonato = $_POST['categoriaabbonato'];
if ($riccategoriaabbonato !== ""){
$query .= " an_categoria_idan_categoria = \"$riccategoriaabbonato\"";
$query2 .= " an_categoria_idan_categoria = \"$riccategoriaabbonato\"";
$modificato = 1;
}
}
if (!empty($_POST['sezioneabbonato'])){
$ricsezioneabbonato = $_POST['sezioneabbonato'];
if ($ricsezioneabbonato !== ""){
if ($modificato == 1){
$query .= " AND an_sezione_idan_sezione = \"$ricsezioneabbonato\"";
$query2 .= " AND an_sezione_idan_sezione = \"$ricsezioneabbonato\"";
}else{
$query .= " an_sezione_idan_sezione = \"$ricsezioneabbonato\"";
$query2 .= " an_sezione_idan_sezione = \"$ricsezioneabbonato\"";
$modificato = 1;
}
}
}
if (!empty($_POST['nomeabbonato'])){
$ricnomeabbonato = $_POST['nomeabbonato'];
$ricnomeabbonato = controllostringa ($ricnomeabbonato,"PAROLE");
if ($ricnomeabbonato !== ""){
if ($modificato == 1){
$query .= " AND nome LIKE \"$ricnomeabbonato%\"";
$query2 .= " AND nome LIKE \"$ricnomeabbonato%\"";
}else{
$query .= " nome LIKE \"$ricnomeabbonato%\"";
$query2 .= " nome LIKE \"$ricnomeabbonato%\"";
$modificato = 1;
}
}else{
$errore = 1;
}
}
if (!empty($_POST['cognomeabbonato'])){
$riccognomeabbonato = $_POST['cognomeabbonato'];
$riccognomeabbonato = controllostringa ($riccognomeabbonato,"PAROLE");
if ($riccognomeabbonato !== ""){
if ($modificato == 1){
$query .= " AND cognome LIKE \"$riccognomeabbonato%\"";
$query2 .= " AND cognome LIKE \"$riccognomeabbonato%\"";
}else{
$query .= " cognome LIKE \"$riccognomeabbonato%\"";
$query2 .= " cognome LIKE \"$riccognomeabbonato%\"";
$modificato = 1;
}
}else{
$errore = 1;
}
}
if (!empty($_POST['abbonatoindirizzo1'])){
$ricindirizzo1abbonato = $_POST['abbonatoindirizzo1'];
$ricindirizzo1abbonato = controllostringa ($ricindirizzo1abbonato,"TEXT");
if ($ricindirizzo1abbonato !== ""){
if ($modificato == 1){
$query .= " AND indirizzo1 LIKE \"%$ricindirizzo1abbonato%\"";
$query2 .= " AND indirizzo1 LIKE \"%$ricindirizzo1abbonato%\"";
}else{
$query .= " indirizzo1 LIKE \"%$ricindirizzo1abbonato%\"";
$query2 .= " indirizzo1 LIKE \"%$ricindirizzo1abbonato%\"";
$modificato = 1;
}
}else{
$errore = 1;
}
}
if (!empty($_POST['abbonatocap'])){ // minimo ricercabile è di 3 caratteri
$riccapabbonato = $_POST['abbonatocap'];
$riccapabbonato = controllostringa ($riccapabbonato,"NUMERI");
if ($riccapabbonato !== ""){
if ($modificato == 1){
$query .= " AND cap LIKE \"$riccapabbonato%\"";
$query2 .= " AND cap LIKE \"$riccapabbonato%\"";
}else{
$query .= " cap LIKE \"$riccapabbonato%\"";
$query2 .= " cap LIKE \"$riccapabbonato%\"";
$modificato = 1;
}
}else{
$errore = 1;
}
}
if (!empty($_POST['abbonatocitta'])){
$riccittaabbonato = $_POST['abbonatocitta'];
$riccittaabbonato = controllostringa ($riccittaabbonato,"PAROLE");
if ($riccittaabbonato !== ""){
if ($modificato == 1){
$query .= " AND citta LIKE \"$riccittaabbonato%\"";
$query2 .= " AND citta LIKE \"$riccittaabbonato%\"";
}else{
$query .= " citta LIKE \"$riccittaabbonato%\"";
$query2 .= " citta LIKE \"$riccittaabbonato%\"";
$modificato = 1;
}
}else{
$errore = 1;
}
}
FINE PARTE 1 --------------------------------