Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410

    Valore variabile di sessione

    Ciao a tutti ho una variabile di sessione che al momento in cui clicco su un link (che punta a una pagina interna al sito) cambia di valore inspiegabilmente...mi sto scervellando da 3 giorni non capisco il motivo

    vi posto un po di codice
    ho il seguente menu che serve per scorrere le pagine di annunci, ad esempio se io sono alla pagina 2 e clicco su "indietro" il valore di $_SESSION['pagina'] diventa 3 !!!! perchè????


    codice:
    
    if ($_SESSION['pagina'] !=1)
    {
    
    echo "<td align='center' width='120'><<-Prima</td>";
    echo "<td align='center' width='120'><-Indietro</td>";
    }
    else
    {
    echo "<td align='center' width='120'><font size='2'color='grey'><<-Prima</font></td>";
    echo "<td align='center' width='120'><font size='2'color='grey'><-Indietro</font></td>";
    }
    
    
    
    for ($c=0;$c<$i;$c++)
    	{
    
    	if ($_SESSION['pagina']==$lista_pagine[$c])echo "<td width='30' align='center' >[".$lista_pagine[$c]."] </td>";
    	else echo "<td align='center' width='30'>".$lista_pagine[$c]."</td>";
    
    	
    	}
    if ($_SESSION['pagina'] != $num_pagine)	
    {
    echo "<td align='center' width='120'>Avanti-></td>";	
    echo "<td align='center' width='120'>Ultima->></td>";	
    }
    else 
    {
    echo "<td align='center' width='120'><font size='2'color='grey'>Avanti-></font></td>";
    echo "<td align='center' width='120'><font size='2'color='grey'>Ultima->></font></td>";
    }
    aggiungo che il valore diventa 3 subito dopo il session_start();

  2. #2
    Dov'e` session_start()? E dove dichiari $_SESSION['pagina']? Posta tutto il codice...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410
    è un po lungo non l ho postato per quello, session_start() l,ho effettuo tramite la funzione testata() che è la prima che carica ed è all'interno del file crea_menu.php
    categoria.php:
    codice:
    <html>
    <head>
    
    <title>Annunci case ad........</title>
    
    </head>
    <body>
    <link rel="stylesheet" type="text/css" href="stileprova.css">
    
    <?php 
    
    require ("mysql.php");  
    require ("crea_menu.php");
    echo "
     <font color='red'>ses[pag]:".$_SESSION['pagina']."
    </font>";
    testata();
    echo "
     <font color='red'>ses[pag]:".$_SESSION['pagina']."
    </font>";
    echo"<table border='0' width=80% align='center'><tr height='16'><td colspan='3' background='/Immagini/bordo.jpg'></td></tr><tr><td rowspan='2' >";
    pubb300x250();
    echo"</td><td colspan='2'valign='top' align='right'>";
    pubb728x90 ();
    echo"</td></tr><tr><td>[img]/Immagini/under.jpg[/img]</td><td valign='center'><font size='6'>Sito in costruzione</font>
    Per informazioni scrivere a info@iglesiascase.it</td></tr><tr height='16'><td colspan='3' background='/Immagini/bordo.jpg'></td></tr></table>";
    
    
    
    //if (isset ($_POST['home'])) $_SESSION['categoria']=NULL;
    //if (isset ($_POST['sel_cat']))	$_SESSION['categoria']=$_POST['sel_cat'];
    if (isset ($_GET['categ'])) $_SESSION['categoria']=$_GET['categ'];
    echo $_SESSION['categoria'];
    crea_menu_testata();
    
    crea_menu_categorie();
    
    echo "
    
    ";
    
    $foto=array();
    $rec=array();
    $cont=0;
    
    
    if (isset ($_SESSION['categoria']))
    	{
    	$cat=$_SESSION['categoria'];
    	$ricevuta = mysql_query("SELECT id,foto1_thumb FROM annunci WHERE categoria='$cat'");
    	}
    else {$ricevuta = mysql_query("SELECT id,foto1_thumb FROM annunci ");$cat=NULL;}
    
    while ($row = mysql_fetch_assoc($ricevuta)) 
    	{
    	$rec[$cont]=$row['id'];
    	$foto[$cont]=$row['foto1_thumb'];
    	$cont++;
    	}
    echo "<table width=80% align='center' border='0'>";
    echo "<tr><td > Sono presenti $cont annunci.&nbsp";
    if ($cat!=NULL)	echo "Categoria: $cat.&nbsp";
    
    
    	
    
    $num_pagine= ((int)(($cont-1)/10))+1;
    capovolgi_array($rec);
    capovolgi_array($foto);
    
    
    
    
    if (isset($_GET['inviapag'])) 
    	{
    	if (($_GET['inviapag']=='indietro')||($_GET['inviapag']=='avanti')||($_GET['inviapag']=='prima')||($_GET['inviapag']=='ultima'))
    		{
    		echo "
     ses[pag]:".$_SESSION['pagina']."
    ";
    		if ($_GET['inviapag']=='indietro') $_SESSION['pagina']--;
    		if ($_GET['inviapag']=='avanti') $_SESSION['pagina']++;
    		if ($_GET['inviapag']=='prima') $_SESSION['pagina']=1;
    		if ($_GET['inviapag']=='ultima') $_SESSION['pagina']=$num_pagine;
    		echo "
     ses[pag]:".$_SESSION['pagina']."
    ";
    		}
    	else {
    		
    		$_SESSION['pagina']=$_GET['inviapag'];
    		
    		}
    	 }
    
    if (!isset($_GET['inviapag']))	$_SESSION['pagina']=1;
    	
    
    echo "Sei alla pagina ".$_SESSION['pagina']." di $num_pagine</td></tr></table>
    
    ";
    echo "<table border='0' width='80%' align='center'>";
    if ($_SESSION['pagina']<$num_pagine)
    {
    
    for ($c=0;$c<10;$c++)
    {
    
    if (isset($_POST['invia']))
    	{
    	$_SESSION['record']= ($_POST['invia']);
    	header("Location: /annuncio_selezionato.php"); 
    	}
    
    if (isset($_POST['invia2']))
    	{
    	$_SESSION['record']= ($_POST['rec']);
    	header("Location: /annuncio_selezionato.php"); 
    	}
    
    echo "<form method='post'>";
    
    $pagina=$_SESSION['pagina'];
    
    $r= (($pagina-1)*10)+$c;
    
    anteprima_annuncio($rec[$r],'annunci');
    echo "</form>";
    
    }
    
    }
    
    else
    {
    $resto=$cont%10;
    if (($resto==0)&&($cont != 0))
    {
    for ($c=0;$c<10;$c++)
    	{
    
    	if (isset($_POST['invia']))
    		{
    		$_SESSION['record']= ($_POST['invia']);
    		header("Location: /annuncio_selezionato.php"); 
    		}
    
    	if (isset($_POST['invia2']))
    		{
    		$_SESSION['record']= ($_POST['rec']);
    		header("Location: /annuncio_selezionato.php"); 
    		}
    
    	echo "<form method='post'>";
    
    	$pagina=$_SESSION['pagina'];
    
    	$r= (($pagina-1)*10)+$c;
    
    	$annuncio = mysql_query("SELECT * FROM annunci WHERE id=".$rec[$r],$db);
    	$foto=mysql_result($annuncio,0,'foto1_thumb');
    	$id=mysql_result($annuncio,0,'id');
    
    	echo "<tr><td width='150'> <input type='submit' class='submit_image' style='background-image: url($foto); width: 128px; height: 96px;' name='invia' value='$id'></td>";
    
    	echo "<td><input type='hidden' name='rec' value='$id'> <button type='submit' class='nobutton' name='invia2'>". mysql_result($annuncio,0,'titolo')."</button>".mysql_result($annuncio,0,'prezzo')." € </td></tr>";
    	echo "<tr height='10'><td colspan='2'><hr></td></tr>";
    	echo "</form>";
    	}
    }
    elseif ($cont!=0)
    {
    
    for ($c=0;$c<$resto;$c++)
    {
    
    if (isset($_POST['invia']))
    	{
    	$_SESSION['record']= ($_POST['invia']);
    	header("Location: /annuncio_selezionato.php"); 
    	}
    
    if (isset($_POST['invia2']))
    	{
    	$_SESSION['record']= ($_POST['rec']);
    	header("Location: /annuncio_selezionato.php"); 
    	}
    
    echo "<form method='post'>";
    
    $r= (($_SESSION['pagina']-1)*10)+$c;
    $annuncio = mysql_query("SELECT * FROM annunci WHERE id=".$rec[$r],$db);
    $foto=mysql_result($annuncio,0,'foto1_thumb');
    $id=mysql_result($annuncio,0,'id');
    
    echo "<tr><td width='150'> <input type ='submit' class='submit_image' style='background-image: url($foto); width: 128px; height: 96px;' name='invia' value='$id'></td>";
    
    echo "<td><input type='hidden' name='rec' value='$id'> <button type='submit' class='nobutton' name='invia2'>". mysql_result($annuncio,0,'titolo')."</button>".mysql_result($annuncio,0,'prezzo')." € </td></tr>";
    echo "<tr height='10'><td colspan='2'><hr></td></tr>";
    echo "</form>";
    
    }
    }
    }
    
    echo "</table>";
    $larghezza= ($num_pagine*30)+480;
    echo "<table width=$larghezza background='/Immagini/back_sfum2.jpg' align='center' border='0'>";
    
    echo"<tr><td colspan='14' align='center'>Pagina</td></tr><tr>";
    
    $lista_pagine=array();
    $inizio=$_SESSION['pagina']-4;
    $fine=$_SESSION['pagina']+5;
    
    while ($inizio<=0)
    	{
    	$inizio++;
    	$fine++;
    	}
    
    while ($fine>$num_pagine)
    	if ($inizio >1)
    		{
    		$fine--;
    		$inizio--;
    		}
    	else
    		$fine--;
    
    $punt=$inizio;
    $cont=0;
    $i=0;
    while ($cont<10)
    	{
    	if ($punt<= $num_pagine)
    		{
    		$lista_pagine[$cont]=$punt;
    		$punt++;
    		$i++;
    		}
    	else	$lista_pagine[$cont]=NULL;
    	$cont++;
    
    
    }
    
    
    echo "<form action=".$_SERVER['PHP_SELF']." method='get'>";
    
    if ($_SESSION['pagina'] !=1)
    {
    
    echo "<td align='center' width='120'><<-Prima</td>";
    echo "<td align='center' width='120'><-Indietro</td>";
    }
    else
    {
    echo "<td align='center' width='120'><font size='2'color='grey'><<-Prima</font></td>";
    echo "<td align='center' width='120'><font size='2'color='grey'><-Indietro</font></td>";
    }
    
    
    
    for ($c=0;$c<$i;$c++)
    	{
    
    	if ($_SESSION['pagina']==$lista_pagine[$c])echo "<td width='30' align='center' >[".$lista_pagine[$c]."] </td>";
    	else echo "<td align='center' width='30'>".$lista_pagine[$c]."</td>";
    
    	
    	}
    if ($_SESSION['pagina'] != $num_pagine)	
    {
    echo "<td align='center' width='120'>Avanti-></td>";	
    echo "<td align='center' width='120'>Ultima->></td>";	
    }
    else 
    {
    echo "<td align='center' width='120'><font size='2'color='grey'>Avanti-></font></td>";
    echo "<td align='center' width='120'><font size='2'color='grey'>Ultima->></font></td>";
    }
    
    
    echo "</form></tr>";
    
    echo "</table>
    ";
    
    menu_bottom();
    spazio_bottom();
    
    ?>
    
    </body>
    </html>

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410
    questa è la funzione testata()


    codice:
    function testata()
    	{session_start();
    	echo "
     <font color='red'>ses[pag]:".$_SESSION['pagina']."
    </font>";
    $_SESSION['url_home']="index.php";
    $_SESSION['url_citta']="http://www.google.it";
    $_SESSION['url_login']="/login.php#testa";
    $_SESSION['url_chisiamo']="chisiamo.php";
    $_SESSION['url_contatti']="contatti.php";
    $_SESSION['url_condizioni']="condizioni.php";
    $_SESSION['url_privacy']="privacy.php";
    $_SESSION['url_pubblicita']="pubblicita.php";
    $_SESSION['url_suggerimenti']="suggerimenti.php";
    
    	
    	
    	require ("mysql.php"); 
    	echo "<table width=100% class='testata'>";
    	echo "<tr height='40'><td width='10'></td><td><font size='4' color='white'>IGLESIAS<font color='red'>CASE</font></td>";
    	
    	if (!isset ($_POST['submit'])) 
    		{
    		$_SESSION['usertrovato']=0;
    		$_SESSION['passtrovata']=0;
    		$errore=0;
    		}
    		
    	else
    	{
    	$tabella = mysql_query("SELECT * FROM lista_utenti ",$db);
    	
    	while  ($utenti= mysql_fetch_row ($tabella)) 
    		{
    		if ( $_POST['username'] == $utenti[1])
    			{
    			$_SESSION['usertrovato']=1;			
    			if ( md5($_POST['password'])== ($utenti[2]))
    				{
    				$_SESSION['passtrovata']=1;
    				$_SESSION['id_utente']=$utenti[0];
    				$_SESSION['username']=$_POST['username'];
    				$_SESSION['login']=1;
    				$tabella2 = mysql_query("SELECT * FROM lista_admin ",$db);
    				while  ($utenti2= mysql_fetch_assoc ($tabella2))
    					{
    					if ($utenti2['username']== $utenti[1])
    						{
    						
    						$_SESSION['admin']=$utenti2['username'];
    						break;
    						}
    					}
    
    				}
    			else 	
    				{
    				$_SESSION['passtrovata']=0;
    				$_SESSION['id_utente']="";
    				}
    			break;
    			}
    		else 
    			{
    			$_SESSION['usertrovato']=0;
    			$_SESSION['id_utente']="";
    			}
    		}
    
    	}	
    	
    
    	if (isset($_POST['submit']))
    		{
    
    		if (($_SESSION['usertrovato'] ==1)&&($_SESSION['passtrovata']==1))	
    			{
    			if (isset($_SESSION['admin']))
    				{//echo "<font color='red'>".$_SESSION['admin']."</font>";
    				header("Location: http://www.iglesiascase.it/admin.php");
    				exit;
    				}
    			else
    				{
    				header("Location: /login_effettuato.php");
    				exit;
    				}
    			}
    		else	$errore=1;
    	}
    
    	
    	if (isset($_SESSION['login']) &&($_SESSION['login']==1))
    		{	
    		echo "<td>Benvenuto ";
    		if (isset($_SESSION['admin'])) echo "amministratore ";
    		echo "<font color='red'>".$_SESSION['username']."</font> | ";
    		if (isset($_SESSION['admin']))	echo "<font color='white'>Pannello di controllo Admin  | ";
    		echo "<font color='white'>Pannello di controllo  |  <font color='red'> Logout</td>";
    		}
    	else 
    		{
    		echo "<td><form method='post' action='".$_SERVER['PHP_SELF']."'> Nome utente <input type='text' name='username' maxlength='10' size='10'> Password<input type='password' maxlength='10' size='10' name='password'> ";
    		echo "<input type='submit' name='submit' value='Login'>";
    		if ($errore==1) echo "<font color='red' size='2'> Nome utente o password errati</font>";
    		echo "</td><td ><font color='white'>Registrati</td>";
    		}
    
    	echo "<td><font color='red'> Pubblicità</td>";
    	echo "</form></td></tr></table>";
    	}

  5. #5
    Perdonami ma... come fai a capirci qualcosa?
    Il codice e` orrendo. Non mi meraviglio che ti stai scervellando da 3 giorni sulla paginazione. Scusa se sono brutale ma il tuo codice e` tutto da riscrivere.
    Mi permetto di darti qualche consiglio per evitare di perdere giornate intere su problemi relativamente semplici:

    [list=1][*]Modularizza il tuo codice, cosi` da incapsulare le funzionalita` comuni a tutto il sito (classi e funzioni servono a questo);[*]Non usare le funzioni mysql_*, sono vecchie ormai. Usa la classe PDO piuttosto;[*]Evita le tabelle HTML dove possibile;[*]Cerca di separare la logica dalla presentazione;[*]Non usare il tag <font> per l'amor di Dio, l'hanno deprecato 15 anni fa;[*]Per debuggare usa var_dump() o print_r().[/list=1]

    Non mi viene in mente altro, ma intanto comincia a lavorare su queste cose... tieni ordinato il tuo codice e vedrai che sara` molto piu` facile capire perche` non funzionano determinate cose.

    Ciao e scusa di nuovo per la franchezza

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410
    non scusarti mi rendo conto che il codice non è per niente elegante ne all'ultimo grido il fatto è che ho iniziato da pochi mesi da zero ed ora sono a un punto che mi manca solo questo problema da risolvere e poi il sito è finito, poi avevo già stabilito che avrei dato una ripulita al codice in primis studiando meglio i css.
    cmq io capisco bene tutto ciò che c'è perchè ci sto lavorando e non riesco proprio a capire perchè $_SESSION['pagina'] cambi valore...
    dato che il mio codice per te è un labirinto ti spiego cosa succede: quando io clicco sui link del menù che trovi per ultimo dove ci sono le pagine, cè prima, indietro, poi un elenco di numeri per saltare direttamente ad un pagina specifica, poi avanti e ultima per andare all ultima pagina. se clicco su avanti e ultima va tutto ok...se premo su indietro invece ricarica giustamente la pagina seguendo il link il quale richiama la funzione testata(), ecco facendo il debug qui $_SESSION['pagina'] risulta NULL prima di session_start() e successivamente ha valore 3 invece di mantenere il valore precedentemente assegnato

  7. #7
    A parte le giustissime osservazioni di Simo990 con le quali concordo dato che il tuo codice è, perdonami, un obbrobrio!

    E' ovvio che $_SESSION['pagina'] abbia prima un valore e poi un altro. Ragionando semplicemente con logica, tu valorizzi $_SESSION['pagina'] in base alla pagina in cui ti trovi non sapendo a priori l'operazione che l'utente effettuerà (avanti, dietro, ecc.)
    Quindi, al click sul link in $_SESSION['pagina'] avrai l'ultimo valore inserito

    Codice PHP:
    <html>
    <head>

    <title>Annunci case ad........</title>

    </head>
    <body>
    <link rel="stylesheet" type="text/css" href="stileprova.css">

    <?php 

    require ("mysql.php");  
    require (
    "crea_menu.php");
    echo 
    "
     <font color='red'>ses[pag]:"
    .$_SESSION['pagina']."
    </font>"
    ;
    testata();
    echo 
    "
     <font color='red'>ses[pag]:"
    .$_SESSION['pagina']."
    </font>"
    ;
    ...
    solo successivamente, in base all'operazione scelta esso viene aggiornato:

    Codice PHP:
    ...
    if (isset(
    $_GET['inviapag'])) 
        {
        if ((
    $_GET['inviapag']=='indietro')||($_GET['inviapag']=='avanti')||($_GET['inviapag']=='prima')||($_GET['inviapag']=='ultima'))
            {
            echo 
    "
     ses[pag]:"
    .$_SESSION['pagina']."
    "
    ;
            if (
    $_GET['inviapag']=='indietro'$_SESSION['pagina']--;
            if (
    $_GET['inviapag']=='avanti'$_SESSION['pagina']++;
            if (
    $_GET['inviapag']=='prima'$_SESSION['pagina']=1;
            if (
    $_GET['inviapag']=='ultima'$_SESSION['pagina']=$num_pagine;
            echo 
    "
     ses[pag]:"
    .$_SESSION['pagina']."
    "
    ;
            }
        else {
            
            
    $_SESSION['pagina']=$_GET['inviapag'];
            
            }
         }
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    410
    Allora grazie per l 'aiuto e i vostri consigli sono preziosi appena funzionante il sito mi dedicherò a rendere piu dignitoso e leggibile il codice questo è poco ma sicuro

    Allora ho capito una cosa cerco di schematizzare:

    sono su pagina 1 - clicco su avanti - ricarica la pagina e $_SESSION['pagina'] va a 2 - clicco su indietro - elabora nuovamente $_SESSION['pagina']++; e poi successivamente cambia pagina e ed elabora il $_SESSION['pagina']--;

    non capisco il motivo però

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.