8791 sujets

Développement web côté serveur, CMS

Bonjour,

Ca fait quelques heures que je cherche sans succès. Ce bout de code fonctionne en partie mais n'enregistre rien en base Smiley ohwell

$sql = "SELECT SUM(exp) as exp, SUM(hab) as hab FROM membres WHERE id = ". $id ." ";
$somme = mysql_query($sql)  or die('Erreur SQL '.$sql.'<br>'.mysql_error()); 
$detail = mysql_fetch_assoc($somme); 


$fin = "UPDATE membres SET qstock_recipient=qstock_recipient+'$detail', 
WHERE id = ". $id ." ";  
$_SESSION['qstock_recipient']=$_SESSION['qstock_recipient']+'$detail';
include ("page_membre.php");
Salut,

Rouge a écrit :

Ca fait quelques heures que je cherche sans succès. Ce bout de code fonctionne en partie mais n'enregistre rien en base Smiley ohwell
Ce qui est assez logique puisque $detail n'a aucune valeur. Smiley cligne

Ça marcherait sûrement mieux en utilisant $detail['exp'] et $detail['hab'].

A+
Ca ne va toujours pas:

1) resultat de la somme erroné (dans l'exemple affiche 14 au lieu de 1.8)
2) l'update en base ne fonctionne pas.
3) le echo à la fin n'affiche pas le resultat de la somme



$sql = "SELECT SUM(exp) as exp, SUM(hab) as hab FROM membres WHERE id = ". $id ." ";
$somme = mysql_query($sql)  or die('Erreur SQL '.$sql.'<br>'.mysql_error()); 
$detail['exp']= mysql_fetch_assoc($somme);
$detail['hab']= mysql_fetch_assoc($somme);
 
 
$fin = "UPDATE membres SET qstock_recipient=qstock_recipient+$somme, stock_recipient='./objet/cactus.gif', PA=PA-3 , mp='Vous avez extrait cactus.',
usure_outil=usure_outil+1, usure_recipient=usure_recipient+1  WHERE id = ". $id ." ";  
					$_SESSION['qstock_recipient']=$_SESSION['qstock_recipient']+$somme;
    				$_SESSION['stock_recipient']='./objet/cactus.gif';
					$_SESSION['PA']= $_SESSION['PA']-3;
					$_SESSION['mp']='Vous avez extrait cactus';
					$_SESSION['usure_outil']=$_SESSION['usure_outil']+1;
					$_SESSION['usure_recipient']=$_SESSION['usure_recipient']+1;
}
					echo'<center><body background="image/fond.gif" bgproperties="fixed"><strong><font color="#000000">
					Vous avez extrait .$somme. cactus
Bon, j'ai cherché et cherché, cela va mieux!
Smiley langue

$sql = "SELECT exp, hab FROM membres WHERE id = ". $id ." ";
$res = mysql_query($sql)  or die('Erreur SQL '.$sql.'<br>'.mysql_error()); 
$total= mysql_num_rows($res);
$extract=0;
if($total!=0)
{
while($row=mysql_fetch_array($res))
{
$extract=$extract+$row['exp']+$row['hab'];
}
}
$fin = "UPDATE membres SET qstock_recipient=qstock_recipient+$extract, stock_recipient='./objet/cactus.gif', PA=PA-3 , mp='Vous avez extrait cactus.',
usure_outil=usure_outil+1, usure_recipient=usure_recipient+1  WHERE id = ". $id ." "; 
if($fin){
 
					$_SESSION['qstock_recipient']=$_SESSION['qstock_recipient']+$extract;
    				$_SESSION['stock_recipient']='./objet/cactus.gif';
					$_SESSION['PA']= $_SESSION['PA']-3;
					$_SESSION['mp']='Vous avez extrait cactus';
					$_SESSION['usure_outil']=$_SESSION['usure_outil']+1;
					$_SESSION['usure_recipient']=$_SESSION['usure_recipient']+1;
}

