1366 Incorrect integer value
RésoluLaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
- 1366 Incorrect integer value
- Vba concatenate string and integer ✓ - Forum VB / VBA
- 1366 x 768 - Forum Téléviseurs
- Résolution 1366 x 768 sa veut dire quoi?? - Forum TV & Vidéo
- Captcha incorrect - Forum Réseaux sociaux
- Colorspace incorrect ✓ - Forum PDF
7 réponses
bonjour,
le message d'erreur n'est-il pas provoqué par une commande "INSERT"?
Bonjour hé oui tu as raison je n'avais pas essayé de faire un INSERT je m'étais axé pour faire un UPDATE sur un membre existant j'ai la même erreur je vais regarder si je trouve la faille.
Bonjour, non en fait il n'y a pas d'auto incrémente car c'est une table qui me permet d'enregistrer éventuellement un membre qui a déjà été enregistré dans le passé afin d'éviter les doublons. Pour les tous nouveaux adhérent il y a une table dédié à eux "cdc_personnes" avec id_pers en auto_incrément.
Voici la partie du code qui me permet de faire les INSERT et les UPDATE je n'ai pas mis le formulaire afin d'éviter de d'alourdir la page.
<?php $index = 2; require("libs/init.php"); require("libs/class.liste.php"); $debug = 0; // Création des listes déroulantes à utiliser // variable = new liste("nom de la liste", "nom du controle", "style"); ici, controle = "" => on laisse le nom par défaut (ex: idpers) $LDpers = new liste("libs/personnes","","oblig"); // Liste des personnes $LDpaie = new liste("libs/paiements","","oblig"); // Liste des paiements possibles $LDclas = new liste("libs/classes","","oblig"); // Liste des classes de musiciens $LDpup = new liste("libs/pupitres","",""); // Liste des pupitres par musiciens $LDpaie->onchange = "payer()"; // Lors du choix d'une cotisation indiquer le prix dans la zone de saisie $action = 'new'; // Action par défaut: nouvelle adhésion $a = !empty($_GET['a']) ? $_GET['a'] : NULL; // Récupérer dans $a la valeur du paramètre s'il y en a un $submit = !empty($_POST['submit']) ? $_POST['submit'] : NULL; $haction = !empty($_POST['haction']) ? $_POST['haction'] : NULL; $idpers = !empty($_POST['idpers']) ? $_POST['idpers'] : ''; $idpaie = !empty($_POST['idpaie']) ? $_POST['idpaie'] : ''; $idclas = !empty($_POST['idclas']) ? $_POST['idclas'] : ''; $idpup = !empty($_POST['idpup']) ? $_POST['idpup'] : ''; $annee = !empty($_POST['annee']) ? $_POST['annee'] : ''; $ddebut = !empty($_POST['ddebut']) ? dw2m($_POST['ddebut']) : ''; $dfin = !empty($_POST['dfin']) ? dw2m($_POST['dfin']) : ''; $montant = !empty($_POST['montant']) ? $_POST['montant'] : ''; $facture = !empty($_POST['facture']) ? $_POST['facture'] : ''; $oldid = !empty($_POST['oldid']) ? $_POST['oldid'] : ''; switch($a) { case 'new': $action = 'new'; break; // Si sais_adherer.php?a=new il faut ajouter case 'ls' : $action = 'list'; break; // Si sais_adherer.php?a=ls il faut lister les adhésions case 'mod': $action = 'mod'; break; // Si sais_adherer.php?a=mod il faut modifier une adhésion default : $action = 'new'; break; // Si sais_adherer.php sans paramètre, il faut ajouter par défaut } // Initialisation de variables diverses $today = date("d/m/Y"); // Date du jour (proposée par défaut) $quant = date("z"); // Quantième du jour dans l'année. NB: le 01/09/AAAAA est le 245è jour de l'année // Si l'on est avant le 01/09, l'année d'adhésion ($aadh) est l'année précédente, sinon c'est l'année courante //if($quant < 245) { $aadh = date("Y")-1; } else { $aadh = date("Y"); } $aadh = $quant < 245 ? date("Y")-1 : date("Y"); // Instructions à réaliser s'il faut ajouter un enregistrement if($submit) { switch($haction) { case 'new': // Construction de la requete d'ajout $sql = "INSERT INTO cdc_adherer (idpers, idpaie, idclas, idpup, annee, ddebut, dfin, montant, facture) VALUES(:idpers, :idpaie, :idclas, :idpup, :annee, :ddebut, :dfin, :montant, :facture)"; $datas = array('idpers' => $idpers, 'idpaie' => $idpaie, 'idclas' => $idclas, 'idpup' => $idpup, 'annee' => $annee, 'ddebut' => $ddebut, 'dfin' => $dfin, 'montant' => $montant, 'facture' => $facture); $result = executeQuery($sql,$datas); $typenr = "enregistrée"; $reqaj = $sql; $sql = "SELECT idpers,nom,prenom FROM cdc_personnes WHERE idpers = :idpers"; $datas = array('idpers' => $idpers); $result = executeQuery($sql,$datas); $donnees = $result->fetch(); $success = "<span class='success'>L'adhésion de - ".trim("$donnees->nom $donnees->prenom")." - pour l'année $annee a été $typenr.</span>"; break; case 'mod': // Constrution de la condition de modification ($oi = old ID) $oi = explode(",", $oldid); // Tableau des identifiants $condition = "WHERE (idpers='".$oi[0]."' AND idpaie='".$oi[1]."' AND idclas='".$oi[2]."' AND idpup='".$oi[3]."' AND annee='".$oi[4]."')"; // Construction de la requete de modification $sql = "UPDATE cdc_adherer SET idpers = :idpers, idpaie = :idpaie, idclas = :idclas, idpup = :idpup, annee = :annee, ddebut = :ddebut, dfin = :dfin, montant = :montant, facture = :facture $condition"; $datas = array('idpers' => $idpers, 'idpaie' => $idpaie, 'idclas' => $idclas, 'idpup' => $idpup, 'annee' => $annee, 'ddebut' => $ddebut, 'dfin' => $dfin, 'montant' => $montant, 'facture' => $facture); $result = executeQuery($sql,$datas); $typenr = "modififiée"; $reqmod = $sql; $idpers = $oi[0]; // Personne initiale modifiée $sql = "SELECT idpers,nom,prenom FROM cdc_personnes WHERE idpers = :idpers"; $datas = array('idpers' => $idpers); $result = executeQuery($sql,$datas); $donnees = $result->fetch(); $success = "<span class='success'>L'adhésion de - ".trim("$donnees->nom $donnees->prenom")." - pour l'année $annee a été $typenr.</span>"; break; } } // Diverses initialisation selon l'action à accomplir switch($action) { case 'new': // Si appel avec sais_adherer.php?a=new $title = "Saisie d'une Adhésion"; // Mot à écrire dans le titre $btsub = "Enregistrer"; // Mot à écrire sur le bouton submit $idpers = ""; // Personne à choisir $idpaie = ""; // Paiement à choisir $idclas = ""; // Classe à choisir $idpup = ""; // Pupitre à choisir $annee = $aadh; // Année d'adhésion par défaut (calculée plus haut) $ddebut = $today; // Date du jour (calculée plus haut) $dfin = "31/08/".($aadh+1); // Date de fin d'adhésion (calculée au 31/08/AAAA) $montant = ""; $facture = ""; break; case 'list': // Si appel avec sais_adherer.php?a=ls $title = "Liste des Adhésions"; break; case 'mod': // Si appel avec sais_adherer.php?a=mod&idpers=57&idpaie=1&idclas=1&idpup=7 $title = "Modification d'une Adhésion"; $btsub = "Modifier"; // Récupérer l'identifiant de la relation $idpers = $_GET['idpers']; // Récupérer l'identifiant de la personne $idpaie = $_GET['idpaie']; // Récupérer l'identifiant du paiement $idclas = $_GET['idclas']; // Récupérer l'identifiant de la classe $idpup = $_GET['idpup']; // Récupérer l'identifiant du pupitre $annee = $_GET['annee']; // Récupérer l'année d'adhésion $oldid = $_GET['oldid']; // Récupérer l'ancien identifiant (l'identifiant original) // requete pour aller chercher l'enregistrement dans cdc_Adherer $sql = "SELECT * FROM cdc_adherer WHERE idpers = :idpers AND idpaie = :idpaie AND idclas = :idclas AND idpup = :idpup AND annee = :annee"; $datas = array('idpers' => $idpers, 'idpaie' => $idpaie, 'idclas' => $idclas, 'idpup' => $idpup, 'annee' => $annee); $result = executeQuery($sql,$datas); $donnees = $result->fetch(); // Récupérer les autres valeurs $aadh = $annee; $ddebut = dm2w($donnees->ddebut); $dfin = dm2w($donnees->dfin); $montant = $donnees->montant; $facture = $donnees->facture; break; } ?>
et donc lors d'un INSERT
Erreur ! SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'idpers' at row 1
Je vous remercie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionOui j'ai vu ou cela ne tourne pas rond je vais essayé de voir si j'arrive à résoudre ce problème. Il y a bien une valeur qui reste vide alors qu'elle ne devrait pas. C'est une valeur qui devrait être pré remplie.
Bonjour, malheureusement je n'ai pas trouvé la solution à mon problème. En effet j'ai un code PHP pour écrire un tableau javascript qui contiendra les tarifs des cotisations pour présaisies. Lorsque je sélectionne une valeur d'une liste la valeur des cotisations devrait être pré saisie malheureusement elle reste vide. Je vous remercie de votre aide.
<script language="javascript" type="text/javascript"> <?php $instr = "var cotis = new Array('0'"; // Début de l'initialisation de la variable tableau javascript // requete pour aller chercher les autres valeurs et finir le tableau $sql = "SELECT montant FROM cdc_paiements ORDER BY idpaie"; $result = executeQuery($sql); while ($donnees = $result->fetch()) { $instr .= ", '".$result->montant."'"; } $instr .= ")"; echo $instr; // donne => var cotis = new Array('0', '5.00', '150.00', '0.00'); ?> </script>
Mais je pense que mon problème vient du fichier "class.liste.php" notamment de la fonction write mais j'en suis pas certain non plus. Cette fonction dont tu m'a résolu d'autres soucis concernant mes listes déroulantes et peut-être que c'est lié?
function write($indice="",$text=0) { $champs = explode(",",$this->champs); $idctrl = $champs[0]; if($this->ctrlname) { $idctrl = $this->ctrlname; } $style = !empty($this->style) ? " class='".$this->style."'": ""; $onchange = !empty($this->onchange) ? " onchange='javascript:".$this->onchange."' ": ""; if(!empty($this->sql)) { $req = executeQuery($this->sql); $resultat = $req->fetchAll(); //var_dump(debug_backtrace()); } else { echo "Erreur ! La requête est vide !"; $this->debug(); } $this->nbrecs = !empty($resultat) ? count($resultat) : 0; $textonly = $text && $indice ? 1 : 0; if(!$textonly) { echo "<select name=\"".$idctrl."\"$this->option".$style.$onchange.">"; if(!$this->option) { if($this->texte) { echo "<option value=\"null\">$this->texte"; } } } if(!empty($resultat)) { foreach($resultat as $donnees) { if (empty($indice)) { $idnum = 1; $thisrec = 0; } else { $indice = !empty($indice) ? intVal($indice) : 0 ; //Convertir une chaîne en un entier. $idnum = ($indice/1) ? 0 : 1; $thisrec = $indice == $donnees->{$champs[$idnum]} ? 1 : 0 ; } if (count($champs) > 2) { $c1 = !empty($champs[1]) ? ($champs[1]) : NULL; $texte = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; $n = 2; if($textonly && $thisrec) { $buffer = $texte; } while(count($champs) > $n) { $cn = !empty($champs[$n]) ? ($champs[$n]) : NULL; if($textonly && $thisrec) { $buffer .= !empty($cn) && !empty($donnees->$cn) ? $donnees->$cn : ""; $n++; } else { $texte .= !empty($cn) && !empty($donnees->$cn) ? " ". $donnees->$cn : ""; $n++; } } } else { $c1 = !empty($champs[1]) ? ($champs[1]) : NULL; if($textonly && $thisrec) { $buffer = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; } else { $texte = !empty($c1) && !empty($donnees->$c1) ? $donnees->$c1 : ""; } } if($this->tronque) { $lg = $this->tronque-9; // 9 = longueur de "... / ..." if(($lg % 2) != 0) { $lg++; } if(strlen($texte) > $lg) { $texte = substr($texte,0,$lg/2) . "... / ..." . substr($texte,strlen($texte)-($lg/2),$lg/2); } if(strlen($buffer) > $lg) { $buffer = substr($buffer,0,$lg/2) . "... / ..." . substr($buffer,strlen($buffer)-($lg/2),$lg/2); } } if(!$textonly) { echo "<option value=\"".$donnees->{$champs[0]}."\""; if($thisrec) { echo " selected"; } echo ">".$texte; } } } if($textonly) { echo $buffer; } else { echo "</select>\n"; } }
Là comme ça, je ne vois pas le rapport avec le souci initial de cette question...
Avant tout, il faudrait déterminer si le message d'erreur apparaît lorsque tu es dans le car d'un insert ou dans le cas d'un update (ou les deux ?) ?
Ensuite, il faut essayer de comprendre pourquoi cette variable est vide (idpers).
Pour ça, il faudrait regarder le code source généré de ta page afin de voir si la variable en question est bien présente dans le formulaire que tu submit.
(N'hésite pas à nous partager le code dource du formulaire (code source de la page générée)