inserer des données dans sql

inserer des données dans sql - SQL/NoSQL - Programmation

Marsh Posté le 21-08-2004 à 16:47:52    

slt,  
jai une table sql qui est la suivante:


Champ     Type    Null   Défaut
id_membre  int(10)  Oui   NULL  
id   varchar(20)  Oui   NULL  
pseudo  varchar(20)  Oui   NULL  
passe   varchar(20)  Oui   NULL  
email   varchar(100)  Oui   NULL  
ville   varchar(200)  Oui   NULL  
titre   varchar(40)  Oui   NULL  
url   varchar(100)  Oui   NULL  
description   text  Oui   NULL  
mat1   varchar(15)  Oui   NULL  
mat2   varchar(15)  Oui   NULL  
note   char(2)  Oui   NULL


 
ma page addinfo


// On commence par vérifier si les champs sont vides
if(empty($titre) OR empty($url) OR empty($description) OR empty($mat1) OR empty($mat2) OR empty($mat2))
    {
    echo '<font color="red">Attention, aucun chanps ne peut rester vide !</font>';
    }
 
// Aucun champ n'est vide, on peut enregistrer dans la table
else      
    {
       // connexion à la base
$db = mysql_connect('sql.free.fr ', '*******', '*****')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  
 
    mysql_select_db('********',$db)  or die('Erreur de selection '.mysql_error());
     
    // on ecris la requete sql  
    $sql = "INSERT INTO membre VALUES('$titre','$url','$description','$mat1','$mat2','$note')";
     
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';
 
    mysql_close();  // on ferme la connexion
    }  
?>  


 
j'obtien un message d'erreur:

Erreur SQL !INSERT INTO membre VALUES('titre','url','description','mat1','mat2','no')
Column count doesn't match value count at row 1


 
que dois faire pour que ca marche? [:airforceone]  
 
 

Reply

Marsh Posté le 21-08-2004 à 16:47:52   

Reply

Marsh Posté le 21-08-2004 à 17:12:37    

lire n'importe quel tutoriel?

Reply

Marsh Posté le 21-08-2004 à 17:13:54    

je viens de me faire php debutant, en as tu un autre a me proposer?

Reply

Marsh Posté le 21-08-2004 à 17:16:12    

refais-le.

Reply

Marsh Posté le 21-08-2004 à 17:18:46    

aller stp, donne moi une piste :jap:

Reply

Marsh Posté le 21-08-2004 à 17:21:10    

piste: apprends à lire aussi les petits caractères.

Reply

Marsh Posté le 21-08-2004 à 17:23:05    

gizmo a écrit :

piste: apprends à lire aussi les petits caractères.

:??:  :??:

Reply

Marsh Posté le 22-08-2004 à 12:37:12    

J'ai remarqué que ton point-virgule (;) est à l'extérieur des doubles quote, essaie de décaler les (" ) après : '$note');".
Si cela ne marche toujours pas.. Le message d'erreur laisse supposer deux choses :
// on ecris la requete sql  
    $sql = "INSERT INTO membre VALUES('$titre','$url','$description','$mat1','$mat2','$note')";
 
(1) : soit tu insères plus de valeurs que tu as de colonnes.
c-à-d que tu as dans ta table MEMBRE + ou - 6 valeurs à insérer, vérifie alors le nombre de colonnes dans ta table MEMBRE le le nombre de valeurs que tu veux insérer.
(2) soit tu insères tes valeurs en ne respectant pas l'ordre et le type.
Cordialement

Reply

Marsh Posté le 22-08-2004 à 12:40:27    

merci bcq, jai trouvé, il faut mettre '' quand on n'insert rien dedans  
 
jai une table avec 12 valeurs, et je ne fais appelle qua 6 d'entre elles, il faut donc mettre insert.... '$balabal', '','', '$blalba',....

Reply

Marsh Posté le 22-08-2004 à 13:00:48    

insert into table (noms champs) values (valeurs)
 
ca te permet d'insérer dans une table sans mettre des valeurs dans tous les champs. deplus, le jour où l'odre des champs change, ce système ne plante pas, contrairement à celui que tu utilise.
 
insert into table values (valeurs) est à proscrire de tout code.

Reply

Marsh Posté le 22-08-2004 à 13:00:48   

Reply

Marsh Posté le 22-08-2004 à 13:36:27    

Arjuna a écrit :

insert into table (noms champs) values (valeurs)
 
ca te permet d'insérer dans une table sans mettre des valeurs dans tous les champs. deplus, le jour où l'odre des champs change, ce système ne plante pas, contrairement à celui que tu utilise.
 
insert into table values (valeurs) est à proscrire de tout code.


 
 :jap:  :jap:  :jap:

Reply

Marsh Posté le 22-08-2004 à 14:24:42    

Il y a aussi la syntaxe :

INSERT INTO TABLE
SET toto='titi',
toto2='titi2;


que j'aime bien car pour faire ensuite une requête update, il suffit juste de modifier la première ligne et d'ajouter un WHERE, et non de se retaper une requête entière...


Message édité par pascal_ le 22-08-2004 à 14:25:02
Reply

Marsh Posté le 22-08-2004 à 15:32:13    

pascal_ a écrit :

Il y a aussi la syntaxe :

INSERT INTO TABLE
SET toto='titi',
toto2='titi2;


que j'aime bien car pour faire ensuite une requête update, il suffit juste de modifier la première ligne et d'ajouter un WHERE, et non de se retaper une requête entière...


sauf que je ne suis pas sûr que ce soit très standard comme syntaxe.
 
à mon avis, c'est à proscrire dans le cas d'une appli type site web, qui peut, pour diverses raisons, changer de base de données (contraintes d'hébergement, montée en charge, ajout de fonctionnalités nécessitant un autre SGBD, changement de plateforme, etc.)

Reply

Marsh Posté le 22-08-2004 à 16:39:49    

Arjuna a écrit :

sauf que je ne suis pas sûr que ce soit très standard comme syntaxe.
 
à mon avis, c'est à proscrire dans le cas d'une appli type site web, qui peut, pour diverses raisons, changer de base de données (contraintes d'hébergement, montée en charge, ajout de fonctionnalités nécessitant un autre SGBD, changement de plateforme, etc.)


 
bon ben si c'est pas standard  [:jofission]  
 
HS : qqun à un lien vers le standard SQL ?

Reply

Marsh Posté le 22-08-2004 à 17:19:12    

J'ai pas lu, mais à priori ça doit être pas mal :
 
http://webapp.progress.com:6336/dy [...] __BookView

Reply

Marsh Posté le 22-08-2004 à 17:20:11    

Reply

Marsh Posté le 22-08-2004 à 18:05:31    

Merci.
 
J'ai trouvé un SQL validator, pour sql92 sql99 & sql2003 (j'était même pas au courant que c'était sortit ça [:figti] ) : http://developer.mimer.se/validator/index.htm

Reply

Marsh Posté le 22-08-2004 à 18:34:19    

reste en SQL92, parceque déjà qu'il doit y avoir 2 SGBD à tout casser qui sont 100% compatible avec, j'imagine même pas les autres :D

Reply

Marsh Posté le 22-08-2004 à 18:37:58    

mon post a été intéressant je vois :jap:

Reply

Sujets relatifs:

Leave a Replay

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