Problema con sessioni

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...ho letto gli articoli consigliati sui post di questo forum...ma continuo ad avere lo stesso problema: non riesco a visualizzare le variabili registrate

inviato 10 anni fa
manu
manu
1
X 0 X

Guarda, di solito se setti una variabile di sessione e non viene visualizzata in una seconda pagina è perchè manca il session_start(); ( http://it.php.net/manual/en/function.session-start.php )

questo dev'essere messo come prima istruzione in tutte le pagine in cui intendi utilizzare le sessioni..

Nel caso tu avessi fatto così, ma non funzionasse uguale,

prova a dare + info e magari postare un po' di codice, così viene anche + facile individuare il problema.

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
modificato 10 anni fa
X 0 X

Questa è la pagina con la query di ricerca

<?php
session_start();
?>

$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);
while($riga=mysql_fetch_array($query))
{
<?php echo "<tr>";
echo "<td>". $riga['prodotto'] . "</td>";
echo "<td>" . $riga['categoria'] . "</td>";
echo "</tr>";?>
} 
$_SESSION['prodotto'] = $riga['prodotto'];
$_SESSION['categoria'] = $riga['categoria'];

 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>";

?>

questa è la pagina articoli1<?php session_start(); echo ($_SESSION['prodotto']); echo ($_SESSION['categoria']);?>

Ho scritto solo le parti di codice che mi sembravano funzionali alla risoluzione della questione.

In questo modo quando passo alla pagina articoli1 non visualizzo niente.......chiaramente risolto questo problema poi mi occuperò del trasferimento delle variabili relative alla suddivisione delle pagine con gli altri risultati

risposto 10 anni fa
manu
manu
1
X 0 X

prova a modificare così:

<?php

session_start();

?>

<?php

$numero_record = 3;

if(!isset($_GET["inizio"])){

    $inizio = 0;

}else{

    $inizio = $_GET["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";

$query = mysql_query($query_limit) or die ("Errore :" . mysql_error());

$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);

while($riga=mysql_fetch_array($query))

{

   echo "<tr>";

      echo "<td>". $riga['prodotto'] . "</td>";

      echo "<td>" . $riga['categoria'] . "</td>";

   echo "</tr>";

}

$_SESSION['prodotto'] = $riga['prodotto'];

$_SESSION['categoria'] = $riga['categoria'];

//stampa i valori delle sessioni per vedere se sono corretti

echo "controllo valori in sessione: prodotto=".$_SESSION['prodotto']." categoria=".$_SESSION['categoria']."<br />";

 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>";

          }

?>

risposto 10 anni fa
Lore
Lore
1
modificato 10 anni fa
X 0 X

Ho provato e questo è il risultato.

controllo valori in sessione: prodotto= categoria=
risposto 10 anni fa
manu
manu
1
X 0 X

se al posto che stampare le sessioni, fai:

echo "controllo valori in sessione: prodotto=".$riga['prodotto']." categoria=".$riga['categoria']."<br />";

ottieni risultati?

Nel caso anche questa echo ti faccia visualizzare

prodotto=(niente) categoria=(niente)

vuol dire che è sbagliata la query con cui estrai i dati dal DB e se fosse così, stampa a video la query e provala direttamente in mysql, così vedi dov'è l'errore.

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Il risultato è lo stesso....ma io riesco comunque a visualizzare i record corrispondenti ai criteri di ricerca grazie alla parte di codice while($riga=mysql_fetch_array($query)) {    echo "<tr>";       echo "<td>". $riga['prodotto'] . "</td>";       echo "<td>" . $riga['categoria'] . "</td>";    echo "</tr>"; }

della stessa pagina....quindi in questo punto la query sembra funzionare

risposto 10 anni fa
manu
manu
1
X 0 X

prova così:

$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;

//stampo l'array $_SESSION
print_r($_SESSION);
risposto 10 anni fa
Lore
Lore
1
X 0 X

Mi stampa l'array.....l'unico problema è che quando clicco alle pagine successive (link 1,2,3..)quindi articolo1.php) si trasferiscono le variabili dell'ultimo record visualizzato nella precedente.

Probabilmente devo trasferire anche le variabili relative alla paginazione...ma come?

risposto 10 anni fa
manu
manu
1
X 0 X

Dimenticavo.....l'array che mi stampa è l'ultimo dei tre risultati visualizzati e quello le cui variabili riesco a trasferire alle pagine successive.

risposto 10 anni fa
manu
manu
1
X 0 X

$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;

}

Nella pagina articolo1.php fai:

print_r($_SESSION);

ti stamperà l'array prodotto con dentro tutti i prodotti e l'array categoria con dentro le categorie...

poi lì visualizzerai, a seconda della pagina a partire da un indice fino ad un'altro, ad esempio:

Ad esempio se devi visualizzare 10 record per pagina:

for($i=$start; $i<($start+10); $i++)

{

  echo $_SESSION['prodotto'][$i]." - ".$_SESSION['categoria'][$i]."<br />";

}

una volta fatto questo sta a te a vedere come fare, il mio era solo un esempio...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

Grazie

risposto 10 anni fa
manu
manu
1
X 0 X
Grazie

di niente  O0

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda