sessioni

Pubblicità

alice1

Nuovo Utente
Messaggi
14
Reazioni
0
Punteggio
25
Salve a tutti...è la prima volta che scrivo in questo forum e vorrei proporvi un problema.Sto lavorando ad un DB MySQL in rete. L'utente può compiere una serie di ricerche e vorrei che i risultati fossero visualizzati con un numero di tre per pagina con l'aggiunta di una serie di link (1,2,3....) che fanno riferimento alle pagine con gli altri risultati
Sono riuscita a fare tutto ciò tranne che per quello che riguarda il passaggio dei valori dalla prima pagina con i risultati alle successive.Ho pensato quindi di utilizzare le sessioni...mi sono documentata......ma continuo ad avere un problema sul trasferimento delle variabili Questa è la pagina con la query di ricerca
Codice:
   $numero_record = 3; 
if(!isset($_GET_VARS["inizio"])){ $inizio = 0; }
else
{ $inizio = $_GET_VARS["inizio"]; 
} 
$query_limit="SELECT prodotto FROM nome_tabella
WHERE prodotto LIKE '%$_POST[prodotto]%'
AND categoria LIKE '%$_POST[categoria]% order by Id limit $inizio, $numero_record" or die ("Errore :" . mysql_error()); 
$query = mysql_query($query_limit);
$select="SELECT prodotto FROM nome_tabella
WHERE prodotto LIKE '%$_POST[prodotto]%'AND categoria LIKE '%$_POST[categoria]%'"; 
$query2 = mysql_query($select); 
$numero_record_totali = mysql_numrows($query2); 
$numero_pagine = ceil($numero_record_totali/$numero_record); 
$pagina_corrente = ceil(($inizio/$numero_record) + 1);
$prodotto = "";
$categoria = "";
while($riga=mysql_fetch_array($query)){ 
$prodotto = $riga['prodotto']; 
$categoria = $riga['categoria']; 
echo "<tr>";
      echo "<td>". $prodotto. "</td>";
      echo "<td>" . $categoria. "</td>";
   echo "</tr>";
}
$_SESSION['prodotto'] = $prodotto;
$_SESSION['categoria'] = $categoria;
//per verifica stampo l'array $_SESSION
print_r($_SESSION); 
if($numero_pagine > 1){ 
     for($pagina = 1; $pagina <= $numero_pagine; $pagina++){ 
          if($pagina == $pagina_corrente){ ?>
              <b><?=$pagina?></b> 
         <?php  }else{
echo"<a href=\"fotografie_aeree_verticali1.php?inizio=".(($pagina - 1) * $numero_record)."\">".$pagina."</a>";
}}}
questa è la pagina articoli1
Codice:
[COLOR=black]<?php[/COLOR]
[COLOR=black]session_start();[/COLOR]
[COLOR=black]echo ($_SESSION['prodotto']);[/COLOR]
[COLOR=black]echo ($_SESSION['categoria']);?>[/COLOR]
Ho scritto solo le parti di codice che mi sembravano funzionali alla risoluzione della questione.In questo modo quando passo alla pagina articoli1 visualizzo l'array dell'ultimo dei tre risultati visualizzati cioè quello le cui variabili riesco a trasferire alle pagine successive........chiaramente risolto questo problema poi mi occuperò del trasferimento delle variabili relative alla suddivisione delle pagine con gli altri risultati
 
Ho fatto un errore a postare una parte di codice, quella giusta è
Codice:
if($numero_pagine > 1){ 
     for($pagina = 1; $pagina <= $numero_pagine; $pagina++){ 
          if($pagina == $pagina_corrente){ ?>
              <b><?=$pagina?></b> 
         <?php  }else{
echo"<a href=\"articoli1.php?inizio=".(($pagina - 1) * $numero_record)."\">".$pagina."</a>";
}}}
 
Il problema è che, avendo suddiviso la visualizzazione dei risultati della ricerca su più pagine raggiungibili dai link 1,2,3..., non riesco a trasferire i valori della query alle pagine successive la n. 1 .....in questa i records corrispondono ai criteri di riverca, in tutte le altre mi stampa i valori dell'ultimo record visualizzato nella pagina 1....non è molto semplice da spiegare, ma spero di essere stata chiara.
 
prova questo (non uso articoli1):

Codice:
<?

$numero_record = 3;
if(!isset($_GET["inizio"])) {
$inizio = 0;
}
else
{
$inizio = $_GET["inizio"];
}

