Rechercher : dans
Par :

Data truncated for column at row 1

Dernière réponse le 20 avr 2009 à 17:57:01 jean, le 20 avr 2009 à 10:13:36 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.5

Meilleures réponses pour « Data truncated for column at row 1 » dans :
EDGE (Enhanced Data Rates for GSM Evolution) Voir Introduction au standard EDGE Le standard EDGE (Enhanced Data Rates for GSM Evolution.) est une évolution de la norme GSM, modifiant le type de modulation. Tout comme la norme GPRS, le standard EDGE est utilisé comme transition vers la troisième...
PhpMyAdmin - 1045- Access denied for user root@localhost VoirPhpMyAdmin - Access denied for user root’@localhost Cette astuce est destinée à ceux qui ont un problème d’ouverture de PhpMyAdmin (par exemple avec WAMP Server ou EasyPHP) avec l'erreur suivante : #1045- Access denied for user...
Duplicate entry '127' for key 1 VoirVous tentez de faire une insertion dans une table de votre base de données MySQL et vous obtenez l'erreur MySQL suivante: Duplicate entry '127' for key 1 Ceci provient très probablement du fait que la clé primaire de votre table est de type TINYINT...

1

jean, le 20 avr 2009 à 13:43:59

Personne ne sait? :(

Répondre à jean

2

le père, le 20 avr 2009 à 13:59:20

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

Répondre à le père

3

jean, le 20 avr 2009 à 14:15:36

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?

Répondre à jean

4

jean, le 20 avr 2009 à 14:19:35

Pour la récupération j'ai essayé
$Actif = isset($_POST['Actif'])?$_POST['Actif']:"Oui";
ou
$Actif$_POST['Actif'];

Répondre à jean

5

le père, le 20 avr 2009 à 15:58:54

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 !

Répondre à le père

6

jean, le 20 avr 2009 à 16:15:02

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';
}

:(

Répondre à jean

7

le père, le 20 avr 2009 à 16:50:43

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]

Répondre à le père

8

jean, le 20 avr 2009 à 17:47:47

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

Répondre à jean

9

 le père, le 20 avr 2009 à 17:57:01

De rien

Bonne soirée à toi aussi

Répondre à le père
Collection CommentÇaMarche.net