IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Donnée manquante dans une requête insert [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Donnée manquante dans une requête insert
    Bonjour à Tous,

    Soit la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    	$sql = "INSERT INTO commandes_fournisseurs (`id_fournisseur`, `date`, `statut_details`, `commentaires`, `montant_ht_brut`, `montant_ht`, `montant_tva`, `montant_ttc`, `cout_transport`) 
    	VALUES (:id_fournisseur, :date, :statut_details, :commentaires, :montant_ht_brut, :montant_ht, :montant_tva, :montant_ttc, :cout_transport)";
     
    $req = $pdo->prepare($sql);
     
    $arr = array(
    	'id_fournisseur'=>$id_four, 
    	'date'=>date('Y-m-d'), 
    	'statut_details'=>'A',
    	'commentaires'=>'Reliquat Cde '.$id_comm_orig,
    	'montant_ht_brut'=>$arr_montants[0],
    	'montant_ht'=>$arr_montants[1],
    	'montant_tva'=>$arr_montants[2], //a calculer fonction
    	'montant_ttc'=>$arr_montants[3]	,
    	'cout_transport'=>'0'
    	);
    	print_r($arr); // ici le print_r retourne un tableau complet avec toutes les données, y compris montant_ht
    	$req->execute($arr);
    Print_r du tableau $arr :

    Array
    (
    [id_fournisseur] => 24
    [date] => 2015-07-10
    [statut_details] => A
    [commentaires] => Reliquat Cde 7
    [montant_ht_brut] => 13.43
    [montant_ht] => 13.43
    [montant_tva] => 2.686
    [montant_ttc] => 16.116
    [cout_transport] => 0
    )
    Tout se passe bien, sauf le champ "montant_ht" qui reste à 0.00 alors que le tableau est complet et qu'il y a une donnée pour ce champ.Dingue !
    J'ai vérifié la structure des champs SQL, ce sont des float, les 4 champs de montants sont rigoureusement identiques.
    A force d'avoir le nez dessus, je ne vois plus rien.
    Peut-être qu'un oeil extérieur...
    Merci !

  2. #2
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Précision : j'ai trouvé une fonction qui permet d'afficher la requête en clair, à l'ancienne mode.
    La voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO commandes_fournisseurs (`id_fournisseur`, `date`, `statut_details`, `commentaires`, `montant_ht_brut`, `montant_ht`, `montant_tva`, `montant_ttc`, `cout_transport`) VALUES ('24', '2015-07-10', 'A', 'Reliquat Cde 7', 13.43, 13.43, 2.686, 16.116, '0')
    Insérée via phpMyAdmin, c'est parfait.
    Via PHP, montant_ht est à 0.00.

    La structure de la table MyIsam

    CREATE TABLE `commandes_fournisseurs` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `id_fournisseur` int(11) NOT NULL DEFAULT '0',
    `date` date DEFAULT NULL,
    `statut_details` enum('A','R','L') DEFAULT 'A',
    `commentaires` text,
    `montant_ht_brut` float(8,2) NOT NULL,
    `montant_ht` float(8,2) NOT NULL,
    `montant_tva` float(8,2) NOT NULL,
    `montant_ttc` float(8,2) NOT NULL,
    `paiement` varchar(25) NOT NULL DEFAULT '',
    `cout_transport` float(6,2) DEFAULT NULL)
    Quelle est cette sorcellerie ?

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ton code fonctionne chez moi (à part qu'il manque la clef primaire)

    Si tu écris les valeurs manuellement ça fonctionne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $arr = array(
    	'id_fournisseur'=>24, 
    	'date'=>date('Y-m-d'), 
    	'statut_details'=>'A',
    	'commentaires'=>'Reliquat Cde 7',
    	'montant_ht_brut'=>13.43,
    	'montant_ht'=>13.43,
    	'montant_tva'=>2.686,
    	'montant_ttc'=>16.116,
    	'cout_transport'=>'0'
    	);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Non, c'est pareil, la colonne montant_ht ne se remplit pas si je mets le tableau avec les valeurs en dur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $arr = array(
    	'id_fournisseur'=>24, 
    	'date'=>date('Y-m-d'), 
    	'statut_details'=>'A',
    	'commentaires'=>'Reliquat Cde 7',
    	'montant_ht_brut'=>13.43,
    	'montant_ht'=>13.43,
    	'montant_tva'=>2.686,
    	'montant_ttc'=>16.116,
    	'cout_transport'=>'0'
    	);

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    id est bien une clef primaire dans ta table ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Oui, voici la structure complète de la table :

    CREATE TABLE IF NOT EXISTS `commandes_fournisseurs` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `id_fournisseur` int(11) NOT NULL DEFAULT '0',
    `date` date DEFAULT NULL,
    `statut_details` enum('A','R','L') DEFAULT 'A',
    `commentaires` text,
    `montant_ht_brut` float(8,2) NOT NULL,
    `montant_ht` float(8,2) NOT NULL,
    `montant_tva` float(8,2) NOT NULL,
    `montant_ttc` float(8,2) NOT NULL,
    `paiement` varchar(25) NOT NULL DEFAULT '',
    `cout_transport` float(6,2) DEFAULT NULL,
    `ht_recu` float(8,2) NOT NULL,
    `ttc_recu` float(8,2) NOT NULL,
    `tva_recu` float(8,2) NOT NULL,
    `transport_recu` float(6,2) NOT NULL,
    `remise` int(10) NOT NULL DEFAULT '0',
    `date_reception` datetime DEFAULT NULL,
    `sujet_email` varchar(255) NOT NULL,
    `date_envoi_email` date NOT NULL,
    `annule_reliquat` enum('0','1') NOT NULL DEFAULT '0',
    `paye` enum('0','1') NOT NULL DEFAULT '0',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0 AUTO_INCREMENT=24 ;

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'aurais pas un trigger dans la bdd ou un UPDATE dans ton code PHP ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut

    Un update dans mon PHP...ben si, quelle buse, je suis !
    Merci de ton aide, et désolé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour trouver les données commune dans une requête
    Par Winterrage dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/02/2008, 10h14
  2. Une variable dans une requête INSERT
    Par lacombefr dans le forum Développement
    Réponses: 5
    Dernier message: 17/01/2008, 11h37
  3. Réponses: 6
    Dernier message: 30/07/2007, 15h48
  4. [Sécurité] Sécurité portable pour les données utilisées dans une requête
    Par berceker united dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/07/2006, 14h48
  5. Format de données numériques dans une requête
    Par Aurèl90 dans le forum Access
    Réponses: 1
    Dernier message: 16/11/2005, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo