JeuWeb - Crée ton jeu par navigateur
[réglé] insérer donnée dans un champ nombre - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [réglé] insérer donnée dans un champ nombre (/showthread.php?tid=595)

Pages : 1 2


[réglé] insérer donnée dans un champ nombre - Michu - 03-01-2007

Ok je l'accorde on comprend pas tout de suite le sujet avec mon titre alors j'explique :

j'ai une table dans ma BDD de ce type :

[Image: bdd.bmp]

Cette table s'appelle tete.

a l'inscription d'un joueur je souhaite remplir les deux premières cases de cette table avec l'id du joueur et un 1 les autres champs seront a zéro.

j'utilise cette requête mais rien ne ce passe :

Code PHP :
<?php 
mysql_query
("INSERT INTO tete (id,1) VALUES ('$idjoueur','1')")or die(mysql_error());

on m'affiche cette erreur :

Erreur de syntaxe près de '1) VALUES ('29','1')' à la ligne 1

or la requête précedent celle ci marche impecablement :

Code PHP :
<?php 
mysql_query
("INSERT INTO wearwear (id,tete,torse,jambes,pieds) VALUES ('$idjoueur','0','0','0','0')")or die(mysql_error());

quelqu'un saurait comment faire ?
Cela vient t-il du fait que le nom de la colonne soit un nombre ?


RE: insérer donnée dans un champ nombre - nemesis_elite - 03-01-2007

Bonjour,

Le problème vient peut etre du fait qu'il faut marquer tous les champs de la table
comme ça :
Code PHP :
<?php 
mysql_query
('INSERT INTO tete (id, 1, 2, 3, 4, 5) VALUES ('.$idjoueur.',"1", "", "", "", "")')or die(mysql_error());

Essaye avec cette requête et dis moi ton résultat.


RE: insérer donnée dans un champ nombre - Maegia - 03-01-2007

Le problème ne viendrait-il pas du fait, plutôt, qu'on ne peut utiliser de nombre comme nom de colonne ? Ça expliquerait pourquoi ta deuxième requête fonctionne très bien ! Wink


RE: insérer donnée dans un champ nombre - Plume - 03-01-2007

Il est sûr que ça me perturbe un peu. Mais quelque part si la création de ta table s'est bien faite, peut être que le soucis ne vient pas de là. Par prudence, fais un test en changeant le nom de tes champs par quelque chose qui ne commence pas par un chiffre mais par un caractère aplhabétique.


RE: insérer donnée dans un champ nombre - Roworll - 03-01-2007

Les champs de la base de donnée devraient être entourés par des ` (le caractère de l'accent grâve) de manière à ce que le moteur les considère bien comme des colonnes et pas comme autre chose.

Code PHP :
<?php 
mysql_query
("INSERT INTO tete (`id`,`1`) VALUES ('$idjoueur','1')") or die(mysql_error());
ou pour encadrer simplement le champ 'spécial'
Code PHP :
<?php 
mysql_query
("INSERT INTO tete (id,`1`) VALUES ('$idjoueur','1')") or die(mysql_error());

C'est un système qui existe dans de nombreux moteurs de base de données. Il est possible ainsi d'avoir des noms de champ exotique et de les exploiter en les délimitants avec des caractères propres au moteur.

Sous SQL Server par exemple, il est possible d'avoir des noms de champs exotique (comme type ou date qui sont des noms réservés ou ma colonne qui contient un espace en plaçant [ et ] autour du champ (select [ma colonne], [type], my_field from my_table)


RE: insérer donnée dans un champ nombre - gtsoul - 03-01-2007

scrogneugneu
1, 2, 3, 4, 5 sont des entiers par défaut
si tu croises un mec dans la rue et que tu lui demandes "c'est quoi 1?"
il y a de grandes chances qu'il te réponde c'est un entier et non pas c'est le nom d'une colonne de ma table
De même que pour les mots réservés (tu essayeras de créer une colonne "case" ou "if"), il est déconseillé d'utiliser des nombres dans la création des colonnes, c'est comme pour le nommage des variables. A la limite renomme les en col1, col2, col3.
Si tu veux vraiment forcer le nommage utilise ``, cela veut dire ceci est un élément à interpréter comme une variable (en sql ca veut dire un champ) et non comme argent comptant (sinon il lit 1, le chiffre situé entre 0 et 2).

Autre chose pour le typage, pour considérer les chaines de caractères les quotes sont obligatoires ' ', sinon il considère caractère par caractère. Mais dans le cas de nombres, les ' ' n'ont pas lieu d'être.


RE: insérer donnée dans un champ nombre - Michu - 03-01-2007

C'est bon ca marche avec les accents grâves.
merci a tous

ps : je suis obligé de mettre des nombres car j'utilise une fonction qui me permet d'afficher les vettements du perso et avec des nombres c'est plus facile.

Tant que je ne trouve pas de 1 (qui signifie que le vetement est acheté), j'incrémente ou décrémente ma variable qui va alors lire sur la colonne d'a coté


RE: [réglé] insérer donnée dans un champ nombre - NicoMSEvent - 03-01-2007

j'espère que tu te comprends, parce que tes derniers mots sont plutôt flous ^^


RE: [réglé] insérer donnée dans un champ nombre - Michu - 03-01-2007

oui oui, t'inquiete pas je me comprend, enfin c'est juste pour dire que ca m'est vraiment utile d'avoir des nombres comme nom de colonne


RE: [réglé] insérer donnée dans un champ nombre - Maegia - 03-01-2007

C'est pas obligatoire... Tu peux très bien nommé tes colonnes débutant avec un "v" pour vêtement, tel que v1, v2, v3, v4 et avoir la fonction du genre :

$sql = 'SELECT v1, v2, v3, v4 FROM ...';
$req = mysql_query($sql);
$dat = mysql_fetch_assoc($req);

for ($i=0; $i<5; $i++){
$vetement = $dat['v'.$i];
etc...
}

Mais bon, si ça fonctionne avec les ``, c'est toi qui voit.