Problema con UPDATE table SET username = $_SESSION["username"]

Alessio Pinna

Nuovo Utente
15 Set 2012
22
0
0
Mi scuso se ultimamente sto postando più del dovuto (secondo i miei canoni).

Mi trovo nelle fasi finali della costruzione del mio sito e sto letteralmente scapocciando .

Ho una pagina index con un form login con la sessione attiva :

HTML:
<?php session_start(); ?>
<html>
<head>
</head>
                                                
<body>
<form method="post" action="login.php" id="formvoti">
<li><label for="link"><b>LOGIN <br><br> Your ID :</b><br><br></label>
<?php	if(isset($_SESSION["link"]))
{echo "<input type=\"hidden\" name=\"link\" id=\"link\" value=\"".$_SESSION["link"]."\"/>"; echo $_SESSION["link"];
}else{echo "<input type=\"text\" name=\"link\" id=\"link\" />";  }?>
</li><br>
<li><label for="username"><b>Your username:</b><br><br></label>
<?php	if(isset($_SESSION["username"]))
{echo "<input type=\"hidden\" name=\"username\" id=\"username\" value=\"".$_SESSION["username"]."\"/>";echo $_SESSION["username"];
}else{echo "<input type=\"text\" name=\"username\" id=\"username\" />";  }?>
</li><br>
<input type="submit" name="invia" id="login" value="login" style="margin-left:110px;"/><br>
</form>

