Php pb SQL

Bonjour,

Ce code ne marche pas mais je vis pas pourquoi.

<?php

mysql_connect("localhost", "kevin", "");
mysql_select_db("kevin");
$pseudo=$_SESSION['login_session'];
$reponse31 = mysql_query("SELECT * FROM attaque WHERE pseudoatt ='$pseudo'");
$dts=time();

while ($donnees31 = mysql_fetch_array($reponse31) )// donnees de l'attaque
{
$a1=$donnees31['pseudoatt'];
$a2=$donnees31['pseudodef'];
$a3=$donnees31['timestampfin'];

if ($dts >= $a3)
{
//attaquant
$reponse99 = mysql_query("SELECT * FROM qgjoueur WHERE pseudo ='$a1'");
$donnees99 = mysql_fetch_array($reponse99);
//defenseur
$reponse98 = mysql_query("SELECT * FROM qgjoueur WHERE pseudo ='$a2'");
$donnees98 = mysql_fetch_array($reponse98);
//attaque total
$att=($donnees31['pingouinatt']) + ($donnees31['guerrieratt']) + ($donnees31['float1att'])
+ ($donnees31['float2att']) + ($donnees31['float3att']) + ($donnees31['float0att']) + ($donnees31['float5att'])
+ ($donnees31['avionatt']) + ($donnees31['eclairatt']);

//defense total
$def= ($donnees98['def']) + ($donnees98['pingouindef']*3) + ($donnees98['guerrierdef']*25) + ($donnees98['float1def']*5)
+ ($donnees98['float2def']*10) +($donnees98['float3def']*25) +($donnees98['float0def']*45) +($donnees98['aviondef']*125000);

if ($att > $def) // l'attaquant gagne
{

//attaquant
$a4 = $donnees99['pingouin'] + $donnees31['pingouinatt'] ;
$a5 = $donnees99['guerrier'] + $donnees31['guerrieratt'] ;
$a6 = $donnees99['float1'] + $donnees31['float1att'] ;
$a7 = $donnees99['float2'] + $donnees31['float2att'] ;
$a8 = $donnees99['float3'] + $donnees31['float3att'] ;
$a9 = $donnees99['float0'] + $donnees31['float0att'] ;
$a10 = $donnees99['float5'] + $donnees31['float5att'] ;
$a11 = $donnees99['avion'] + $donnees31['avionatt'] ;
$a12 = $donnees99['eclair'] + $donnees31['eclairatt'] ;

// le defenseur perd tout puis perte de niveau de recherche
if($donnees98['recherche'] < 10 )
{
$b1 = $donnees98['recherche'] - 1;
$b2 = $donnees99['recherche'] + 1;
$b3 = $donnees99['Argent'] + 10000000;
}
elseif($donnees98['recherche'] < 20 )
{
$b1 = $donnees98['recherche'] - 2;
$b2 = $donnees99['recherche'] + 2;
$b3 = $donnees99['Argent'] + 20000000;
}
elseif($donnees98['recherche'] < 50 )
{
$b1 = $donnees98['recherche'] - 5;
$b2 = $donnees99['recherche'] + 5;
$b3 = $donnees99['Argent'] + 50000000;
}
elseif($donnees98['recherche'] < 100 )
{
$b1 = $donnees98['recherche'] - 10;
$b2 = $donnees99['recherche'] + 10;
$b3 = $donnees99['Argent'] + 100000000;
}
elseif($donnees98['recherche'] < 250 )
{
$b1 = $donnees98['recherche'] - 25;
$b2 = $donnees99['recherche'] + 25;
$b3 = $donnees99['Argent'] + 250000000;
}
elseif($donnees98['recherche'] < 500 )
{
$b1 = $donnees98['recherche'] - 50;
$b2 = $donnees99['recherche'] + 50;
$b3 = $donnees99['Argent'] + 500000000;
}
elseif($donnees98['recherche'] < 800 )
{
$b1 = $donnees98['recherche'] - 80;
$b2 = $donnees99['recherche'] + 80;
$b3 = $donnees99['Argent'] +800000000;
}
elseif($donnees98['recherche'] < 1000 )
{
$b1 = $donnees98['recherche'] - 100;
$b2 = $donnees99['recherche'] + 100;
$b3 = $donnees99['Argent'] + 1000000000;
}
elseif($donnees98['recherche'] < 1300 )
{
$b1 = $donnees98['recherche'] - 130;
$b2 = $donnees99['recherche'] + 130;
$b3 = $donnees99['Argent'] + 1300000000;
}
elseif($donnees98['recherche'] < 1800 )
{
$b1 = $donnees98['recherche'] - 180;
$b2 = $donnees99['recherche'] + 180;
$b3 = $donnees99['Argent'] + 1800000000;
}
elseif($donnees98['recherche'] < 2500 )
{
$b1 = $donnees98['recherche'] - 250;
$b2 = $donnees99['recherche'] + 250;
$b3 = $donnees99['Argent'] + 2500000000;
}
else {}

// modif chez defenseur
mysql_query("UPDATE qgjoueur SET recherche = '$b1, def='0', pingouin='0', guerrier='0', float1='0',
float2='0', float3='0', float0='$0', float5='0', avion='0', eclair='0' WHERE pseudo = '$a12'") or die(mysql_error());

// modif chez attaquant
mysql_query("UPDATE qgjoueur SET argent='$b3', recherche = '$b2, pingouin='$a4', guerrier='$a5', float1='$a6', float2='$a7',
float3='$a8', float0='$a9', float5='$a10', avion='$a11', eclair='$a12' WHERE pseudo = '$a11'") or die(mysql_error());
mysql_query("INSERT INTO attacklog VALUES (NULL, '$pseudo','$b2','".$donnees31['pingouinatt']."','".$donnees31['guerrieratt']."','".$donnees31['float1att']."','".$donnees31['float2att']."','".$donnees31['float3att']."','".$donnees31['float0att']."','".$donnees31['float5att']."','".$donnees31['avionatt']."','".$donnees31['eclairatt']."',
'$a2','".$donnees98['recherche']."','".$donnees98['pingouin']."','".$donnees98['guerrier']."','".$donnees98['float1']."','".$donnees98['float2']."','".$donnees98['float3']."','".$donnees98['float0']."','".$donnees98['float5']."','".$donnees98['avion']."','".$donnees98['eclair']."','$pseudo','$a3')") or die(mysql_error()); //29 a inserer
mysql_query("DELETE FROM attaque WHERE timestampfin = '$a3' AND pseudoatt = '$a1' AND pseudodef = '$a2'") or die(mysql_error());
}

elseif ($att == $def)
{
// modif chez defenseur
mysql_query("UPDATE qgjoueur SET recherche = '$b1, def='0', pingouin='0', guerrier='0', float1='0',
float2='0', float3='0', float0='$0', float5='0', avion='0', eclair='0' WHERE pseudo = '$a12'") or die(mysql_error());

// modif chez attaquant
mysql_query("INSERT INTO attacklog VALUES (NULL, '$pseudo','$b2','".$donnees31['pingouinatt']."','".$donnees31['guerrieratt']."','".$donnees31['float1att']."','".$donnees31['float2att']."','".$donnees31['float3att']."','".$donnees31['float0att']."','".$donnees31['float5att']."','".$donnees31['avionatt']."','".$donnees31['eclairatt']."',
'$a2','".$donnees98['recherche']."','".$donnees98['pingouin']."','".$donnees98['guerrier']."','".$donnees98['float1']."','".$donnees98['float2']."','".$donnees98['float3']."','".$donnees98['float0']."','".$donnees98['float5']."','".$donnees98['avion']."','".$donnees98['eclair']."','$pseudo','$a3')") or die(mysql_error()); //29 a inserer
mysql_query("DELETE FROM attaque WHERE timestampfin = '$a3' AND pseudoatt = '$a1' AND pseudodef = '$a2'") or die(mysql_error());
}
else
{

// l'attaquant perd tout puis perte de niveau de recherche
if($donnees98['recherche'] < 10 )
{
$b1 = $donnees99['recherche'] - 1;
$b2 = $donnees98['recherche'] + 1;
$b3 = $donnees98['Argent'] + 10000000;
}
elseif($donnees98['recherche'] < 20 )
{
$b1 = $donnees99['recherche'] - 2;
$b2 = $donnees98['recherche'] + 2;
$b3 = $donnees98['Argent'] + 20000000;
}
elseif($donnees98['recherche'] < 50 )
{
$b1 = $donnees99['recherche'] - 5;
$b2 = $donnees98['recherche'] + 5;
$b3 = $donnees98['Argent'] + 50000000;
}
elseif($donnees98['recherche'] < 100 )
{
$b1 = $donnees99['recherche'] - 10;
$b2 = $donnees98['recherche'] + 10;
$b3 = $donnees98['Argent'] + 100000000;
}
elseif($donnees98['recherche'] < 250 )
{
$b1 = $donnees99['recherche'] - 25;
$b2 = $donnees98['recherche'] + 25;
$b3 = $donnees98['Argent'] + 250000000;
}
elseif($donnees98['recherche'] < 500 )
{
$b1 = $donnees99['recherche'] - 50;
$b2 = $donnees98['recherche'] + 50;
$b3 = $donnees98['Argent'] + 500000000;
}
elseif($donnees98['recherche'] < 800 )
{
$b1 = $donnees99['recherche'] - 80;
$b2 = $donnees98['recherche'] + 80;
$b3 = $donnees98['Argent'] +800000000;
}
elseif($donnees98['recherche'] < 1000 )
{
$b1 = $donnees99['recherche'] - 100;
$b2 = $donnees98['recherche'] + 100;
$b3 = $donnees98['Argent'] + 1000000000;
}
elseif($donnees98['recherche'] < 1300 )
{
$b1 = $donnees99['recherche'] - 130;
$b2 = $donnees98['recherche'] + 130;
$b3 = $donnees98['Argent'] + 1300000000;
}
elseif($donnees98['recherche'] < 1800 )
{
$b1 = $donnees99['recherche'] - 180;
$b2 = $donnees98['recherche'] + 180;
$b3 = $donnees98['Argent'] + 1800000000;
}
elseif($donnees98['recherche'] < 2500 )
{
$b1 = $donnees99['recherche'] - 250;
$b2 = $donnees98['recherche'] + 250;
$b3 = $donnees98['Argent'] + 2500000000;
}
else {}

// modif chez defenseur
mysql_query("UPDATE qgjoueur SET argent='$b3',recherche = '$b2 WHERE pseudo = '$a2'") or die(mysql_error());

// modif chez attaquant
mysql_query("UPDATE qgjoueur SET recherche = '$b1 WHERE pseudo = '$a1'") or die(mysql_error());
mysql_query("INSERT INTO attacklog VALUES (NULL, '$pseudo','$b2','".$donnees31['pingouinatt']."','".$donnees31['guerrieratt']."','".$donnees31['float1att']."','".$donnees31['float2att']."','".$donnees31['float3att']."','".$donnees31['float0att']."','".$donnees31['float5att']."','".$donnees31['avionatt']."','".$donnees31['eclairatt']."',
'$a2','".$donnees98['recherche']."','".$donnees98['pingouin']."','".$donnees98['guerrier']."','".$donnees98['float1']."','".$donnees98['float2']."','".$donnees98['float3']."','".$donnees98['float0']."','".$donnees98['float5']."','".$donnees98['avion']."','".$donnees98['eclair']."','$a2','$a3')") or die(mysql_error()); //29 a inserer
mysql_query("DELETE FROM attaque WHERE timestampfin = '$a3' AND pseudoatt = '$a1' AND pseudodef = '$a2'") or die(mysql_error());

}

}
}
?>



...La vie n'est qu'un long parcours d'épreuves...

9 réponses

  1. C'est bien gentil tout ça mais tu peux peut-être être plus précis... Quel est ton erreur? A quel endroit?
    1. Je n'ai pas de message d'erreur mais rien ne s'enregistre dans la base de données comme prévu donc je pense que cela vient de mes requêtes SQL mais je vois pas car en plus les mysql_error ne m'indique rien...
    2. Si tu n'as pas d'erreur c'est que la requête s'exécute mais que le résultat n'est pas celui attendu. A la place d'exécuter tes requêtes tu peux les afficher à l'écran pour voir si elles sont correctes et si si les valeurs à insérer ou mettre à jour sont bien récupérées...
    3. Comment les afficher a l'ecran ??
    4. echo $nomdetarequete ;
    5. Enfin dans ton cas tu peux remplacer les mysql_query par un echo
  2. avant de corriger les erreurs, il faudrait que tu optimises ton code ...

    exemple à la place de :
    if($donnees98['recherche'] < 10 )
    {
    $b1 = $donnees98['recherche'] - 1;
    $b2 = $donnees99['recherche'] + 1;
    $b3 = $donnees99['Argent'] + 10000000;
    }
    elseif($donnees98['recherche'] < 20 )
    {
    $b1 = $donnees98['recherche'] - 2;
    $b2 = $donnees99['recherche'] + 2;
    $b3 = $donnees99['Argent'] + 20000000;
    }
    ....


    tu mets :

    $b1 = $donnees98['recherche'] - ($donnees98['recherche']/10);
    $b2 = $donnees99['recherche'] + ($donnees98['recherche']/10);
    $b3 = $donnees99['Argent'] + ($donnees98['recherche']*10000000);


    ensuite, tes requetes doivent être optimisé, il y en a beaucoup trop
    1. Beh je vois pas en quoi tu optimises mon code la... Mais merci du conseil je vais m'en occuper.
      1. mysql_query("UPDATE qgjoueur SET recherche = '$b1 WHERE pseudo = '$a1'") or die(mysql_error()); Il te manque un ' derriere $b1
        1. Merci je viens de tous les corriger ^^
      2. tout ce qui se repete dans un code n'est pas optimisé ...

        tu fais un if ...elseif ... elseif infinissable alors que tu peux le faire en 1 fois
        1. Ce que tu lui propose n'est pas exactement la même chose puisque lui agit par paliers alors que toi tu uniformise le tout...
          1. Voila Breub62 a compris le seul optimisation possible a ca est de faire un switch...
            1. exact çà ne marcherais plus pareil, dans ce cas en effet un switch est plus approprié