Ajout de ligne a partir d'un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajout de ligne a partir d'un formulaire

par Invité » 28 déc. 2005, 22:21

oui nows j'aie d'autre probleme mais c'est sur une autre page mais bon il faut que je me creuse un peut la tete lol

par Truc » 28 déc. 2005, 18:01

C'est Résolu ?

par dam-s » 28 déc. 2005, 15:30

c'est good merci ......

par Truc » 28 déc. 2005, 15:28

l'erreur vient de la construction, il ne faut pas ajouter les valeurs dans le meme enregistrement mais en crée un par valeur, du style:

Code : Tout sélectionner

INSERT INTO table( champ1, champ2 )VALUES ( 1, 'truc' ) , ( 2, 'machin' ) , ( 3, 'bidule' )
essaie avec:
$values="";
			
            //construction dynamique de la requete
            for($i=1;$i<=$nb;$i++)
            {
              
			   $values .= "(".$id.",'".$_POST['champ'.$i]."'),";
            }            
            
            $sql="INSERT INTO chds_cours_horraire (ID,cours_date) VALUES ".$values; 
			
			$sql = substr($sql, 0, -1); //enleve la dernière virgule

avant d'exécuter affiche la requete générée et verifis qu'elle est conforme.

par dam-s » 28 déc. 2005, 15:25

je suis ok avce toi

le truc c'est que j'aie des champ dans mon formulaire c'est les champ date bon et chauqe champ correspond a une ligne dans la table chaque champ du formulaire est donc definie das la table par une ID une ID_date (autoincrementer) et cours_date, sa description (sa valeur)

tu voi ou pas

et dans mon formulair le nombre de c'est champ est aleatoire ...

par Cyrano » 28 déc. 2005, 15:16

Bon, utilisons le même langage si tu veux bien: Un champ correspond à une colonne dans la table: une ligne comprend donc un nombre de champ égal au nombre de colonnes de la table. Si ta table a 3 colonnes, alors tu ne peux pas envoyer 5 valeurs dans une requête d'insertion de cette manière.

Essaye de reformuler ta question parce que je ne comprends pas ce que tu veux faire en fin de compte.

par dam-s » 28 déc. 2005, 15:13

non 1 champ doit etre egal a uen ligne de la table

par Cyrano » 28 déc. 2005, 15:08

Alors l'erreur est dans le nom de la table utilisée:

Code : Tout sélectionner

INSERT INTO chds_cours_horraire VALUES (82,'','ghggh','ghghghg','hghghgh')
Cette table n'a que trois champs et tu envoies 5 valeurs.

par dam-s » 28 déc. 2005, 15:03

la structure de ma table est : dont l'ID est la meme que l'ID autoincrementer de la table chds_cours_desc

Code : Tout sélectionner

CREATE TABLE `chds_cours_horraire` ( `ID` tinyint(11) NOT NULL default '0', `ID_date` tinyint(11) NOT NULL auto_increment, `cours_date` varchar(44) NOT NULL default '0000-00-00', PRIMARY KEY (`ID_date`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
et (cette table contient les premier champ c'est a dire :le champ nom, nationnalité...)

Code : Tout sélectionner

CREATE TABLE `chds_cours_desc` ( `ID` tinyint(11) NOT NULL auto_increment, `nom_prof` varchar(50) NOT NULL default '', `nationnalite_prof` varchar(50) NOT NULL default '', `commentaire_prof` text NOT NULL, `DateFR` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=82 ;



docn ensuite ma premiere table :
chds_cours_desc:
ID => autoincrementer (exemple: 1)
nom_prof => jean paul
nationnalite_prog => belge
commentaire_prof => eh bien un commentaire
DateFR => fonction NOW()

chds_cours_horraire
ID | ID_date | cours_date |
1 | 1 | 12 janveir 2006|
1 | 2 | 15 janvier 2006 |
1 | 3 | 16 janvier 2006 |
2 | 4 | 25 mars 2006|
2 | 5 | 28 mai 2006|

voila comment serai la table apres ??
ca ta eclairer ????

par Cyrano » 28 déc. 2005, 14:47

Je ne comprends pas: peux-tu nous mettre la structure de la table et une série de données exemple ?

par dam-s » 28 déc. 2005, 14:45

en fait j'ai ma table
et je veux l'incrementer avec mes champs et c'est le nombre de champs qui sont aléatoire chaque ligne doit etre definie par : l'id qui et égal a l'autre id autoincrementer de la table chds_cours_desc
et le champs

donc j'aie des champs avec la meme ID mais pas la meme ID_date (qiu elle est autoincrementer...)

je pense qu'il faut une boucle mais je ne sais pas trop comment la gerer...

par Cyrano » 28 déc. 2005, 14:25

non, je ne vois pas: la structure d'une table de base de données n'est pas élastique... :-k

par dam-s » 28 déc. 2005, 14:23

ok mais le probleme c'est que le nombre de mes champ date est definier manuelement donc il est aléatoire ...

c'est 1 seule colene qui est remplie avec plusieur champs ...

tu vois ou pas ???

par Cyrano » 28 déc. 2005, 14:21

Comme dans ta requête d'insertion tu ne précises pas les champs dans lesquels doivent être insérées les données, toutes les colonnes seront utilisées par défaut. Le message indique qu'il n'y a pas le nombre de données correspondant au nombre de colonnes de la table.

Donc tu peux résoudre ce problème en précisant les champs à remplir :

Code : Tout sélectionner

INSERT INTO `table`(`champ_1`, `champ_2`, `champ_3`) VALUES('valeur_1', 'valeur_2', 'valeur_3');
Là, même si ta table a 25 colonnes, il n'y aura que ces trois valeurs d'insérées dans les champs indiqués;

Soit en ajustant le nombre de données au nombre de colonnes existantes.

par dam-s » 28 déc. 2005, 13:39

une autre erreur:

Code : Tout sélectionner

INSERT INTO chds_cours_horraire VALUES (82,'','ghggh','ghghghg','hghghgh')Column count doesn't match value count at row 1
dsl je suis chiant lol