questo form spedisce i dati (ID , username) in un file login.php (Anch'esso con la sessione ecc.) che li analizza e vede se l'utente è registrato ecc.

Subito dopo questo form (sempre nella pagina index) ho incluso una pagina oggetto1.php:


PHP:
<?php						
include 'oggetto1.php';						
?>
</body>
</html>


La parte che mi interessa di questa pagina è un'UPDATE all'interno di un controllo isset di un pulsante (se è stato premuto fa determinate cose) :

PHP:
if (isset($_POST['button'])) {
		
$query="UPDATE admin SET utenti = ".$_SESSION["username"]." WHERE id = 1";

}

Come potete vedere una volta che spingo il pulsante dovrei aggiornare la colonna "utenti" nella tabella admin dove l'ID = 1 con ".$_SESSION["username"]."

Indovinate?

Non mi aggiorna NULLA !!!!!

Cosa posso fare?
 
Ultima modifica:
ah mi sono sbagliato la query per l'UPDATE è :

PHP:
mysql_query ("UPDATE admin_oggetti SET utenti = ".$_SESSION["username"]." WHERE id = 1");

e non funziona lo stesso
 
Ultima modifica:
niente non funziona , eppure dentro al controllo del pulsante (isset) ho un altro UPDATE molto simile a quello di cui ho bisogno io solo che al posto di "utenti" ho oggetto quindi la questione dell'errore nel digitare le coordinate della query è impossibile
 
la session_start(); è inserita nell'index come puoi vedere , e sempre nella pagina index è anche inclusa la pagina "oggetto1.php" che contiene l'UPDATE che mi serve , quest'ultima pagina però ovviamente non ha la session_start(); perchè seno mi darebbe errore visto che si trova già nell'index
 
si infatti è cosi , ed ho fatto cosi , questo controllo (isset) funziona .

All'interno dell'isset ho questi due controlli :

PHP:
if (isset($_POST['button'])) {
		
mysql_query("UPDATE admin SET utenti = ".$_SESSION["username"]." WHERE id = 1");
		
mysql_query("UPDATE admin SET seconds = seconds + 30 WHERE id = 1");
        		
		
		
header("Location: index.php"); 
		
}

-il primo controllo (quello che mi serve e che non funziona) deve aggiornare la colonna utenti con il nome dell'utente loggato
-il secondo controllo aggiorna una variabile $seconds (che va a modificare un countdown in javascript) gestita dalla colonna seconds sommando quello che c'era prima con + 30 secondi , quest'ultimo controllo ovviamente funziona (alla pressione del pulsante 'button'
 
Ultima modifica:
ciao
dividi la query e metti un var_dump
PHP:
<?php
if (isset($_POST['button'])) {
    $query= "UPDATE admin SET utenti = ".$_SESSION["username"]." WHERE id = 1";
	var_dump($query);//e verifica cosa riporta
	mysql_query($query);
    mysql_query("UPDATE admin SET seconds = seconds + 30 WHERE id = 1");
    header("Location: index.php"); 
}
?>

p.s.
una volta chiami la tabella admin_oggetti e qui admin ???
come gia detto sei sicuro dei nomi sia tabella che campi?
se la tabella è la stessa perche fai due query?
 
Notice: Undefined variable: _SESSION in C:\xampp\htdocs\oggetto1.php on line 40
string(47) "UPDATE admin SET utenti = WHERE id = 1"

C'è da sottolineare che ho dovuto togliere header("Location: index.php"); e analizzare solo la pagina "oggetto1.php" per vadere la risposta , infatti la <?php session_start(); ?> non si trova dentro questa pagina ma si trova dentro index.php che include "oggetto1.php"
 
RICAPITOLIAMO :


PAGINA INDEX.PHP:

HTML:
<?php session_start(); ?>
<html>
<head>
</head>
                                                
<body>
<form method="post" action="login.php" id="formvoti">
<li><label for="link"><b>LOGIN <br><br> Your ID :</b><br><br></label>
<?php	if(isset($_SESSION["link"]))
{echo "<input type=\"hidden\" name=\"link\" id=\"link\" value=\"".$_SESSION["link"]."\"/>"; echo $_SESSION["link"];
}else{echo "<input type=\"text\" name=\"link\" id=\"link\" />";  }?>
</li><br>
<li><label for="username"><b>Your username:</b><br><br></label>
<?php	if(isset($_SESSION["username"]))
{echo "<input type=\"hidden\" name=\"username\" id=\"username\" value=\"".$_SESSION["username"]."\"/>";echo $_SESSION["username"];
}else{echo "<input type=\"text\" name=\"username\" id=\"username\" />";  }?>
</li><br>
<input type="submit" name="invia" id="login" value="login" style="margin-left:110px;"/><br>
</form>

<div style="border-style:solid; height:100px; width:110px;padding:10px;margin-left:20px;margin-top:10px;">
						<?php
						
						include 'oggetto1.php';						
						?>
						</div>
						
</div>						
</body>
</html>


PAGINA LOGIN.PHP:

PHP:
<?php session_start(); ?>
<?php 			
		

     $connx=mysql_connect("localhost", "root", "");
     if (!$connx)
     {
     die ("Connessione a Mysql non riuscita. - " . mysql_error());
     }
     $connx_db=mysql_select_db("sito", $connx);
     if (!$connx_db)
     {
     die ("Connessione non riuscita al database specificato. - " . mysql_error());
      }	      	
	  if(isset($_COOKIE["username"])&&isset($_COOKIE["link"])){
      $_SESSION["username"]=$_COOKIE["username"];
      $_SESSION["link"]=$_COOKIE["link"];
      }	  
	  
	 $link = mysql_real_escape_string(trim($_POST['link']));
	 $username = mysql_real_escape_string(trim($_POST['username']));
	
	
	if (is_numeric($link)){
	 
	 $member_control = mysql_query("SELECT link FROM utenti WHERE link = '$link'");
	 if(mysql_num_rows($member_control)) 
	 {
	 $_SESSION["link"]=$link;
	 $_SESSION["username"]=$username;
	 header("Location: index.php"); 
	 	 
	 }
         else
         {
         echo $username; echo "<b> you aren't member  !!!</b><br><br>";
         
                  
         }
         }
         else
         {
if(empty($link)){

         echo $username ; echo " ERROR : link empty !!!<br>";

         }else{
         echo $username ; echo " ERROR : insert only your ID<br>"; 
         }
         }
 
         
      session_write_close();   
        ?>


PAGINA OGGETTO1.PHP


HTML:
<?php 


   $connx=mysql_connect("localhost", "root", "");
     if (!$connx)
     {
     die ("Connessione a Mysql non riuscita. - " . mysql_error());
     }
     $connx_db=mysql_select_db("sito", $connx);
     if (!$connx_db)
     {
     die ("Connessione non riuscita al database specificato. - " . mysql_error());
      }	
	  if(isset($_COOKIE["username"])&&isset($_COOKIE["link"])){
      $_SESSION["username"]=$_COOKIE["username"];
      $_SESSION["link"]=$_COOKIE["link"];
      }
	  
	  
	  
  
  $admin1= mysql_query("SELECT month,day,year,hour,minutes,seconds FROM admin_oggetti WHERE id=1;");
  while ($row1= mysql_fetch_assoc($admin1)){
  $month1 = $row1["month"];
  $day1 = $row1["day"];
  $year1 = $row1["year"];
  $hour1 = $row1["hour"];
  $minutes1 = $row1["minutes"];
  $seconds1 = $row1["seconds"];
  }
  
       
	   
	    echo $_SESSION["username"];
		
	    
        if (isset($_POST['button'])) {
		
    $query= "UPDATE admin SET utenti = ".$_SESSION["username"]." WHERE id = 1"; 
    var_dump($query);//e verifica cosa riporta 
    mysql_query($query); 
    mysql_query("UPDATE admin SET seconds = seconds + 30 WHERE id = 1"); 
    header("Location: index.php");  
        		
		
		
		
		
        }
		
	
  
  ?>
<script type="text/javascript">
/*countdown - conto alla rovescia*/
function countdown()
{
var_anno= ("<?php echo $year1 ; ?>") ;

var_mese= ("<?php echo $month1 ; ?>") ;

var_giorno= ("<?php echo $day1 ; ?>") ;

var_ore= ("<?php echo $hour1 ; ?>") ;

var_minuti= ("<?php echo $minutes1 ; ?>") ;

var_secondi= ("<?php echo $seconds1 ; ?>") ;

data_scandeza= new Date(var_anno,var_mese-1,var_giorno,var_ore,var_minuti,var_secondi);
data_oggi= new Date();
differenza=(data_scandeza-data_oggi);
giorni=parseInt(differenza/86400000);
differenza=differenza-(giorni*86400000);
ore=parseInt(differenza/3600000);
differenza=differenza-(ore*3600000);
minuti=parseInt(differenza/60000);
differenza=differenza-(minuti*60000);
secondi=parseInt(differenza/1000);
differenza=differenza-(secondi*1000);
if (giorni <= "0" && ore <= "0" && minuti <= "0" && secondi <= "0")
{
document.getElementById("countdown").innerHTML="CLOSED";
document.getElementById("xx1").disabled = true;
}
else
{
document.getElementById("countdown").innerHTML=minuti+' min '+secondi+' sec';
setTimeout("countdown()",1000)
}
}


</script>
<div style="border-style:solid; height:60px; width:80px;padding:10px;margin-left:7px;"> 
<body onload="countdown()"><div id="countdown"style="margin-left:3px;"></div>
<div> </div>
<FORM action="oggetto1.php" method="post">
<input type="submit" name="button" value="button" id="xx1" style="margin-left:15px;"/>
</form>

</div>

</input>
</form>
 
ciao
ecco la sessione non è valorizzata
Notice: Undefined variable: _SESSION in C:\xampp\htdocs\oggetto1.php on line 40
string(47) "UPDATE admin SET utenti = WHERE id = 1"
infatti ti da utenti = e non c'è il valore
verifica perchè e ricorda che l'istruzione session_start() deve essere presente in TUTTE le pagine in cui usi le sessioni
 
Considerando che l'UPDATE che mi serve è questo :

PHP:
$query= "UPDATE admin SET utenti = ".$_SESSION["username"]." WHERE id = 1"; 
    var_dump($query);//e verifica cosa riporta 
    mysql_query($query);

e considerando che il var_dump mi dice che nella colonna utenti non sto mettendo niente (valore vuoto)

se io provo a fare :
PHP:
echo $_SESSION["username"];
, mi compare sullo schermo il nome dell'utente che ha loggato quindi è una cosa stranissima ... che sta succedendo?

I codici che ho a disposizione li ho scritti tutti , non so prp che fare
 
Molte volte l'errore è in una dimenticanza o in una distrazione quindi prova a controllare se esiste un utente che ha id=1 :)
 
Considerando le 3 pagine che compongono per adesso il mio sito e vi ho mostrato in 2-3 commenti precedenti ecco la tabella admin (quella che devo far entrare la sessione dell'username dell'utente loggato quando questo preme il pulsante)

http://prntscr.com/1gb2mv

e questa è la struttura :

http://prntscr.com/1gb33p

come potete vedere è presente l'ID = 1 , è presente la colonna utenti ..... non so proprio perchè non avviene l'UPDATE con la sessione , mi manca solo questo :-/
 
ciao
altro piccolp dubbio mi sembra che tu abbia definito utenti unique. giusto?
se mella tabella esiste un altro utente col nome uguale alla sessione non te lo uppa in quanto essendo unique non possono essereci due nomi uguali
 

Discussioni simili