[MYSQL] requête mysql foireuse

requête mysql foireuse [MYSQL] - Programmation

Marsh Posté le 30-05-2001 à 23:55:43    

Commme vous avez étés si bons la dernière fois... je vous redemande de l'aide :) :)
 
je fais ceci :
 
      $result = mysql_query("SELECT nom_mat, valid, nom_sscat, nom_fab FROM materiel, sscategories, fabricants where fabricants.id_fab = materiels.id_fab and where sscategories.id_sscat = materiels.id_sscat ORDER BY materiels.id_mat", $db);
 
mais visiblement $result renvoie false.... à mon avis ma requête est foireuse... sûrement un pb de syntaxe... mais je vois pas où :) :)
 
un ptit coup d'main serait pas de refus :)

Reply

Marsh Posté le 30-05-2001 à 23:55:43   

Reply

Marsh Posté le 31-05-2001 à 00:35:05    

Tu as écrit deux fois "WHERE"
 
->$result = mysql_query("SELECT nom_mat, valid, nom_sscat, nom_fab FROM materiel, sscategories, fabricants WHERE fabricants.id_fab = materiels.id_fab AND sscategories.id_sscat = materiels.id_sscat ORDER BY materiels.id_mat", $db);  
 
@+

Reply

Marsh Posté le 31-05-2001 à 00:52:00    

snif :(
 
on va mettre ça sur le compte de la fatigue ;)
 
merci :) :) :)

Reply

Marsh Posté le 31-05-2001 à 01:35:21    

ça marche pas... je pige plus rien là.... voici de quoi vous faire une idée.... ça peut aider....
 
http://chevalier.jeanmarc.free.fr/elcap/tables1.gif

Reply

Marsh Posté le 31-05-2001 à 01:41:00    

cherchez pas.....; j'avais oublié un s sur le nom d'une table....... halalala fatigue quand tu nous tiens.... bref, j'arrête pour ce soir... dodo :)

Reply

Marsh Posté le 31-05-2001 à 09:46:13    

Bon, là je suis réveillé, ça marche...
 
Mais ! car il y a toujours un mais :):):) je n'arrive pas à ajouter un enregistrement à ma table avec phpmyadmin !!!
j'ai cette erreur, que je ne comprends pas d'un iota...
 
"Duplicate entry '' for key 2"
 
Elcap

Reply

Marsh Posté le 31-05-2001 à 09:53:03    

bah en gros t'essaies d'inserer une ligne ds ta table avec une clé primaire qui existe deja !

Reply

Marsh Posté le 31-05-2001 à 10:12:10    

c'est bizarre... ma clé primaire c'est :
id_mat qui est en auto_increment
 
je n'ai qu'un enregistrement dans cette base... id_mat est à 1
quand j'insère un nouvel enregistrement, je ne mets rien..... pour qu'il le passe à 2.... et si j'essaye en forcant (cad en mettant 2 voire 3) c'est pareil...
 
