Data truncated for column at row 1

Fermé
jean - 20 avril 2009 à 10:13
 le père - 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
A voir également:

8 réponses

personne ne sait? :(
0
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
0
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?
0
Pour la récupération j'ai essayé
$Actif = isset($_POST['Actif'])?$_POST['Actif']:"Oui";
ou
$Actif$_POST['Actif'];
0
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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';
}

:(
0
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]
0
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
0
De rien

Bonne soirée à toi aussi
0