Ca semble fonctionner Smiley ohwell
Par contre, dernier souci de taille et là, je ne sais VRAIMENT pas comment faire:
comment arrondir le produit de la somme (sachant qu'il y a des décimales) au plus bas?

si resultat=1.8 comment traiter celà pour sauvegarder en base "1"
(si 25.7---> resultat à sauvegarder=25)

Smiley eek
Rouge a écrit :
Bon, j'ai cherché et cherché, cela va mieux!
Smiley langue
Oui mais il y a encore des choses étranges ! Smiley lol

Par exemple le SUM était le bienvenu. Pourquoi ne pas faire :
$sql = 'SELECT SUM(hab) + SUM(exp) FROM membres WHERE id = '.$id;
$result = mysql_query($sql) or die(mysql_error());
$extract = intval(mysql_result($result, 0));


Ensuite je te demandais de réviser mysql_query car ta requête $fin n'est jamais exécutée...

Sinon quand tu cherches une fonction PHP, Google est ton ami ! Par exemple "PHP fonction arrondir" devrait t'amener à round... qui devrait t'amener à floor.

A+
Smiley decu
c'est pas top encore, le $fin fonctionne en tant que tel mais pas la maj des sessions qui suit....
voici la derniere mouture (à force, je m'y perds Smiley langue )

$sql = 'SELECT SUM(hab) + SUM(exp) FROM membres WHERE id = '.$id;

$result = mysql_query($sql) or die(mysql_error());

$extract = intval(mysql_result($result, 0));
if($extract!=0)
{
$fin = "UPDATE membres SET qstock_recipient=qstock_recipient+$extract, stock_recipient='./objet/cactus.gif', PA=PA-3 , mp='Vous avez extrait cactus.',
usure_outil=usure_outil+1, usure_recipient=usure_recipient+1  WHERE id = ". $id ." "; 
if($fin){
 
					$_SESSION['qstock_recipient']=$_SESSION['qstock_recipient']+$extract;
    				$_SESSION['stock_recipient']='./objet/cactus.gif';
					$_SESSION['PA']= $_SESSION['PA']-3;
					$_SESSION['mp']='Vous avez extrait cactus';
					$_SESSION['usure_outil']=$_SESSION['usure_outil']+1;
					$_SESSION['usure_recipient']=$_SESSION['usure_recipient']+1;
}
					echo'<center><body background="image/fond.gif" bgproperties="fixed"><strong><font color="#000000">
					Vous avez extrait '.$extract.' cactus

<br><br><a href="page_membre.php">retour page membre</a></font></strong>';
}
?>	


C'est presque bon, sauf que les sessions ne sont pas mises à jour Smiley confused
J'insiste lourdement mais c'est
$fin = mysql_query('...');
Sinon ta page commence bien avec un session_start ?

Et en passant tu peux simplifier les additions et soustractions comme ceci :
$_SESSION['qstock_recipient'] += $extract;
$_SESSION['PA'] -= 3;
$_SESSION['usure_outil']++;
$_SESSION['usure_recipient']++;
les sessions ne se mettent toujours pas à jour, je ne comprends pas Smiley ohwell



$sql = 'SELECT SUM(hab) + SUM(exp) FROM membres WHERE id = '.$id;

$result = mysql_query($sql) or die(mysql_error());

$extract = intval(mysql_result($result, 0));
if($extract!=0)
{
$fin = mysql_query("UPDATE membres SET qstock_recipient=qstock_recipient+$extract, stock_recipient='./objet/cactus.gif', PA=PA-3 , mp='Vous avez extrait cactus.',
usure_outil=usure_outil+1, usure_recipient=usure_recipient+1, exp=exp+0.1  WHERE id = '.$id "); 
 
					$_SESSION['qstock_recipient'] += $extract;
    				$_SESSION['stock_recipient']='./objet/cactus.gif';
    				$_SESSION['ustock_recipient']= $_SESSION['ustock_recipient']+1;
					$_SESSION['PA'] -= 3;
					$_SESSION['mp']='Vous avez extrait cactus';
					$_SESSION['usure_outil']++;
					$_SESSION['usure_recipient']++;
    				$_SESSION['exp']++;
}					
					echo'<center><body background="image/fond.gif" bgproperties="fixed"><strong><font color="#000000">
					Vous avez extrait '.$extract.' cactus
<br><br><a href="page_membre.php">retour page membre</a></font></strong>';
Smiley ohwell


J'ai remis celà ainsi :
$fin = mysql_query("UPDATE bla bla bla    [b]WHERE id = " . $id . " ");[/b] 
et cela remarche Smiley eek
Modifié par Rouge (31 Aug 2008 - 00:30)