:(:(:(:(:(

Reply

Marsh Posté le 31-05-2001 à 10:19:09    

ah ? heu.. joker !
 
la structure de ta table materiels et la requete que t'essaie de faire c koi (en sql of course)

 

[edit]--Message édité par __Lolo__--[/edit]

Reply

Marsh Posté le 31-05-2001 à 10:21:50    

pour la structure, regarde un peu plus haut dans ce thread... j'ai mis une image :)
 
pour la requête la voici :
 
INSERT INTO materiels VALUES( '', '8', '2', 'A902MT', '0000-00-00', 'http://www.iiyama.fr/documents/Caracteristiques%20Techniques/A902MT_CARACT.htm', '', '', '90', 'o');
 
:)

Reply

Marsh Posté le 31-05-2001 à 10:21:50   

Reply

Marsh Posté le 31-05-2001 à 10:33:54    

2 points bizarres :
 
1- "Duplicate entry '' for key 2" : manifestement il essaie d'insérer une valeur vide ('') dans la table. Est-ce que tu es sûr d'avoir activé l'insertion auto de valeur pour la colonne ?
 
2- "Duplicate entry '' for key 2" : key 2 fait penser à une clé composée. N'y aurait-il pas une deuxième colonne entrant dans la composition de la clé primaire ?

Reply

Marsh Posté le 31-05-2001 à 10:37:38    

elcap a écrit a écrit :

pour la structure, regarde un peu plus haut dans ce thread... j'ai mis une image :)
 
pour la requête la voici :
 
INSERT INTO materiels VALUES( '', '8', '2', 'A902MT', '0000-00-00', 'http://www.iiyama.fr/documents/Caracteristiques%20Techniques/A902MT_CARACT.htm', '', '', '90', 'o');
 
:)




 
essaye ca :  

Code :
  1. INSERT INTO materiels (id_sscat, id_fab, nom_mat, date_fab, fiche_web, achat_web1, chem_img, note_glob, valid) VALUES( '8', '2', 'A902MT', '0000-00-00', 'http://www.iiyama.fr/documents/Caracteristiques%20Techniques/A902MT_CARACT.htm', '', '', '90', 'o');

Reply

Marsh Posté le 31-05-2001 à 10:38:20    

ds ta requete t'essaie de mettre une chaine vide comme clé primaire et ca lui plait pas, forcément...

Reply

Marsh Posté le 31-05-2001 à 10:41:37    

__Lolo__ a écrit a écrit :

 
 
essaye ca :  

Code :
  1. INSERT INTO materiels (id_sscat, id_fab, nom_mat, date_fab, fiche_web, achat_web1, chem_img, note_glob, valid) VALUES( '8', '2', 'A902MT', '0000-00-00', 'http://www.iiyama.fr/documents/Caracteristiques%20Techniques/A902MT_CARACT.htm', '', '', '90', 'o');






 
C'est exactement la même chose, "elcap" n'a pas besoin de définir les champs pour son insertion puisqu'il en respecte l'ordre et qu'il les insère tous.

Reply

Marsh Posté le 31-05-2001 à 10:42:45    

si tu regardes bien g viré le 1er champ justement ... (la clé primaire est en auto_increment dc pas le droit de l'inserer a la main)

Reply

Marsh Posté le 31-05-2001 à 10:48:15    

__Lolo__ a écrit a écrit :

si tu regardes bien g viré le 1er champ justement ... (la clé primaire est en auto_increment dc pas le droit de l'inserer a la main)




 
Exact, j'avais pas vu.

Reply

Marsh Posté le 31-05-2001 à 10:52:02    

_lolo_-> Par contre, tu peux très bien insérer un CLE dont la propriété est auto_icrement si tu lui donne rien ('') comme valeur...

Reply

Marsh Posté le 31-05-2001 à 10:55:05    

irulan a écrit a écrit :

2 points bizarres :
 
1- "Duplicate entry '' for key 2" : manifestement il essaie d'insérer une valeur vide ('') dans la table. Est-ce que tu es sûr d'avoir activé l'insertion auto de valeur pour la colonne ?
 
2- "Duplicate entry '' for key 2" : key 2 fait penser à une clé composée. N'y aurait-il pas une deuxième colonne entrant dans la composition de la clé primaire ?




 
voici ma table :
Champ Type Attributes Null Defaut Extra
id_mat  mediumint(255)    Non    auto_increment
id_sscat  smallint(255)    Non  0
id_fab  smallint(255)    Non  0
nom_mat  varchar(255)    Non
date_fab  date    Oui
fiche_web  varchar(255)    Oui
achat_web1  varchar(255)    Oui
chem_img  varchar(255)    Oui
note_glob  varchar(255)    Non
valid  enum('o','n')    Non  n
 
j'ai donc bien l'auto-incrémentation...
et le pire c'est que l'insertion du premier enregistrement s'est bien passée... je l'aurai donc vu si j'vais glissé une clé composite...

Reply

Marsh Posté le 31-05-2001 à 10:56:02    

g pas mysql sous la main dc je peux pas tester mais il me semblait que son message d'erreur venait de la justement...
 
elcap tu pourrais donner la syntaxe de ton create table plutot que ton image ca nous aiderait peut-etre ?

Reply

Marsh Posté le 31-05-2001 à 10:56:41    

fly lm a écrit a écrit :

_lolo_-> Par contre, tu peux très bien insérer un CLE dont la propriété est auto_icrement si tu lui donne rien ('') comme valeur...




 
je confirme... on peut lui donner une chaine vide en auto-incrément... ça marche pour toutes mes autres tables...
 
vous noterez que j'essaye avec une requête mais que l'interface phpmyadmin donne la même erreur.....

Reply

Marsh Posté le 31-05-2001 à 10:57:32    

__Lolo__ a écrit a écrit :

g pas mysql sous la main dc je peux pas tester mais il me semblait que son message d'erreur venait de la justement...
 
elcap tu pourrais donner la syntaxe de ton create table plutot que ton image ca nous aiderait peut-etre ?




 
voici :
 
CREATE TABLE materiels (
   id_mat mediumint(255) NOT NULL auto_increment,
   id_sscat smallint(255) NOT NULL,
   id_fab smallint(255) NOT NULL,
   nom_mat varchar(255) NOT NULL,
   date_fab date,
   fiche_web varchar(255),
   achat_web1 varchar(255),
   chem_img varchar(255),
   note_glob varchar(255) NOT NULL,
   valid enum('o','n') DEFAULT 'n' NOT NULL,
   PRIMARY KEY (id_mat),
   UNIQUE achat_web1 (achat_web1),
   UNIQUE nom_mat (nom_mat),
   UNIQUE id_mat (id_mat)
);

Reply

Marsh Posté le 31-05-2001 à 11:05:13    

La structure de ta table est mauvaise.
 
[Tu ne peux pas avoir un MEDIUMINT ou un SMALLINT dont la taille est 255. Pour MEDIUMINT la taille en octet est de 3 et pour SMALLINT de 2. Le problème ne vient peut-être pas de là, mais c'est déjà une erreur de structure de table...]
= CONNERIE voir mon dernier POST

 

[edit]--Message édité par fly lm--[/edit]

Reply

Marsh Posté le 31-05-2001 à 11:11:04    

je veux bien mais pourquoi ne me met-il pas uine erreur à la création de la table ??? la première fois je m'étais franchement planté en mettant 2500... là il m'a sorti une erreur en me disant que ça ne pouvait pas dépasser 255....

Reply

Marsh Posté le 31-05-2001 à 11:19:31    

Si tu reprends le message d'erreur "Duplicate entry '' for key 2" , est-ce que key 2 ne signifie pas que la contrainte d'unicité que tu as posé sur achat_web1 est violée ?
 
Vires les contrainte d'unicité pour voir ?

Reply

Marsh Posté le 31-05-2001 à 11:22:35    

irulan > la tu m'as grillé, c exactement ce que j'allais dire

Reply

Marsh Posté le 31-05-2001 à 11:26:05    

[Ouaih, mais je t'assure que 255 pour un MEDIUMINT ou un SMALLINT, cela n'a pas de sens. Si cela fonctionne (j'en doute, même s'il ne te retourne pas d'erreur), cela voudrait dire que MySQL t'alloue 255 octets pour un entier qui selon le cas est de 2 ou 3 octets. Dans ce cas tu perdrais inutilement de la place.]
=CONNERIE VOIR MON DERNIER POST
 
La suite c'est bon :
 
TINYINT(4) -128 à  127 -> 1 octet
SMALLINT(6) -32 768 à  32 767 -> 2 octets
MEDIUM(9) -8 388 608 à 8 388 607 -> 3 octets

 

[edit]--Message édité par fly lm--[/edit]

Reply

Marsh Posté le 31-05-2001 à 11:27:24    

__Lolo__ a écrit a écrit :

irulan > la tu m'as grillé, c exactement ce que j'allais dire




 
 :bounce:  :sol:  
 :jap:

Reply

Marsh Posté le 31-05-2001 à 11:40:45    

Là je me suis même embrouillé moi même avec ces histoire d'octets. En fait, ce que tu as entre paranthèse derrière le SMALLINT(M) par exemple correspond à la taille de l'affichage (pas à un nombre d'octets). Oups c'est plus claire, tu ne peux pas dépasser 4 pour un TINNYINT (1 octet), 6 pour un SMALLINT (2 octets) ET 9 pour le MEDIUMINT (3 octets).
 
Je ne sais pas si c'est plus claire ???

Reply

Marsh Posté le 31-05-2001 à 11:42:38    

Irulan, lolo... vous êtes nuls de pas l'avoir vu plus tôt  :D  :D  :D  
 
et moi encore plus d'avoir mis une contrainte pareille là-dessus... et de m'être fait avoir... c'est dramatique  :D  :D  :D  
 
pour être sûr, j'ai pas viré la contrainte d'unicité, j'ai juste inséré mon truc en ne laissant pas le champs vide, avec une chaine kelkonke... ben ça marche, évidemment....
 
donc merci  :D  :D  :D  :D  
 :love:  :love:  :love:  :love:  :love:

Reply

Marsh Posté le 31-05-2001 à 11:43:48    

On tachera de faire mieux la prochaine fois :D
A ton service :jap:

Reply

Marsh Posté le 31-05-2001 à 11:44:33    

fly, je crois que j'ai mal compris le fonctionnement... avant de poser des milliards de questions, je vais potasser la doc et je reviendrais avec un nouveau message si besoin :)
 
merci :)

Reply

Marsh Posté le 31-05-2001 à 11:45:38    

irulan a écrit a écrit :

On tachera de faire mieux la prochaine fois :D
A ton service :jap:




 
non mais c'est vrai, merci merci  :sol:  :sol:  :sol:  :sol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed