[réglé] Probleme SQL, message bizard - zneman - 06-04-2007
Bon, en voulant ajouter un suivis des attaque a mon script d'attaque, je me retrouve avec un message bizard:
Citation :Column count doesn't match value count at row 1
Mon code:
Code PHP : <?php
//Ne pas oublier de mettre le session_start()
session_start();
if (isset($_SESSION['logged']) && $_SESSION['logged'] === true)
{
// fichier de connexion:
require("config.inc.php");
// connection à la BDD
mysql_connect($host, $username, $password);
mysql_select_db($bdd_name);
// Je vais chercher les sous du joueur défenseur:
$defenseur = $_GET['pseudo'];
$reponse_joueur_def = mysql_query("SELECT gald FROM membres WHERE pseudo='$defenseur'");
$gald_joueur_def = mysql_fetch_array($reponse_joueur_def);
// Je vais chercher les sous et les tours du joueur attaquant:
$reponse_joueur_attaque= mysql_query("SELECT gald, tours FROM membres WHERE pseudo='".$pseudo."'")or die (mysql_error());
$gald_joueur_attaque = mysql_fetch_array($reponse_joueur_attaque);
// je vais chercher les troupes du défenseur:
$reponse_troupes_joueur_def = mysql_query("SELECT * FROM troupes WHERE pseudo='$defenseur'");
$troupes_joueur_def = mysql_fetch_array($reponse_troupes_joueur_def);
// Je vais chercher les troupes de l'attaquant:
$reponse_troupes_joueur_attaque= mysql_query("SELECT * FROM troupes WHERE pseudo='".$pseudo."'")or die (mysql_error());
$troupes_joueur_attaque = mysql_fetch_array($reponse_troupes_joueur_attaque);
// Maintenant, je calcul l'attaque de l'attaquant:
// Je commence par l'attaque des archers:
$attaque_archers = ($troupes_joueur_attaque['archer_lege']*3)+($troupes_joueur_attaque['archer_lourd']*4)+($troupes_joueur_attaque['archer_elite']*6);
// Puis l'attaque des lanciers:
$attaque_lanciers = ($troupes_joueur_attaque['lancier_lege']*2)+($troupes_joueur_attaque['lancier_lourd']*3)+($troupes_joueur_attaque['lancier_elite']*5);
// Puis l'attaque des cavaliers:
$attaque_cavaliers = ($troupes_joueur_attaque['cavalier_lege']*2)+($troupes_joueur_attaque['cavalier_lourd']*3)+($troupes_joueur_attaque['cavalier_elite']*5);
// Enfin, le tout me donne l'attaque de l'attaquant:
$attaque_totale = $attaque_archers + $attaque_lanciers + $attaque_cavaliers;
// Maintenant, je calcul la défense du défenseur:
// Je commence par la défense des archers:
$defense_archers = ($troupes_joueur_def['archer_lege']*3)+($troupes_joueur_def['archer_lourd']*4)+($troupes_joueur_def['archer_elite']*6);
// Puis l'attaque des lanciers:
$defense_lanciers = ($troupes_joueur_def['lancier_lege']*2)+($troupes_joueur_def['lancier_lourd']*3)+($troupes_joueur_def['lancier_elite']*5);
// Puis l'attaque des cavaliers:
$defense_cavaliers = ($troupes_joueur_def['cavalier_lege']*2)+($troupes_joueur_def['cavalier_lourd']*3)+($troupes_joueur_def['cavalier_elite']*5);
// Enfin, le tout me donne l'attaque de l'attaquant:
$defense_totale = $defense_archers + $defense_lanciers + $defense_cavaliers;
// On enleve un tour a l'attaquant :P
$tours_moins_un = $gald_joueur_attaque['tours'] - 1;
mysql_query("UPDATE membres SET tours= '".$tours_moins_un."' WHERE pseudo='".$pseudo."'")or die (mysql_error());
// On met la condition IF afin de voir l'issue du combat:
if ($attaque_totale>$defense_totale)
{
// On créé une fonction "galds_en_plus" qui est egale aux galds que possede le défenseur:
$galds_en_plus = $gald_joueur_def['gald'];
// On créé une fonction qui regroupes les galds de l'attaquand plus ceux qu'il viens de gagner:
$galds_total_attaquant = $galds_en_plus + $gald_joueur_attaque['gald'];
echo 'Bien jouer '.$pseudo.'!<br />Vous gagnez et remportez '.$galds_en_plus.'<br />';
echo '<h4 align="center">Compte rendu de l\'attaque:</h4><br />';
echo '<ins>Force des lanciers de l\'attaquant:</ins> '.$attaque_lanciers.'<br />';
echo '<ins>Force des archers de l\'attaquant:</ins> '.$attaque_archers.'<br />';
echo '<ins>Force des cavaliers de l\'attaquant:</ins> '.$attaque_cavaliers.'<br />';
echo '<ins>Force totale des troupes de l\'attaquant:</ins> '.$attaque_totale.'<br />';
echo '<br /><br />';
echo '<h4 align="center">Compte rendu de la défense:</h4><br />';
echo '<ins>Défense des lanciers du défenseur:</ins> '.$defense_lanciers.'<br />';
echo '<ins>Défense des archers du défenseur:</ins> '.$defense_archers.'<br />';
echo '<ins>Défense des cavaliers du défenseur:</ins> '.$defense_cavaliers.'<br />';
echo '<ins>Défense totale des troupes du défenseur:</ins> '.$defense_totale.'<br />';
// On ajoute les galds de l'attaquant:
mysql_query("UPDATE membres SET gald= '".$galds_total_attaquant."' WHERE pseudo='".$pseudo."'")or die (mysql_error());
// On enleve les galds du défenseur:
mysql_query("UPDATE membres SET gald=0 WHERE pseudo='$defenseur'");
// On résupere le Timestamp actuel:
$timestamp = time();
// On ajoute un suivis dans la BDD:
mysql_query("INSERT INTO suivis(attaquant, defenseur, force_archers, force_lanciers, force_cavaliers, force_totale, def_archers, def_lanciers, def_totale, resultat, galds_volés, timestamp) VALUES('" . $pseudo . "', '" . $defenseur . "', '" . $attaque_archers . "', '" . $attaque_lanciers . "', '" . $attaque_cavaliers . "', '" . $attaque_totale . "', '" . $defense_archers . "', '" . $defense_lanciers . "', '" . $defense_cavaliers . "', '" . $defense_totale . "', 'attaque réussie', '" . $galds_total_attaquant . "', '" . $timestamp . "')")or die(mysql_error());
}
elseif ($attaque_totale<$defense_totale)
{
echo 'Dommage '.$pseudo.', '.$defenseur.' l\'emporte sur vous !<br />';
echo '<h4 align="center">Compte rendu de l\'attaque:</h4><br />';
echo '<ins>Force des lanciers de l\'attaquant:</ins> '.$attaque_lanciers.'<br />';
echo '<ins>Force des archers de l\'attaquant:</ins> '.$attaque_archers.'<br />';
echo '<ins>Force des cavaliers de l\'attaquant:</ins> '.$attaque_cavaliers.'<br />';
echo '<ins>Force totale des troupes de l\'attaquant:</ins> '.$attaque_totale.'<br />';
echo '<br /><br />';
echo '<h4 align="center">Compte rendu de la défense:</h4><br />';
echo '<ins>Défense des lanciers du défenseur:</ins> '.$defense_lanciers.'<br />';
echo '<ins>Défense des archers du défenseur:</ins> '.$defense_archers.'<br />';
echo '<ins>Défense des cavaliers du défenseur:</ins> '.$defense_cavaliers.'<br />';
echo '<ins>Défense totale des troupes du défenseur:</ins> '.$defense_totale.'<br />';
// On résupere le Timestamp actuel:
$timestamp = time();
// On ajoute un suivis dans la BDD:
mysql_query("INSERT INTO suivis(attaquant, defenseur, force_archers, force_lanciers, force_cavaliers, force_totale, def_archers, def_lanciers, def_totale, resultat, galds_volés, timestamp) VALUES('" . $pseudo . "', '" . $defenseur . "', '" . $attaque_archers . "', '" . $attaque_lanciers . "', '" . $attaque_cavaliers . "', '" . $attaque_totale . "', '" . $defense_archers . "', '" . $defense_lanciers . "', '" . $defense_cavaliers . "', '" . $defense_totale . "', 'attaque réussie', '0', '" . $timestamp . "')")or die(mysql_error());
}
}
else
echo 'Erreur : vous devez être connecté pour accéder à cette page !<br />
Allez <a href="index.php">ici</a> pour vous connecter.';
mysql_close();
?>
Les parties que j'ai ajouté:
Code PHP : <?php
// On résupere le Timestamp actuel:
$timestamp = time();
// On ajoute un suivis dans la BDD:
mysql_query("INSERT INTO suivis(attaquant, defenseur, force_archers, force_lanciers, force_cavaliers, force_totale, def_archers, def_lanciers, def_totale, resultat, galds_volés, timestamp) VALUES('" . $pseudo . "', '" . $defenseur . "', '" . $attaque_archers . "', '" . $attaque_lanciers . "', '" . $attaque_cavaliers . "', '" . $attaque_totale . "', '" . $defense_archers . "', '" . $defense_lanciers . "', '" . $defense_cavaliers . "', '" . $defense_totale . "', 'attaque réussie', '" . $galds_total_attaquant . "', '" . $timestamp . "')")or die(mysql_error());
Et:
Code PHP : <?php
// On résupere le Timestamp actuel:
$timestamp = time();
// On ajoute un suivis dans la BDD:
mysql_query("INSERT INTO suivis(attaquant, defenseur, force_archers, force_lanciers, force_cavaliers, force_totale, def_archers, def_lanciers, def_totale, resultat, galds_volés, timestamp) VALUES('" . $pseudo . "', '" . $defenseur . "', '" . $attaque_archers . "', '" . $attaque_lanciers . "', '" . $attaque_cavaliers . "', '" . $attaque_totale . "', '" . $defense_archers . "', '" . $defense_lanciers . "', '" . $defense_cavaliers . "', '" . $defense_totale . "', 'attaque réussie', '0', '" . $timestamp . "')")or die(mysql_error());
Citation :CREATE TABLE `suivis` (
`id` int(11) NOT NULL auto_increment,
`attaquant` varchar(255) collate latin1_general_ci NOT NULL,
`defenseur` varchar(255) collate latin1_general_ci NOT NULL,
`force_archers` bigint(8) unsigned NOT NULL,
`force_lanciers` bigint(8) unsigned NOT NULL,
`force_cavaliers` bigint(8) unsigned NOT NULL,
`force_totale` bigint(8) unsigned NOT NULL,
`def_archers` bigint(8) unsigned NOT NULL,
`def_lanciers` bigint(8) unsigned NOT NULL,
`def_cavaliers` bigint(8) unsigned NOT NULL,
`def_totale` bigint(8) unsigned NOT NULL,
`resultat` varchar(255) collate latin1_general_ci NOT NULL,
`galds_volés` bigint(8) unsigned NOT NULL,
`timestamp` bigint(20) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
Vous pouvez me dire ce que signifie ce message d'erreur SVP ?
Et si possible, pourquoi ca me le marque :heuuu:
merci d'avance :heuuu:
RE: Probleme SQL, message bizard - Roworll - 06-04-2007
Tu dois avoir le même nombre de champs de part et d'autre du VALUE
Tu spécifies 12 champs à updater et tu donnes la liste de 13 valeurs.
A mon avis, il te manque def_cavaliers devant def_totale.
RE: Probleme SQL, message bizard - zneman - 06-04-2007
ha en effet... j'avais pas vu :/ merci bien
|