Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/05/2011, 10h20   #1
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Par défaut [MySQL] Ajout champs générés dans BDD

Bonjour,

Je crée actuellement des formulaires de saisie qui alimente une base de donnée, mais je bloque sur l’insertion de champs générés.

Les champs sont générés à l’aide d’une fonction Javascript.
Pour se donner une idée de l'interface, l'utilisateur a la possibilité de saisir un champ et d'appuyer sur un bouton pour en ajouter d'autres.

Au niveau de l'affichage et de la saisie, pas de problème, je génère bien les champs avec un name et une value.

Je pensais créer une boucle While et grace à mysql_fetch_array(), ajouter la valeur de mes champs dans chaque row[]. Mais je n'y parviens pas

Voici le code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
//mes champs generes
if (isset($_POST['nbreLigneAct']))
		{
			for ($i=1;$i<$_POST['nbreLigneAct'];$i++)
			{ ?>
				<tr>
					<td class="action_soutien"><textarea rows='5' cols="25" name='ActAct<?php echo ($i+2);?>'><?php $nomAct="ActAct".($i+2); if(!empty($_POST[$nomAct])) echo $_POST[$nomAct]; ?></textarea></td>
					<td class="action_soutien"><textarea rows='5' cols="15" name='ActObj<?php echo ($i+2);?>'><?php $nomObj="ActObj".($i+2); if(!empty($_POST[$nomObj])) echo $_POST[$nomObj]; ?></textarea></td>
					<td class="action_soutien"><textarea rows='5' cols="15" name='ActPil<?php echo ($i+2);?>'><?php $nomPil="ActPil".($i+2); if(!empty($_POST[$nomPil])) echo $_POST[$nomPil]; ?></textarea></td>
				</tr>
			<?}
		}?>
<div id=saisiesAct></div>
<div align=center><input type=button value="+" onclick=AjouterAction()></div>
<input type="hidden" name="nbreLigneAct" value="<?if (isset($_POST['nbreLigneAct'])) echo $_POST['nbreLigneAct']; else echo "1";?>" id="NbreLigneAct" />
<input type="submit" name="BtdbEnvoyer" value="Enregistrer" />
 
<?		
//ajout des champs generes
$requete = mysql_query("SELECT * FROM action_has_tdb") or die("Erreur de requête<br>".mysql_error()); 
 
while ($row = mysql_fetch_array($requete)) 
{
	$result= mysql_query("
	INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`,`Pilote`)
	VALUES(' ','$row[$nomAct]', '$row[$nomObj]', '$row[$nomPil]'")
	or die(mysql_error());
}
?>
Si quelqu'un pourrait me mettre sur une bonne piste...

Merci d'avance
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 13h48   #2
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
C'est quoi le message d'erreur ?
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 15h07   #3
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Pas de message d'erreur, le problème étant que je n'insère rien dans ma base.

J'ai effectué une modif, j'ai remplacé mon While par le For que j'ai un peu plus haut.

C'est mieux, j'ai des insertions, malheureusement vide. Et cette fois-ci un message d'erreur comme quoi mes variables ne sont pas définies.

Code :
1
2
3
4
5
6
7
8
//ajout des champs generes
$requete = mysql_query("SELECT * FROM action_has_tdb") or die("Erreur de requête<br>".mysql_error()); 
for ($i=1;$i<$_POST['nbreLigneAct'];$i++)
{
	$result= mysql_query(" INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`,`Pilote)	VALUES('$dernierEnr','".$_POST['$nomAct']."', '".$_POST['$nomObj']."', '".$_POST['$nomAct']."', '".$_POST['$nomEch']."',
	'".$_POST['$nomAvan']."', '".$_POST['$nomComm']."')")
	or die(mysql_error());
}
Alors que quand je fais un Print_r($_POST), je vois bien la valeur des post
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 17h39   #4
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
En faite, il faut tester ta variable.
Code :
if(isset($_POST['xxx'])){...}
De plus, je crois qu'il s'agit d'un problème dans la variable dynamique présent dans l'index du poste. Je pense que tu voulais récupérer les données présent dans ActAct<?php echo ($i+2);?> => $_POST['ActAct"+$i+"'] ... Un truc comme ça, j'ai pas de grande visibilité sur ton code.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 11h49   #5
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Hello,


Citation:
Je pense que tu voulais récupérer les données présent dans ActAct<?php echo ($i+2);?> => $_POST['ActAct"+$i+"']

Exactement, je viens de reprendre et j'ai enfin le résultat voulu, j'ai plus qu'a mettre ça au propre.

Voici la syntaxe de la boucle :

Code :
1
2
3
4
5
6
7
8
for ($i=1;$i<$_POST['nbreLigneAct'];$i++)
		{	
 
			$result= mysql_query(" INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`,`Pilote`,`Echeance`,`PourcentAvancement`,`Commentaire`)
			VALUES('$dernierEnr','".$_POST['ActAct'.($i+1)]."', '".$_POST['ActObj'.($i+1)]."', '".$_POST['ActPil'.($i+1)]."',
			'".$_POST['ActEch'.($i+1)]."')")
			or die(mysql_error());
		}
J'espère que je ne fais pas fausse route en employant ce genre de solution, mais au moins, ça marche

Merci pour ta participation.
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 18h57   #6
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par Code85 Voir le message
Hello,





Exactement, je viens de reprendre et j'ai enfin le résultat voulu, j'ai plus qu'a mettre ça au propre.

Voici la syntaxe de la boucle :

Code :
1
2
3
4
5
6
7
8
for ($i=1;$i<$_POST['nbreLigneAct'];$i++)
		{	
 
			$result= mysql_query(" INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`,`Pilote`,`Echeance`,`PourcentAvancement`,`Commentaire`)
			VALUES('$dernierEnr','".$_POST['ActAct'.($i+1)]."', '".$_POST['ActObj'.($i+1)]."', '".$_POST['ActPil'.($i+1)]."',
			'".$_POST['ActEch'.($i+1)]."')")
			or die(mysql_error());
		}
J'espère que je ne fais pas fausse route en employant ce genre de solution, mais au moins, ça marche

Merci pour ta participation.
Oui c'est correcte dans le principe mais tu devrais mettre un poil plus de test.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h58.


 
 
 
 
Partenaires

Hébergement Web