Posez votre question Signaler

Data truncated for column at row 1

jean - Dernière réponse le 20 avril 2009 à 17:57
Bonjour,
J'utilise phpMyAdmin Version: 3.1.1
j'ai une erreur au moment de l'envoie d'une requete, j'ai un tableau à envoyer avec des radio boutons que j'ai déclaré en ENUM dans ma BDD :
( Champs : Actif / Type : enum('Oui','Non') )
le problème viens apparement d'une ligne aoutée au tableau via la commande:
'<INPUT TYPE="radio" name="Actif['+numero+']" id="Actif['+numero+']" value="Oui" checked>Oui<INPUT TYPE="radio" name="Actif['+numero+']" id="Actif['+numero+']" value="Non">Non';
croyez vous qu'il ne comprend pas les ['+numero+']? cela marche pour le reste du tableau...
et j'obtiens ce message d'erreur :
Data truncated for column 'Actif' at row 1
après de multiples recherches, j'ai vérifié et il faut bien un enum pour les radio bouton.
Je ne sais plus quoi faire.
Merci
Lire la suite 

Data truncated for column at row 1 »

9 réponses
Réponse
+0
moins plus
personne ne sait? :(
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

Si le code que tu donnes est dans du javascript, le + semble correct
La problème se situe probablement au niveau du traitement du formulaire, il faudrait voir le code pour vérifier comment tu récupères les valeurs de Actif[1], Actif[2] etc.. et comment tu les insères dans la base
Au passage il n'y a absolument aucune obligation d'utiliser un type énuméré pour des boutons radios. Surtout quand ils ne peuvent prendre que 2 valeurs ! Mais là n'est pas le problème
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Le code est en effet dans du javascript car il fait partie d'une fonction qui ajoute des lignes (avec ces radios boutons à l'intérieur). Les radio boutons du même nom (Actif) qui ne font pas partie de la fonction javascript (car ils sont sur la 1ere ligne originale du tableau) sont correctement transmis dans la BDD.

Sinon que me conseille tu comme type pour les radio boutons?
jean - 20 avril 2009 à 14:19
Pour la récupération j'ai essayé
$Actif = isset($_POST['Actif'])?$_POST['Actif']:"Oui";
ou
$Actif$_POST['Actif'];
Ajouter un commentaire
Réponse
+0
moins plus
Sinon que me conseille tu comme type pour les radio boutons? Je ne te conseille rien, à toi de voir ce qui t'arrange. C'est à toi de te faire ton avis. Il ne faut surtout pas que tu utilises un type plutôt qu'un autre seulement parce que tu as lu que c'était mieux. Il faut que tu choisisses parce que tu as compris qu'un type offrait un avantage. Et à mon avis, dans ton cas, une valeur 0/1 fait l'affaire même si l'énuméré ('Oui','Non') fait plus propre (encore que trop particulier au français)

$Actif = isset($_POST['Actif'])?$_POST['Actif']:"Oui"; . Ça a l'air d'une bonne idée, si tu veux une valeur 'Oui' par défaut. Le seul problème, c'est que ton champ s'appelle Actif[0], Actif[1] etc... et pas seulement Actif !
Ajouter un commentaire
Réponse
+0
moins plus
Au lieu de $Actif = isset($_POST['Actif'])?$_POST['Actif']:"Oui"; j'ai essayé de mettre $Actif = isset($_POST['Actif'[numero]])?$_POST['Actif'[numero]]:"Oui"; ou quelque chose de ce genre mais ca ne donne rien.

j'ai également remarqué lorsque j'affiche la valeur de mes autres champs j'obtiens "Array"... du coup je me dis que la création de la nouvelle ligne n'est pas bonne?

(la voici:)

<script language="javascript">
var numero=0;
function AddRow0(){
numero++;
var newRow = document.getElementById('tablecontrat').insertRow(-1);
var newCell = newRow.insertCell(0);
newCell.align = 'center';
newCell.innerHTML = '<input type="text" name="NumContrat"['+numero+']" id="NumContrat"['+numero+']" size="10">';
var newCell = newRow.insertCell(1);
newCell.align = 'center';
newCell.innerHTML = '<SELECT NAME="NomTypeContrat['+numero+']" id="NomTypeContrat['+numero+']"><option value="Hotline + Maj Soft">Hotline + Maj Soft</option><option value="Echange Standard">Echange Standard</option></SELECT>';
var newCell = newRow.insertCell(2);
newCell.align = 'center';
newCell.innerHTML = '<INPUT TYPE="radio" name="Actif['+numero+']" id="Actif['+numero+']" value="Oui" checked>Oui<INPUT TYPE="radio" name="Actif['+numero+']" id="Actif['+numero+']" value="Non">Non';
}

:(
Ajouter un commentaire
Réponse
+0
moins plus
Si tu obtiens "Array", c'est que tes champs sont des tableaux, ce qui est bien le cas, il n'y a rien à redire de ce côté. Mais il ne faut pas enregistrer le tableau complet en une seule fois dans la base, tu dois avoir un insert pour chaque ligne que tu as créée avec AddRow


'Actif'[numero], ça ne veut rien dire
Tu aurais dû avoir :
$Actif = isset($_POST['Actif'][$numero])?$_POST['Actif'][$numero]:"Oui";

explication
$_POST est un tableau associatif . Tu t'intéresse à l'élément Actif -> $_POST['Actif']
$_POST['Actif'] est lui même un tableau ; pour accéder à son élement $numéro tu ajoutes l'indice [$numero] -> $_POST['Actif'][$numero]
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup de ta patience, j'ai compris et en plus ça marche avec le
$Actif = isset($_POST['Actif'][$numero])?$_POST['Actif'][$numero]:"Oui";

Merci beaucoup :)
bonne soirée
Ajouter un commentaire
Réponse
+0
moins plus
De rien

Bonne soirée à toi aussi
Ajouter un commentaire
Ce document intitulé « Data truncated for column at row 1 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?