Erreur qui va faire passer mon ordi par la fenetre.

dexon123
Invité n'ayant pas de compte PHPfrance

29 nov. 2011, 04:29

Bonjours, bonsoir,
je fait un genre de admin menu qui permet l'Administration du montant dans la "cagnotte"
voicit l'application :
Image

Donc le problème, c'est que un message d'erreur s'affiche. Mais je ne sais pas pourquoi. Quel est la chose a écrire dans un 'echo' pour que sa écrive qu'es-ce qui ne fonctionne pas correctement ? Vous savez ? le message qui te dit le fichier et la ligne ?

Donc voila le code de la page suivant le clique du bouton 'changer' :
<?php
$c_cagnotte = $_POST['cagnotte'];
if ( !eregi( "^[0-9]+$", $c_cagnotte )){echo'Que des chifres dans le nombres de cagnotte';}
else{
$u = htmlspecialchars($_GET['u']);
$p = htmlspecialchars($_POST['type']);
$s_u = mysql_real_escape_string($u);
if($p == '+'){
$result = mysql_query("SELECT cagnotte FROM user WHERE pseudo = '$s_u'")
 or die('erreur 1');
 
 while ( $row = mysql_fetch_assoc($result) ) {
 $f_cagnotte = $row["cagnotte"];
 }
$lol = $c_cagnotte + $f_cagnotte;
$req = mysql_query("UPDATE user SET cagnotte='".$lol."' WHERE pseudo='$s_u'") or die("Insert Error");
mysql_close($db);
}
if($p == '-'){
$result = mysql_query("SELECT cagnotte FROM user WHERE pseudo = '$s_u'")
 or die('erreur 1');
 
 while ( $row = mysql_fetch_assoc($result) ) {
 $p_cagnotte = $row["cagnotte"];
 }
$lol = $c_cagnotte - $p_cagnotte;
$req = mysql_query("UPDATE user SET cagnotte='".$lol."' WHERE pseudo='$s_u'") or die("Insert Error");
mysql_close($db);
}

if ($req){
echo'La cagnotte a bien été changé. Tu seras redirigé dans 3 secondes.';
echo'<script>setTimeout("location=(\'2.php\');",3000);</script>';
}else{echo'merde là...';}}

?>

dexon123
Invité n'ayant pas de compte PHPfrance

29 nov. 2011, 04:32

Oh j'ai completement oublier de dire: quand on clique sur Changer, sur la page d'action (celle dont j'ai mis le code) le message 'merde là...' s'affiche.

ViPHP
xTG
ViPHP | 7331 Messages

29 nov. 2011, 07:49

Si tu parles d'afficher l'erreur sql c'est dans le die() et il faut utiliser mysql_error().

dexon123
Invité n'ayant pas de compte PHPfrance

01 déc. 2011, 00:33

Salut, merci pour ta réponse mais sa ne marche pas. j'ai mis des 'or die(mysql_error());' à tout les 'mysql_query' et aucune erreur n'apparait sauf
le message : "merde là..." de

if ($req){
echo'La cagnotte a bien été changé. Tu seras redirigé dans 3 secondes.';
echo'<script>setTimeout("location=(\'2.php\');",3000);</script>';
}else{echo'merde là...';}}

need help! D:

ViPHP
ViPHP | 2577 Messages

01 déc. 2011, 10:14

Bonjour,

je pense que tu devrais vérifier la valeur de $p en l'affichant et en regardant dans le source de la page.

Tu fais :
if ($p == '-')
{
$req = ...
}
if ($p == '+')
{
$req = ...
}
if ($req)
{
}

Rien ne dit que tu passe bien dans un des 2 if qui affecte $req.

Il n'est pas impossible que la ligne $p = htmlspecialchars($_POST['type']); pose problème (à vérifier que + ou - ne sont pas des caractères spéciaux html). L'affichage ne montrera pas le problème dans le navigateur, mais le montrera dans le source de la page.

Mammouth du PHP | 2278 Messages

01 déc. 2011, 10:30

Ce n'est pas htmlspecialchars qui est en cause car :
Les remplacements effectués sont :
"&" (et commercial) devient "&"
""" (guillemets doubles) devient """ lorsque ENT_NOQUOTES n'est pas utilisée.
"'" (guillemet simple) devient ' uniquement lorsque ENT_QUOTES est utilisée.
"<" (inférieur à) devient "<"
">" (supérieur à) devient ">"
Quant à moi, pour éviter le problème potentiel des if, je suggère:
<?PHP
$p="+";
/* au lieu de*/
if ($p == "+")
{
	print "plus";
}
if ($p == "-")
{
	print "moins";
}

/* tests plus complets*/
if ($p == "+")
{
	print "plus";
}
elseif ($p == "-")
{
	print "moins";
}
else
	{
	print "erreur sur p";
}
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

dexon123
Invité n'ayant pas de compte PHPfrance

01 déc. 2011, 15:26

Salut, j'ai fais une faute de frape dans la value des input radio de la page précédente :S

En tout cas, j'ai réglé mon problème ^.^ Merci quand même :D