Newsgroup: it.comp.www.php
Titolo: curioso atteggiamento del mio db...

Salve a tutti, recentemente ho trasportato il mio sitino personale da un 
  dominio gratuito ad uno a pagamento. Successivamente ho sistemato 
tutti i vari script php inerenti mysql configurandoli coi parametri del 
nuovo account. Tutto in apparenza sembrava andare correttamente ma poi 
mi sono accorto di un curioso malfunzionamento con un UPDATE.
mysql_query("UPDATE utenti SET lastAccess=1068400068, points=points+1 
WHERE userID=33")
non funziona ed il punteggio non viene incrementato di un punto 
(naturalmente la stringa viene generata dinamicamente quello riportato è 
un esempio). Sul vecchio hosting quella update funzionava correttamente.
La cosa bella è che se nella pagina di sql di phpmyadmin metto:
UPDATE utenti SET lastAccess=1068400068, points=points+1 WHERE userID=33
questa funziona bellamente.
Ho pensato che il problema possa coinvolgere il ricorso ad ' o " ma non 
ne riesco ad arrivare a capo.
Che ne dite?
Ringraziamenti anticipati, Trini.

 riportato č un esempio). 
Posta il codice che genera la stringa SQL e' molto probabile che sia li
l'errore.
Hai verificato che il collegamento al DB avvenga correttamente e che
l'utente abbia i privilegi necessari per effettura UPDATE etc?
-- 
I'am what I'am, I do what I can

 l'utente abbia i privilegi necessari per effettura UPDATE etc?
La lettura dei dati o l'inserimento di nuovi funziona egregiamente
Io sono incline a ritenere che il problema sia relativo al pezzo:
points= points+1
che apparentemente viene interpretato come points = 1!!!
Cosa ne pensi/ate?
Grazie, Trini.

 ha scritto nel messaggio
news:mKwrb.117983$e5.42...@news1.tin.it...

NON ESCLUDERE MAI NULLA!!!!

 Cosa ne pensi/ate?
Posta il codice e la struttura della tabella (lo statement SQL CREATE).



E' evidente che "point" vale 0. Verifica attentamente la correttezza
dell'assegnamento al valore "point" prima di incrementarlo. A prima vista
sembra che non venga inizializzato.
Cooper.
-- 
------------------------------------
BlueWare WebAgency
 [web] 
http://www.blueware.it
 [msn] 
coo...@blueware.it
 [icq] 146781935

> Posta il codice e la struttura della tabella (lo statement SQL CREATE).
Ok questa č la parte di codice interessata:
if($_GET["userID"])
{
	//echo ("chiamato con UserID".$_GET["userID"]."<br>");
	$userID=$_GET["userID"];
	//prendiamo il numero dello userId e facciamo una bella query per 
inserire il valore dell'accesso corrente e dei punti con un update....
	$updateLastAccess="UPDATE ".$dbTable." SET lastAccess=".time().", 
points=points+1 WHERE userID=".$userID;
	//echo ($updateLastAccess);
	mysql_query($updateLastAccess)or die("Problemi nell'effettuare la 
ricerca");
	//dopo aver aggiornato i dati li visualizziamo con molto agio...
	$select="SELECT * FROM ".$dbTable." WHERE userID=".$userID;
	$data=mysql_query($select)or die("Problemi nell'effettuare la ricerca");
	$row=mysql_fetch_array($data);
	$firstAccess=$row["firstAccess"];
	$lastAccess=$row["lastAccess"];
	$points=$row["points"];
}
Va da se' che la pagina č chiamata passando un identificativo numerico 
come userID. La prima volta invece come potete vedere oltre a creare 
l'id utente vengono inizializzati tutti i campi dell'array e points č 
settaqto a 1.
if($_GET["newUser"])
{
	//echo ("chiamato con newUser<br>");
	//leggiamo quanti dati ci sono per incrementare lo userID...
	$readAll="SELECT * FROM ".$dbTable;
	//echo $readAll."<br>";
	$data=mysql_query($readAll)or die("Problemi nell'effettuare la ricerca");
	$userID=mysql_num_rows($data)+1;
	$points=1;
	$lastAccess=$firstAccess=time();
	$insert="INSERT INTO ".$dbTable." VALUES (".$userID.", 
".$firstAccess.", ".$firstAccess.", ".$points.")";
	mysql_query($insert)or die("Problemi nell'effettuare l'inserimento");
}
Questa parte funziona benissimo, l'unica cosa che non va č l'update.
Infine vi riporto la struttura della tabella cosě come da query sql:
CREATE TABLE `utenti` (
`userID` int( 11 ) NOT NULL default '0',
`firstAccess` int( 11 ) NOT NULL default '0',
`lastAccess` int( 11 ) NOT NULL default '0',
`points` int( 11 ) NOT NULL default '0'
) TYPE = MYISAM ;
Grazie a tutti per l'interesse...
Trini.

 points è settaqto a 1.
Ho fatto il seguente test:
<?php 
	$_GET["userID"] = 1;
	$dbTable='utenti';
	mysql_connect ('localhost', 'root', 'root') or die ("errore db");
	mysql_select_db('test');
	echo ("chiamato con UserID".$_GET["userID"]."<br>");
	$userID=$_GET["userID"];
	//prendiamo il numero dello userId e facciamo una bella query per
inserire il valore dell'accesso corrente e dei punti con un update....
	$updateLastAccess="UPDATE ".$dbTable." SET lastAccess=".time().",
points=points+1 WHERE userID=".$userID;
	echo ($updateLastAccess."<br>");
	mysql_query($updateLastAccess)or die("Problemi nell'effettuare la
ricerca");
	//dopo aver aggiornato i dati li visualizziamo con molto agio...
	$select="SELECT * FROM ".$dbTable." WHERE userID=".$userID;
	$data=mysql_query($select)or die("Problemi nell'effettuare la
ricerca");
	$row=mysql_fetch_array($data);
	print_r ($row);
?>
E funziona correttamente.
