bonjour, j'ai un petit problème, je fait une page de calcul mental et j'ai un problème pour ajouter le "0" dans mysql.. En effet lorsque celui-ci est soumis dans le forrmulaire et bien le calcul ne s'ajoute pas dans mysql.
lorsqu'il n'est pas présent et bien le calcul s'ajoute normalement

voici ma table

addition.mysql

-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Sam 28 Décembre 2013 à 14:12
-- Version du serveur: 5.5.24-log
-- Version de PHP: 5.3.13

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `site3`
--

-- --------------------------------------------------------

--
-- Structure de la table `addition`
--

CREATE TABLE IF NOT EXISTS `addition` (
  `numero_calcul` int(10) NOT NULL AUTO_INCREMENT,
  `chiffre1` varchar(11) DEFAULT NULL,
  `signe1` varchar(11) NOT NULL,
  `chiffre2` varchar(11) DEFAULT NULL,
  `votresultat` varchar(11) DEFAULT NULL,
  `resultat` varchar(11) NOT NULL,
  PRIMARY KEY (`numero_calcul`),
  UNIQUE KEY `votresultat` (`votresultat`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=205 ;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Ccalcul.php

<?php

class Ccalcul {

    FUNCTION Ccalcul() {}

    // Accept votresultat

    FUNCTION acceptcalcul_1() 
        {

            $sChi1 = $GLOBALS'MySQL']->escape($_POST'n1']);
            $sSi1 = $GLOBALS'MySQL']->escape($_POST'si1']);
            $sChi2 = $GLOBALS'MySQL']->escape($_POST'n2']);
            $sVotresultat_1 = $GLOBALS'MySQL']->escape($_POST'result']);

        IF ($sChi1 && $sSi1 && $sChi2 && $sVotresultat_1)

            {

                $bRf = $GLOBALS'MySQL']->res("INSERT INTO `addition` SET 
                    `chiffre1` = '{$sChi1}',
                    `signe1` = '{$sSi1}',
                    `chiffre2` = '{$sChi2}',
                    `votresultat` = '{$sVotresultat_1}'

                    ");

            }

        }

}
$GLOBALS'Ccalcul'] = new Ccalcul();

Merci de m'éclairer

3 réponses


jeanmaki
Auteur
Réponse acceptée

Salut B-Art,

J'ai trouver la réponse sur un autre forum,

il fallait remplacer dans:

Ccalcul.php

**

if ($sChi1 && $sSi1 && $sChi2 && $sVotresultat_1)

**

par:

**

if ($sChi1 != "" && $sSi1 != "" && $sChi2 != "" && $sVotresultat_1 != "")

**

car la valeur "zéro" était reconnu comme false

il faut par la suite enlever UNIQUE_KEY dans:

addition.mysql

Salut jeanmaki,

C'est surprenant que le 0 ne s'enregistre pas dans ta base de donnée.

As-tu regarder via phpMyAdmin ce qui s'enregistrait suite à ta requète?

Je n'ai personnellement pas l'expertise permettant de résoudre ce problème par contre je sais qu'il est conseillé d'utiliser les INT au niveau de ta table pour gérer et faire des calculs avec les entiers...

Bon dèv'!

Si tu veux insérer la valeur 0 (par exemple un numéro de téléphone) dans un champs, il faut que ce dernier sois de type char, sinon le 0 ne sera pas pris en compte sur un field de type int