$prodotto = (isset($_POST["prodotto"]) ? $_POST["prodotto"] : base64_decode($_GET["prodotto"]));
$categoria = (isset($_POST["categoria"]) ? $_POST["categoria"] : base64_decode($_GET["categoria"]);

$query_limit="SELECT prodotto FROM nome_tabella
                    WHERE prodotto LIKE '%".addslashes($prodotto)."%'
                   AND categoria LIKE '%".addslashes($categoria)."%'
                  order by Id limit $inizio, $numero_record";

$query = mysql_query($query_limit) or die(mysql_error());

$select="SELECT count(*) FROM nome_tabella
              WHERE prodotto LIKE '%".addslashes($prodotto)."%'
              AND categoria LIKE '%".$categoria)."%'";

$query2 = mysql_query($select);
$numero_record_totali = mysql_fetch_row($query2);
$numero_record_totali = $numero_record_totali[0];

$numero_pagine = ceil($numero_record_totali/$numero_record);
$pagina_corrente = ceil(($inizio/$numero_record) + 1);

$this_prodotto = "";
$this_categoria = "";

while($riga=mysql_fetch_array($query)){
$this_prodotto = $riga['prodotto'];
$this_categoria = $riga['categoria'];
  echo "<tr>";
  echo "<td>". $this_prodotto. "</td>";
  echo "<td>" . $this_categoria. "</td>";
  echo "</tr>";
}

if($numero_pagine > 1){
    for($pagina = 1; $pagina <= $numero_pagine; $pagina++){
        if($pagina == $pagina_corrente){ ?>
            <b><? echo $pagina;?></b>
        <?php } else {
            echo"<a href=\"fotografie_aeree_verticali1.php?inizio=".(($pagina - 1) * $numero_record)."&amp;categoria=".base64_encode(categoria)."&amp;prodotto=".base64_encode(prodotto)."\">".$pagina."</a>";
                            }
    }
}
 
Ho modificato il codice. Non usando più la pagina articoli1.php nella linea

Codice:
echo"<a href=\"articoli1.php?inizio=".(($pagina - 1) * $numero_record)."&amp;categoria=".base64_encode(categoria)."&amp;prodotto=".base64_encode(prodotto)."\">".$pagina."</a>";

l'ho sostituita con il nome della pagina che contiene il codice stesso
In questo modo mi stampa i primi 3 risultati della query in una pagina, e i link alle altre pagine (1,2,3,...), quando clicco su questi mi compaiono delle pagine senza valori....non so se può servire ma ti posto l'indirizzo che compare nel browser (es. pagina n.2)

Codice:
http://www......it/pagine/......php?inizio=3&prodotto=QW5ub1JpcHJlc2E=&categoria=U2Vuc29yZQ=
 
ho trovato un mio errore di battitura
Codice:
$categoria = (isset($_POST["categoria"]) ? $_POST["categoria"] : base64_decode($_GET["categoria"]);
deve diventare
Codice:
 $categoria = (isset($_POST["categoria"]) ? $_POST["categoria"] : base64_decode($_GET["categoria"]));
puoi controllare ad inizio pagina cosa ti viene inviato con
Codice:
echo "POST: ";print_r($_POST); echo "GET: ";print_r($_GET);
in modo da vedere se effettivamente qualcosa arriva.

altra correzione:
Codice:
 $query_limit="SELECT prodotto FROM nome_tabella
                    WHERE prodotto LIKE '%".addslashes($prodotto)."%'
                   AND categoria LIKE '%".addslashes($categoria)."%'
                  order by Id limit $inizio, $numero_record";
deve diventare
Codice:
 $query_limit="SELECT prodotto,categoria FROM nome_tabella
                    WHERE prodotto LIKE '%".addslashes($prodotto)."%'
                   AND categoria LIKE '%".addslashes($categoria)."%
                  order by Id limit $inizio, $numero_record";
 
Ho modificato tutto...inserendo la linea di codice che mi hai detto all'inizio della pagina mi stampa
Codice:
POST: Array ( [prodotto] => [categoria] => ) GET: Array ( )
mentre nelle altre pagine mi stampa
Codice:
POST: Array ( ) GET: Array ( [inizio] => 3 [prodotto] => QW5ub1JpcHJlc2E= [categoria] => U2Vuc29yZQ== )
Comtinua però a non visualizzarmi i valori.
Mi è venuto un dubbio....è giusto che nella parte di codice
Codice:
[LEFT]echo"<a href=\"articoli1.php?inizio=".(($pagina - 1) * $numero_record)."&amp;categoria=".base64_encode(categoria)."&amp;prodotto=".base64_encode(prodotto)."\">".$pagina."</a>";[/LEFT]
al posto di articoli1.php inserisca il nome della pagina che contiene il codice su cui stiamo lavorando (articoli.php)? Altrimenti non saprei a cos'altro fare il collegamento
 
certo che è giusto far puntare i link alla pagina stessa.

Per arrivare alla "prima chiamata" alla pagina passi da una pagina con un form per inserire i parametri base della ricerca immagino.

la pagina creata quando ti segnala la presenza in $_POST di prodotto e categoria, entrambi vuoti, è quella in cui dovresti vedere i primi risultati della ricerca? se la risposta è si pare che ci sia qualche problema ...
 
Si, è proprio così....dal form nel quale vengono inseriti i parametri base della ricerca si va alla prima pagina che mi visualizza perfettamente i primi 3 risultati, è invece nelle pagine successive che non mi stampa i records....non so prorpio dove cercare l'errore, mi sembra (almeno logicamente) di aver proceduto bene ma non funziona...e poi non capisco neanche il codice che mi restituisce con il POST
Codice:
[LEFT]POST: Array ( ) GET: Array ( [inizio] => 3 [prodotto] => QW5ub1JpcHJlc2E= [categoria] => U2Vuc29yZQ== ) [/LEFT]
Che significano quei valori attribuiti a prodotto e categoria?
 
quella è la codifica base64 del valore di "prodotto" e "categoria" inseriti nel form, in tal modo puoi passarli senza doverti preoccupare di caratteri strani che potrebbe incasinare la richiesta di GET per la pagina successiva.

cmq ho trovato un altro errore, mi son dimenticato un pezzo (no comment).

trasforma
Codice:
echo"<a href=\"articoli1.php?inizio=".(($pagina - 1) * $numero_record)."&amp;categoria=".base64_encode(categoria)."&amp;prodotto=".base64_encode(prodotto)."\">".$pagina."</a>";
in
Codice:
echo"<a href=\"articoli1.php?inizio=".(($pagina - 1) * $numero_record)."&amp;categoria=".base64_encode($categoria)."&amp;prodotto=".base64_encode($prodotto)."\">".$pagina."</a>";
 
Pubblicità
Pubblicità
Indietro
Top